本文是2012年7月发表在siggragh上面的一篇文章,翻译的不好请见谅
可塑树------交互式自适应植物树模型
首先看一幅图片: 导入一个树的3D模型,如图a所示。我们的系统可以自动地计算一个动态的模型,该模型能够根据环境的变化交互地作出反应,例如树木一起生长如图b。或者如图c-e当障碍物或阴影移向树的时候。
摘要:我们提出了一个动态树模型以及展示了复杂的树模型与环境之间交互的技术。我们的方法使用光分布的变化和……。只有在需要的时候,树的一部分才会变形,这样使得我们的方法比普通的算法比如Open L系统或者空间定值方法要快很多。输入一个基于骨架树的几何图形,该图形可以通过常见的树生产系统或者通过重建激光扫描的模型计算出来。我们的方法可以满足创造者之间与树交互并且产生可视化的令人信服的生态交互系统。我们提出了不同的交互类型,并且通过对比我们的转变与生物学上基于生长模拟技术来评估了我们的方法。
引言
植物树模型被用在很多应用领域,包括建筑学,城市模型,游戏和电影。但是,创建不同的树的图形仍然是一个具有挑战性的问题,因为树以复杂的方式与周围环境来做出反应。它们的形状是由它们内在的信息(个体植物的基因)和外部影响(环境)决定的。相同品种具有发达树冠的树,当生长在开放的空间时可能会有一个比较长的躯干,当生长在森林时仅仅有一个小的树冠。各种植物的形状可以被增长模型捕捉,但是这种生长模拟通常是耗费时间的并且需要大量的输入参数,这使得这种方法不适合交互式设计。许多不同的程序树建模技术已经发表,但是大部分生产的模型仍然是静态的。如果树不得不结合,或者如果环境变化,模型不得不适应手动的或者程序创建不得不重新运行。
我们提出了一个动态建模以及展示了这种技术,目的在于结合树的基因到我们的模型,允许它们对环境作出反应。在过去,这只可能通过增长模型比如open L系统或者太空定值算法来重新长出整个模型,这样导致有一个很长的计算时间。相比之下,我们使用一种接近生物动机的转换技术,并且还允许高效计算的动态行为,在一个场景中用户甚至可以与几十个复杂的模型进行交互。只有当我们假设这些模型对于其他的树或者障碍物没有影响的时候,我们的方法适用于各种类型的输入模型,它们被表示为多边形表面。我们已经成功的将我们的方法应用到由Open L系统产生的模型和通过Xfrog手动设计的模型以及激光扫描重建的模型。
对于给定的模型进行了分析,构建了一个骨架图以及定义了一组转换来修改这个图的结果当环境变化的时候。与Livny类似,我们用分布在树冠的大量的树叶来代表植物。在这些簇里面的小的树枝和树叶使用GPU创建,使我们产生必要的图形非常有效。灵感来自真实的树木,光分布的变化是影响我们模型的最重要的因素。确定了树的不同部分的照明,然后用来修改几何结构和树叶的程序内容。该方法可用于交互模式的生态系统,包括十几种不同的树木。图1是展示的一个例子。它已经通过程序创建好了,然后导入我们的系统。我们的树模型自动适应环境因素的变化,并且可以作为一个创建者允许树的参数在一个复杂的场景中迅速重构。因为大多数的几何模型可以通过图形硬件动态创建,模型也可以用于实时场景例如游戏或模拟器。
2.相关的工作
早期的植物模型是基于程序的方法,通过重复应用一小套规则进行复制的生长,由最初的结构到产生一个复杂的结果。最初,规则只是截取树的内部属性,比如分枝角度和节间长度,后来,更多的几何方面比如纹理和细致的枝条被添加进来,从而引进了多样化的生物发展模型。然而,在这些方法中,树的形状只是程序建模利用参数间接地控制。另一类方法包括用户辅助植物建模。这些方法中第一个使用复杂的参数建模创建了令人信服的树的模型是weber和Penn。Boudon介绍分解图作为多尺度表示植物结构帮助用户控制。Lintermann和deussen开发了XFrog建模技术,它结合了基于规则和过程建模,还允许创建动画模型。这里,一个模型的参数化关键帧的确定集是对于一个具体的时间创建动画的树木生长。但是,这不可能是模型动态的对环境作出的反应。
基于图像技术使用图像集合来产生树的模型。Reche-Matrinez 不得不仔细的注册他们的输入图像,并且从这些图集中创建3D树的形状,Neubert的方法是利用松散的排列图像。这里,主要的枝条是由用户决定的,静态模型的重建是利用粒子流动系统和一些植物试探法。Ijiri et al 和Zakaria 和shukuri 应用基于草图的方法通过程序化方法产生树,基于规则和基于图像技术的方法缩小区域。Chen et al使用一组生物学分枝规则启发从给定的2D草图推断树模型的3D结构。Deussen 和lintermann给出了各种技术的概述。
众所周知,在一棵树的发展过程中,环境起着重要的角色。环境本身的改变也可以用作控制程序化模型的一种方式。Arvo和kirk,greene和后来的benes和millan模拟了攀爬植物在支持结构和受光密度影响场景中的生长。关于计算树木光的各种方法已经被提出了,例如Rundick etal提出的快速但是简单的技术,从树冠来估计光,甚至有一个Soler提出的更高级的方法是基于辐射能量转移。
Hart 模拟了当一棵树的一部分接收力学压力时额外的木头的成品。Lam和king更进一步的提出了一种方法,基于树内部属性的相互作用的模型树的生长,并且考虑了水分布和化学流程。在环境影响下的基于GPU为中心的树建模方法由2009的benes提出。但是,他们的生长模型的表现能力仅仅适用少数的落叶树品种。
对于植物模拟最发达正式系统是L 系统。最初开展作为细胞发育的数学建模,L-系统扩展到可以模拟分枝结构,再后来,扩展到模拟植物发展的动画等多种方式以及交互建模。其中opengL系统最重要的扩展是考虑了植物与环境之间的反馈,这使得模拟光的竞争影响成为了可能。这种对环境资源的竞争进一步发展到使用太空定值算法主要通过环境中资源的分布来控制生长。最近,通过资源竞争起着重要作用的很多树的建模技术提出了,但是大部分技术依赖于生长模型,这使得它们对交互式设计不切实际。
3系统概述
环境的影响对于树的幼小部分通常是不明显的,由于这些部分没有足够的时间来开发。这也促使我们模拟环境的影响主要是在树干和主要的树枝。这种方法与livny提出的想法很类似,他也是通过利用主要的躯干之间……。在我们的方法中,我们输入的树的模型如果它生长在开放的空间,把它转换成基于图的表示方法和一组叶簇创建的。对比他们的工作,我们有一个完整的树模型,可以直接利用小树枝作为原型来填充,因此我们的方法是独立的树模型库和预定的内容。这种近似的表示方法对于和环境快速交互以及高效渲染树的模型并且保持它们视觉上的精确是很关键的。
一个树的形状是竞争资源的结果,最重要的因素是光。如果一个树靠近一个障碍物生长,它们的形状将会发生变化,比如发生弯曲或者脱落。这些影响通过我们的动态建模是可以模拟的。
我们模型的两部分对于环境的变化有不同的反应。根据光的分布,主要的树枝骨架是弯曲的或者修剪。当当地的光分布变化的时候,叶簇的程序内容也会改变。小的树枝和细枝弯向光,如果叶与障碍物交互可以被修剪掉。当树弯曲的时候,叶的形状也会变形,这也同时影响程序的内容。
这篇文章其余的内容组织如下。在下一个章节中,我们描述我们方法的必要的先决条件和输入模型的预处理。第五部分,概述了我们给予变换建模和交互作用以及它们的高效实现。在第6部分,评估了我们的方法,我们展示了大量的结果,通过与可以与环境交互的基于规则系统。
4.树的分析
每个树枝的反应和给定输入树的灵敏度是根据环境条件的变化是根据树的几何和拓扑信息来评估的。因此,我们假设它本来应该生长在孤立的空间中没有额外的障碍物。但是,计算外边的障碍物不存在,输入树的形状受自身阴影的影响。考虑到这种影响,我们首先要估计环境条件对树状的结构的影响,然后我们估计其固有的形态结构。我们使用这些属性来构建一个程序模型,该模型定义了每个分枝的行为。这种模型由一组环境参数控制,从而能够动态的根据环境的变化作出反应。
为了评估树枝的形态学的参数,例如它们渴望的方向和光不充分时的反应,我们首先需要评估影响输入树的环境条件。正如上面提到的,由于光分布是影响树生长最重要的因素,所以我们集中在光分布。对于我们的输入模型,我们假设光分布仅仅影响树本身:叶子和树干的投影影响下面的树枝。
在树的生长中树的阴影是会变化的,因为新的枝条和叶子会不断创建,老的相继死亡。为了估计树的生长参数,我们需要计算当前光照条件下在不同阶段的生长。这种光照条件会影响局部树枝的生长速率,因此可以删除它们。
4.1 计算枝龄
如果我们知道整个树的增长率,就可以评估树枝的年龄。每个树枝的增长率是节间在一个季度产生多少个树枝决定的。这种增长速率在不同的树之间是不同的,正如当它在生长的时候树枝接收资源的量也会影响。因此,计算树枝的年龄,我们需要估计节间长和每个树的个别树枝的增长速率。
节间li的长度是根据从最近的分支节点之间的距离分布估计的。我们使用节间长度的均值作为我们的估计值,然后使用均值漂移聚类方法发现最显著的峰值点的分布。为了估计给定树枝部分的增长速率vs,计算公式如下:
Vs = ds,l/dr-ds,r
Ds,l是给定部分到最远叶子的距离,ds,r是给定部分到树根的距离,dr是从树根到最远叶子节点的距离。计算的值说明了给定的一个生长慢的树枝跟生长快的树枝做对比不得不生长为了在同一时间到达叶节点。如果我们移动叶节点,那么这种相对生长速率的评估将失去准确性。因此,我们使用上面的评估仅仅是它们到叶节点的距离大于给定的阈值距离dt=0.2dr。对于其他的数字部分,我们从它们的父枝条模拟相对增长率。
当所有的树枝的相对增长率评估后,我们计算绝对增长率vs = vs/vmin,分母表示所以树枝部分的最小相对增长率。每个枝条的年龄ts通过下面的公式计算
Ts = ls/li vs+tsp
Ls枝条部分的长度,tsp是父枝条的年龄。每个树枝部分最后评估的年龄然后设定为最接近的小于它的整数,代表了这个季度被创建出来的树枝。
4.2 临时光照条件
一旦知道了树枝的年龄,我们就可以估计树生长的不同阶段的光照条件。单独模拟每个叶子的影响是不可行的。因此,我们通过虚拟的叶簇近似叶的分布。最初的簇是通过输入树的叶子产生的。簇在其他树上的投影是通过使用简化的光照模型,考虑了一天内典型的入射光。尽管对于植物存在高级的光照模型,我们使用简单的模型对于快速计算是合适的。为了计算在给定一个点P的光接收,我们利用一个半球代表天空来整合入射光,
I表示来自特定方向的光的多少,下面是对各个字母代表的含义。省略……
阴影通过使用每个连接的阴影投射器体积阴影被计算并且整合到场景中。阴影体积法
由于我们使用简单的几何形状作为障碍物,我们可以分析地评估光照模型。对于复杂的情况需要数字化的解决方法。
为了确定投影强度,叶簇的半透明rc和它们的半径rc接近。
Rc = rc0.
Rc0是一个叶簇半透明的基本单位。我们使用一个粗略的指定的近似值rc0 = 0.5,要知道不同种类的半透明度是不同的。
为了计算树在早期光照条件下的生活,如图2b所示我们让叶簇向根部集中。对于每次迭代,我们减少活动年龄阈值,删除那些超过阈值的结点。包含以删除结点的叶簇复制到现在叶子的结点上。每个簇的中心cn由结点的质心来决定的。新簇的半径rn是通过删除的一些叶簇的孩子结点的属性计算的,cp
公式。省略
4.3 逆向性运动
一旦在不同阶段的树的发展过程中的环境条件知道后,我们就可以计算环境对输入树形状的影响。第一个影响我们可以计算树生长的向性影响。向性是指树枝生长朝向或远离某些视图的趋势。一般来说,树的结构可以通过不同的向性产生影响,每个向性T被定义为一个向量t T公式表示,tT是向性的单位方向,wt是它的强度。
在这个过程中,我们集中在向光性和向地性。向光性是给定的树枝朝着光方向生长的趋势。我们在树枝利用上面描述的实时光照模型生长的时候评估每个树枝向性的影响。向地性控制树枝的弯曲度是远离重力还是朝向重力。尽管我们计算向性的强度直接来自于输入树,但是我们之后会给它附加一个参数可以让用户通过修改参数来控制树的变形行为。
向性的作用是让树枝(按照标准化方向生长)弯向一个新的方向h,h的计算方法如下
公式……
为了计算向性对输入树的影响,当它的环境改变的时候,我们首先应该找到向性影响的树的结构的时候创建它。由于我们的输入的树枝已经弯曲了,我们应该尝试找到当向性移除后树枝看起来是什么样的,我们提出这个问题作为计算逆向性。
计算逆向性意味着解决方程6中的d0,h是已知的,在输入树的时候定义树枝的方向。方程6中的h的实际长度是变化的因为它是通过不同的向量的线性组合计算出来的。因此我们不得不修改方程6通过引入一个线性的参数P
公式……
这个等式有一个几何解释(如图3所示)。参数P是下面二次方程的最大值。
公式9
如果公式9没有值,我们利用一阶导数来计算P的值,这样能确保离球体最近的直线上的点。把这个值带入公式8来计算向量d0.知道了输入树的每个树枝部分的方向,当环境发生变化的时候,我们就可以利用方程6来调整树枝的弯曲度。
4.4修剪评估
自然修剪影响大多数品种树的结构,因此它对于我们来说确定一个给定的树枝是否应该修剪至关重要。我们表达这部分是通过光照所收集的资源。请注意,我们不能捕捉修剪的。
根尖分生组织细胞在萌芽状态下根据他们吸收的光量来产生木材或植物器官。如果芽很长时间都在阴影中,将会降低它的活性。很长时间不能吸收光的树枝最终将会死亡。
我们使用的方法与2009年palubicki很类似,当比率小于特定的阈值被叫做修剪因素的时候,该树枝需要修剪。对于一个给定的树枝部分,它的收集的资源量是通过下面的公式计算
公式10
由于我们方法的输入是已经生长的树,它的树枝已经被修剪了,我们不能直接计算修剪因子。相反,我们计算每个阶段树生长的局部的修剪因子。局部修剪因子允许我们对给定的树枝不在落下的决定最小修剪因子。由于我们仅仅计算一个粗略的近似值,我们使用所有分布的50%作为我们的修剪因子参考值。每个修剪因子计算如下
公式11
5.动态交互
通过分析输入树的增长行为和修剪强度评估后,我们可以有效地模拟它与环境之间的交互。在交互过程中,我们首先计算在环境中的变化量;树的反应通过更新叶簇的形状和修改我们的程序化内容使主要树枝变形表达出来的。
5.1树图形的变换
变换应该表示出树在生长过程中的变化。
入射光的方向用作产生变换弯曲。一直循环到它的子分枝点。当一个分枝变换的时候,有必要更新他相关的可能会投影到年轻枝条的叶簇。
修剪变换的计算是等到所有给定年龄已经变换之后。当所有的枝条已经被变换后,我们计算年龄从0到t的所有枝条的资源收集量(看方程10)。所有枝条包括它们的孩子资源小于那个值的将会被修剪掉。
5.2 叶簇的建模
为了模拟一个簇对光的反应,我们首先计算每个簇吸收的光量。这个信息用作调整枝条的创建,比如每个枝条叶子的数量,它们的方向灯。正如Livny描述的,程序化的创建就是一个增加小树枝的重复的过程,从叶簇的最初的种子点搭配主要主要的躯干骨架。我们用参数表示这个过程所需要的集群密度。
入射光i与标准化的密度之间的关系,定义如下:
公式12
当一个叶簇与障碍物相碰时,它的交叉过程如图4所示。我们根据一帧一帧的原则来从新的集群来选择树枝。请注意,由于接近自然的填充,小的枝条有时会生长到壳的外边,这样导入进入障碍物的情景。我们对这种树枝不做修剪,因为我们发现这个影响是微不足道的,但是将来这应该加以补充。
如果这个物体不是固体,簇将不会交叉而是会覆盖或者分享空间。这种方式可以得到令人信服的树枝花冠接近树的模型。
当一个树枝弯曲或者修剪掉的时候,相关的叶簇就会更新。所有叶簇的位置将会更新,通过计算它们最初位置的所有节点的偏移量。然后这个偏移量被增加到群集的重心。
如果树图形的部分属于移除的簇,那么各自的种子点将会移除,填充叶的程序会更新,同时它的半透明度也会更新
公式13
如果叶簇的所有顶点删除了,那么叶簇本身也将会删除。
5.3 交互的类型
上面描述的变换运行3种类型,分别代表在建模中最常见的场景。树-障碍物的相互作用,树-树的相互作用,以及全局光的相互作用。
当一个树与障碍物靠近时树-障碍物的相互作用就会出现。这个障碍物就变成了环境的一部分通过产生阴影在树生长的的整个生命中。
当两个或者更多的树比较接近的时候,它们相互的阴影也影响它们的生长,树-树之间就引起了相互作用。为了更合适的模拟这种类型的相互作用,我们处理所有涉及到……。树枝是根据它们的年龄处理的。如果一个树的最大年龄高于它的竞争者,为了在结束的时候所有的树有相同的完成时间,我们改变了年轻树枝的处理时间。
全局光的相互作用表示场景中全局光的变化。当我们把场景从南半球移到北半球的时候或者场景的方向改变了可能会发生这种变化。这种变化是通过改变方程3的I的方向体现的。无论全局光什么情况下发生,我们需要重新计算所有树的变换。
在大多数场景中,上面的相互作用可能同时发生。例如,当我们把一个墙移动森林中,然后这个墙就改变了附近的树木,反过来这些树又会影响它们周围的树。
6.评估
由于在静态条件下,树的生长表现出大量的随机性,我们比较相关的模拟与改造的树木的树图。我们使用Ferraro的方法……。不同密度的两个树可以通过它们之间的距离作为编辑,加权最小的操作量将转换成其他图形。可能的编辑操作有i)结点的删除ii)结点的交叉iii)结点的改变。每个编辑操作的成本依赖特定的应用程序,我们的方法成本与树枝的厚度(与它的年龄相关)成比例。
如果把我们的模型与真实的树进行比较是不切实际的,因为很难准确的评估它们的环境条件。因此,我们使用palubicki提出的生长模型创建树。为了对比树,我们首先利用增长建模方法创建了孤立的树模型,使用它们作为我们的系统输入。我们创建了3种类型的向性不同的树。树1显示0.25的向光性和0.12的向地性,树2的向性是0.25,向地性0.44.树3显示0.03向光性和0.23的向地性。前两个树是相同的年龄,并且表现相同的修剪因子。最后一个树年龄老些,并且有一个比较小的修剪因子。我们对每个树的类型创建了3种树的集合:
设置O:使用增长模型创建的树,仅仅有光合自身的阴影影响生长,没有障碍物。
设置G:与O使用相同的增长参数,它是靠近 一个墙生长的。
设置T:与O使用相同的增长模型,使用我们的系统在与G相同条件下的形状积累。
4个不同的组,每个计算50个值。这个值代表每两个树之间的距离从上面描述的群集中,所有没有树是使用两次的。不同的分组是T-T,T-O,T-G和G-G。字母代表比较的树的组。
为了显示从T转换的树和从G增长模型的树的生长是没有区别的,我们对T-G和G-G进行了双侧T检验,并且设置阿尔法为0.05.为了表明T中树的变换与O中的树的不同的,在T-O,T-T之间进行了一个t检验。表1总结了得到的结果。
通过生长在没有限制与邻近一个墙的对比表明树的生长是完全不同的。另一方面,也表明了在相同的条件下使用我们的方法树变换和使用增长模型的适应树的增长是没有明显不同的。
而且,图5表明了增长模型和我们的变换的可视化的变化。生长在开放空间的模型导入我们的系统。然后,使用增长模型让它们生长在不同的光照条件下,使用我们的方法进行变换。
7实现与结果
我们的系统是利用c++语言通过opengl和GLSL实现的。这篇文章的所有例子是由台式电脑产生的,电脑的配置是英特尔i7的cup,3.7ghz以及16GB内存。大部分的渲染直接通过GPU完成。
我们树模型的视觉的表现大部分是通过它们主要的躯干的结构决定的,而不是通过精确的叶簇结构。因此,我们应该为树枝的厚度定义一个阈值决定给定的树枝是否需要渲染。所有高于阈值厚度的枝条被保存在树图形中,然而小的树枝将从树中移除并且转换成叶簇。大量树模型的实时交互,我们应用一套LOD技术。与livny的相似,产生的几何模型依靠簇的尺寸,光的情况以及LOD的阶段。如果树离摄像机比较远,那么仅仅有少量的树叶被产生,根据随机修剪缩放。我们用阿尔法覆盖来渲染树叶,这个层含有纹理,包含很多透明纹理元素。使用这种技术,在透明和不透明交界处的纹理像素会被进行多极取样(Multi-sample),达到抗锯齿的效果。
由于树木具有大量的自相似性,我们可以使用小实例的树枝的群集来近似叶簇。从输入模型的一个群集的树枝用作填充体积。这些修补被存储在一个纹理缓冲器GPU上,叶簇的主要的枝条结构和几何图形进行结合,完成一个完整的树图。
为了能够将转换应用到树图上,我们把主要的树枝存储到CPU内存上,它可以映射到GPU上的一个经常更新的顶点缓冲对象。骨架的几何形状用圆柱体表示。为了渲染更多的树的模型,我们在一帧一帧的基础上调整图形和网格。
表2说明了使用open L系统和我们的转换的时间消耗的对比。年龄在10,20,30的20个模型在opengl L系统中生长,逐渐生长成复杂的几何图形。记录生长的时间的平均值。另外三组20多个模型放在我们的系统并且记录它们的转换时间。要注意很重要的一点是模拟整个树的再生长,尽管这些变换仅仅在有影响的区域应用。一般来讲,我们的方法比它们要快两个数量级的速度。
7.1结果
在图6中第一个例子表明了一个墙投影到树上的环境影响。一个树模型在开发环境下生长与变换的模型作对比,并且每个结点的偏移量用颜色表示出来。正如所期待的,最大的变化是在树的顶端,因为误差是通过主骨架积累的。
图7表明了三个不同的品种柳树,凤凰木和红木对一个障碍物的反应。最初的树是利用luvny的方法通过LiDAR扫描重建的。树对弯向光合在靠近墙的时候脱落树枝和对影响的反应是相似的。图9表明了这种Xfrog模型的结果。
到目前为止,我们已经证明了欧洲和北美典型的树。更特别的树如图10所示。它们的图形结构没有侧面的树枝,对于主要的树枝它是一条线,另一个线经过每一个叶子,树叶不适合应用在这里。模型是使用xfrog产生的,它们对环境的反应是预期的一样。桐树与阴影相反的方向弯曲试图吸收更多的光。松树通常不会弯曲,仅仅对较低的缺乏光作出反应。正如期望的那样,我们的模型修剪低的树枝,在顶部保持一个完整的树枝结构。
如图8所示,一些不同的输入模型(open L系统,xfrog,LiDAR扫描),都伴随着一个视频。树受阴影以及靠近两边的墙的相互影响。树枝会填充可用的空间,正如它们在真正的生态环境中一样。
图11的例子说明了2个红木树的模型在xfrog中相互靠近。对资源的竞争让出现了单个的树冠,每个树的部分都导致如此。图13表明了一个嵌条移到一个森林中。尽管我们不能展示大场景的所有交互及变换,但是树的形状适应的令人信服,并且用户仍然能够与场景进行交互。
8结论
我们提出了一个对于复杂树模型的动态建模和交互方法。所有的多边形输入模型都可以转换成我们的表示方法。我们估计向性及其他环境的影响,比如输入模型的阴影。当模型创建后,它们会对障碍物和光的变化作出反应。一个高效的实现允许我们在一个特别复杂的场景进行操作。
然而,我们的方法,到目前为止,对于主要的骨架不能产生新的树枝:我们可以对给定的基本结构进行编写和操作。此外,由于我们不能假设主要的骨架的树枝最终会脱落,所以输入的树的模型是受到限制的,只能是孤立的树模型。如14的例子表明了一个LIDRAR 扫描并重建的树通过一些早期的创伤或者靠近障碍物生长已经严重的改变了。这个树表明了一个不自然的朝向障碍物的弯曲,通过变形有所减缓,但是仍然按着主要的生长方向发展。图14的结果似乎不是很自然。
我们在我们能够整合的影响中也受限,到目前为止我们包括的环境因素有光照,向性,但是没有风的效果和土壤中的营养变化。此外,通过对比真实世界中的树来说,这个系统已经很好了。
另外一个限制是我们的系统需要某些用户定义的参数,例如新增加的向性的树模型。到目前为止,对于程序化的内容我们还没有一个通用的基于GPU的建模过程。我们使用一个预先定义的参数,运行我们制作出许多枝叶类型,但并非是所有的物种库。