如何以程序方式(创建)实时(L系统)种植艺术(2D)树?


20

最近,我编写了一个L系统模块,这使我进一步感兴趣。我也是植物大战僵尸迷,真的很喜欢智慧树的概念。很想创造类似的程序艺术,只是为了娱乐和了解更多。

问题:我应该如何动态地创建艺术树(可能是使用固定摄像机/透视图的2d树)?

理想情况下,我想从一种植物(只有带有叶的茎)开始,并通过对其结构的某种影响(输入/用户操作)动态地使其生长。这些影响可能导致不同类型的分支,分支曲线,其传播,果实的位置,花朵的颜色等。希望它确实充满生命/精神。:)

植物大战僵尸:智慧之树 动态地生长一棵相似的树会很棒,但是会产生更多的变化和动画。

我的背景:程序员,很少使用游戏引擎(Ogre3d,cocos2d,Unity)。尚未真正真正使用openGL进行直接编程,试图解决此问题:)。

我已经准备好花大量的时间,请告诉我有关API的信息?像您这样的专家将如何处理这个问题?

为什么是2D?我认为仅考虑二维即可解决问题。

艺术灵感:

只有树木,有果实和叶子,底部没有灌木

大的树(可见树枝,绿叶,花朵,果实等),在左边,后面的猴子。

PixelJunk的Eden(艺术风格的灵感)。

分形过程式生成的苹果树

如果您很容易理解这个问题,请告诉我,我可能会进一步详细说明。

我希望对各种方法的讨论对每个人都有帮助。你们真棒。


2
我可能没有答案,但是我绝对想知道这是怎么回事。很棒的概念!
Bloodyaugust

很好的问题,我对L系统感兴趣了一段时间,但对此没有做任何事情:)
路德(Luther)


1
@Stephen只是让你知道这个问题是从2011年得到了用户提出的问题编辑出necro'd顶端Student/Student/Programmer
PeterT

@lalan请仅对问题进行实质性的编辑,而您不再是学生这一事实也就不是实质性的更改,也不是进行修改的理由。
MichaelHouse

Answers:



8

有关“游戏”的一些想法:

  • 首先提示用户输入他的树的名称。使用该名称为算法生成种子。因此,每个名称都将具有唯一的树。种子也可能影响树木的叶子和果实的类型。
  • 您可以实现某种“树他妈哥池 ”,其中树越长越好,用户越在乎它(施肥,浇水等)。
  • 创建最高树的高分列表。另一个想法是在树旁边显示其他用户的身高和名字。因此,您可以直接将树高与其他用户进行比较。观看此视频作为示例。云指示其他用户已完成的高度。

那里有很多用于生成过程树的算法和论文(该线程可能很有趣)。一个困难的任务是很好地融合分支。在这方面2D肯定会更容易,因为您可以使用alpha混合解决它。

由于您对Ogre3D,Unitiy和cocos2d很有经验,因此您可以直接实现该东西(无需立即开始学习OpenGL IMHO)。我个人会选择cocos2d并为iPad和/或iPhone发布,这样每个人都可以随身携带他的树。


1
我希望通过该游戏以社交/竞争的方式与L系统一起玩。
deft_code 2011年

1
感谢您将我指向gamedev线程。不错的主意,他妈哥池和塔楼移动应用程序真的很酷。找到了一个3DS Max插件视频-这是一个很棒的链接 ..
lal 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.