【发布时间】:2012-05-10 10:44:19
【问题描述】:
我正在开发一款 3D 游戏,现在我必须将每个对象放入代码中。那么有没有办法让编辑器在 Java OpenGL 中放置对象?
最好把整个世界(有点大)做成一个大网格,还是另一种方式更好?
【问题讨论】:
-
您使用的是什么 3D 引擎/OpenGL 工具包?
我正在开发一款 3D 游戏,现在我必须将每个对象放入代码中。那么有没有办法让编辑器在 Java OpenGL 中放置对象?
最好把整个世界(有点大)做成一个大网格,还是另一种方式更好?
【问题讨论】:
那么有没有办法让编辑器在 Java OpenGL 中放置对象?
OpenGL 中没有对象。困惑?
OpenGL 只是绘制东西,它被操作系统赋予了某种“画布”,你可以告诉它根据你的需要绘制点、线和三角形。
与场景或管理对象相关的任何事情都是您的负担,或者是附加工具包的负担。
我正在开发一款 3D 游戏,现在我必须将每个对象放入代码中。
想一想:与其硬编码数据,不如从文件中读取数据并使用文件内容构建场景,然后使用 OpenGL 进行绘制。这与阅读文本文件和向用户打印文本没什么不同。原理相同,只是数据类型不同。
有很多 3D 建模师。一个优秀的开源软件是Blender。将模型和/或场景导出为您可以读取的某种文件格式(通过实现现有格式,或发明自己的格式并编写导出器)并使用您的代码进行渲染。
【讨论】:
当然可以用 java 和 openGL 制作关卡编辑器,但这通常是一个相当大的项目。
也许将对象加载到游戏中的最简单方法是制作一个 XML 文件(或其他类型的数据文件),其中包含与游戏世界中的对象相关的位置、方向、网格、纹理和任何其他数据并手动编辑它,但如果您有很多对象要放置,这可能会很乏味。然后可以在运行时读取它,并且您的场景将能够渲染这些对象。稍后,如果您选择制作一个关卡编辑器,则可以使用此文件格式。
至于你问题的第二部分,这取决于。然而,将整个世界变成一个网格很少是一个好主意。如果您的世界由许多网格组成,那么剔除会变得更容易,因为您可以从渲染调用中删除整个对象,而不是剔除单个顶点。
【讨论】: