使用带有Blend的java库

2024-05-13 05:33:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个用Java编写的小型3D引擎。Java主要用于可移植性(桌面和android)以及可用的库。Blender提供设计水平的工具。在

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

如何混合Blender、Python和Java?在

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

谢谢

注:有没有人已经在搅拌机中使用了execnet?在


Tags: 工具引擎水平jythonjava实验性桌面android
2条回答

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

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

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

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

搅拌机+Java:

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

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

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

正如我前面提到的,如果没有一个双方都容易阅读的文件类型,很难直接将blender和java混合在一起。在

Java+Python:

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

就我个人而言,我发现用预先生成的java命令创建游戏机更容易。我有一些简单的文本文件,可以调用控制台的命令来编写脚本。这些脚本可以定义诸如ai移动和资源加载之类的东西。在

我很难找到一组强有力的理由来将类似脚本的引擎(很可能是用python编写的代码)集成到游戏引擎中。我承认这并不是我在发动机开发方面做过很多工作。我觉得不管怎样,它都只是调用java类的命令(或方法)。也许有人可以为我们俩澄清python在游戏引擎中更强大的用途。在

最后,我推荐javaScript而不是python。Python是因为它的流行性而使用的,因为大多数引擎都是用C++或C语言编码的。与java不同,这些语言没有脚本“小兄弟”。如果您打算让它成为一个真正的java引擎,那么使用JS作为您选择的脚本语言会更加容易,因为使用它的库已经与JDK打包在一起了。在

希望这对你有帮助。在

相关问题 更多 >