使用Java和OpenGL绘制3D树的方法有哪些
What ways are there of drawing 3D trees using Java and OpenGL?
我知道如何使用JOGL或LWJGL绘制基本对象以连接到OpenGL。我想要的是可以为树生成某种几何体的东西,类似于SpeedTree的著名之处。很明显,我不希望有和SpeedTree一样的质量。
我希望这些树看起来不重复。速度不是问题,我不希望一次在屏幕上需要超过100棵树。
Java中有免费的树状图库吗?或者示例代码或演示?还有其他语言的东西我可以移植或学习吗?
http://arbaro.sourceforge.net/
http://www.propro.ru/go/Wshop/povtree/povtree.html
非java:http://www.aust-manufaktur.de/austt.html
有成千上万的方法。一个更好的问题将以一种更为有限的方式定义"最佳"。我们说的是"最好的"绘画速度(适用于成千上万或数百万棵树)吗?最好看的还是最好的?等等
2D还是3D
在2D中,一种常见的方法是使用L系统
我还尝试了一种OO方法,为主干、分支、叶子定义对象,所有这些都扩展了一个抽象类并实现了Genotype接口(以改变树的类型)
不确定它是否有效(创建了很多对象,特别是当我为树设置动画时),但做起来很有趣。
以下是一些可能有用的资源:
- 关于这个主题的gamedev线程-包含一些有用的建议
- ngPlant-一个开源的程序植物生成工具。它不是用Java编写的,但你可以在它的算法中找到想法
如果您正在使用eclipse/SWT,请尝试Draw 2D。
如果你真的想得到好看、快速的树,有一个商业C++库SpeedTree。许多大型游戏都使用它(例如,侠盗猎车手、上古卷轴)。
OpenSceneGraph和SpeedTree的组合对我很有用。
我知道有两个库可以在java中使用OpenGl。
LWJGL(Light Weight Java Gaming Library,轻量级Java游戏库),imo是一个更好的库,因为它的简单性和它与使用opengl和c/c++的相似性。
JOGL如果你想将摆动组件与opengl混合使用,这可能是更好的选择,我从未使用过它,但几年前,它被认为是非常有缺陷的,我不知道从那时起它是否成熟了。
至于画树,有很多方法可以做到,就像另一张海报所说的那样,你可能想更具体一点。
编辑:我想我有点误解了这个问题,哦,好吧:/你可以加载一个树的三维模型并显示它。
http://www.codeplex.com/LTrees有一些源代码。不过它是c++。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 处理3D数组的边缘和角案例的方法
- 查找 3D 点的两个交集的最佳方法::矢量
- 3D 迷宫递归方法 - C++
- 一种在没有光线投射的情况下在 3D 中使用寻路和多目标的方法
- 在 3D 景观中模拟球的运动.最简单的方法
- 使用形状参数时,如何灵活地使用可以处理 2D 和 3D 形状的方法参数
- 绘制大量三角形/高度图的更快方法(直接3D,C++)
- 推广C++代码的有效方法(从2D计算到3D计算)
- 寻找一种处理 3D 矢量的最快方法,它们的点积,交叉积
- 使用OpenGL和Qt构建3d编辑器,我使用哪些方法/shell
- 在3D场景中存储模型位置的好方法是什么?
- 使用Java和OpenGL绘制3D树的方法有哪些