在Blender中使用java库

时间:2013-08-07 08:02:30

标签: java python blender

我正在研究用Java编写的小型3D引擎。 Java主要用于可移植性(桌面和android)和可用的库。 Blender提供设计级别的工具。

我希望使用相同的java库来导出和加载自定义数据。

如何混合Blender,Python和Java?

我想过BlenderJava和Jython,但这是非常实验性的。

由于

PS:有人已经将execnet与Blender一起使用了吗?

2 个答案:

答案 0 :(得分:1)

Blender + Java:

好吧,如果您正在谈论创建场景然后加载.blend文件,那不是一个好方法。您可能希望将级别/字符/等导出为其他内容。我之前使用过openGL和java。我建议导出为collada(.dae文件)。 Collada文件是基于xml的(易于使用DOM或SAX解析)并且不带任何gl无法使用的额外的blender数据。 Collada文件支持动画帧,骨骼结构,光源,材质,纹理,颜色,法线和顶点。同样,由于它们是基于XML的文件,因此可以使用文本编辑器轻松打开它们并研究文件类型。由于java在其库中已经有XML解析器,因此该文件类型易于使用和读取。它几乎可以立即转储到BufferObject或立即渲染模式。

Fbx是另一种支持blender所有元素的文件类型。这种类型的问题是它具有二进制和文本格式。结构稍有不同,因此很难找到描述二进制文件格式的资源。同样,它是受版权保护的文件类型。

Obj文件是最容易阅读和使用的。但是,它们将纹理/材料数据存储在单独的外部文件中。同样,他们也不支持动画。因此,由于许多原因,它们是一个糟糕的选择。但是,如果您有静态对象(框或无生命树),则此文件类型可能适合您。

正如我前面提到的,很难直接混合blender和java而没有双方都容易阅读的文件类型,.blend文件不易被java读取。

Java + Python:

这有点棘手。我认为Jython是一个很好的起点。 Python可以类似于脚本使用,至少在与引擎一起使用时。您如何选择实施它完全取决于您。

就个人而言,我发现使用预先制作的java命令可以更轻松地创建一个游戏控制台。我有简单的文本文件,可以调用命令到控制台来编写脚本。脚本可以定义诸如ai移动和资源加载之类的东西。

我很难找到一个强大的理由将类似脚本的引擎(你可能在python中编写代码)合并到游戏引擎中。我承认这不是我已经合作过的发动机开发领域。无论如何,我都失败了,它只会调用java类的命令(或方法)。也许有人可以为我们两个人在游戏引擎中阐明python的更强用途。

最后,我建议使用javaScript over python。使用Python是因为它受欢迎,因为大多数引擎都是用C ++或C#编写的。与java不同,这些语言没有脚本“小兄弟”。如果您打算将其作为一个真正的Java引擎,那么使用JS作为您选择的脚本语言要容易得多,因为使用它的库已经与JDK打包在一起。

希望这会有所帮助。

答案 1 :(得分:0)

那么,我得到的是你想要构建和读取自己的文件类型?也许基于XML?唯一将自己的库合并到blender中的是通过python。我知道人们已经为blender(包括动画导出器)构建了python扩展和插件。

人们通常只使用自己的文件类型,使用自己的工具(例如,如果你创建了像blender这样的程序)。因为,有人喜欢使用不同的3D建模软件,他们将无法使用您的引擎。理想情况下,工具和渲染引擎彼此独立运行。 Blender可以导出几种标准文件类型,提供更大的灵活性。

我不会创建一个库来导出自定义文件类型,除非您也创建自定义工具。它只会鼓励其他人使用不同的引擎,而不是你的。

顺便说一下,这个问题属于stackexchange而不是stackoverflow。