2008-10-06 44 views
6

我知道如何使用JOGL或LWJGL绘制基本对象来连接到OpenGL。我想要的是能够为树木生成某种几何形状的东西,类似于SpeedTree的出名。很显然,我不期望与SpeedTree具有相同的质量。使用Java和OpenGL绘制3D树的方法有哪些?

我想让树看起来不重复。速度不是问题,我不希望一次在屏幕上需要超过100棵树。

Java中是否提供免费的树形图库?或示例代码或演示? 我可以移植或学习其他语言的东西吗?

回答

2

有成千上万的方法。一个更好的问题会以更加狭窄的方式定义“最佳”。我们是否像绘画速度一样谈论“最佳”(适合成千上万棵树)?最好看最好看?等等

2

2D还是3D?
在2D中,常用的方法是使用L系统。
我也尝试了面向对象的方法,为树干,分支,树叶定义对象,所有对象都扩展了一个抽象类并实现了一个基因型接口(以改变树的种类)。
不确定它是否有效(创建的对象很多,特别是如果我为树设置动画效果),但有趣的做法。

0

如果您使用eclipse/SWT,请尝试绘制2D。

0

如果您认真考虑树立好看的快速树木,那么可以使用商业C++库SpeedTree。许多大型游戏都使用它(例如,GTA,上古卷轴)。

+0

SpeedTree是惊人的,但我计划一些软件,将免费和开源的(可能是GPL许可的),所以我需要要么找到一个免费的解决方案,要么自己做。 – Liam 2008-10-07 13:29:45

0

OpenSceneGraph和SpeedTree的组合已经为我工作。

0

我知道有两个库可以使用OpenGl和java。

LWJGL(轻量级Java游戏库),由于其简单性和与使用opengl与c/C++相似,因此imo更好。

JOGL如果你想将摆动组件与opengl混合使用,这可能是更好的选择,我从来没有使用它,但几年前,它被称为是非常麻烦,我不知道它是否成熟。

至于绘画树,有很多方法可以像其他海报说的那样做,你可能想要更具体。

编辑:我想我误解了一下这个问题,哦:/你可以加载一棵树的三维模型并显示它。

1

这里有一些资源可能会有所帮助:

  • gamedev thread on the subject - 包含了一些有用的意见/建议
  • ngPlant - 一个开放源码的程序植物生成工具。它不是用Java编写的,但是您可能能够在其算法中找到想法。