[图形学]3D树的建模方法

在游戏设计、电影和城市规划领域,3D树的建模在虚拟场景中占了很重要的角色。所以如何快速建立真实的3D树就是一个很重要的的课题。关于3D树的建立存在很多经典的方法,典型的方法是利用L-system建模,参数化方法容易操作的复杂的参数,这些方法擅长描述植物特性不同的物种。对于快速3D树的建模,主要是通过结构模拟机制从草图或者图像构建树,除此之外,还有点云建树,虽然有那么多种建树的方法,其实每个方法的核心都是提取树的骨架

下面给出我尝试过的两种方法:图一为分形树(使用L-system),图二为草图建树。

          

                                图一                                                                                        图二

  

得到树的骨架的方法很多而且每种方法都不太相同,所以这里主要介绍通用的3D树的建模方法,对每种提取骨架的方法不进行细致讨论。

1.枝干表示

对于一棵树,枝干是其主要的组成部分,我们在计算机中表示一棵树的枝干是有很多方式的。

最为简单的方法:我们用一个圆柱或者一个多棱柱来模拟一节枝干,这也是大多数使用的方法。


对于点云树的话就要根据实际的树干截面进行拼接了。

若是建树的过程中并不知晓竖切面的轮廓,我们就需要利用上面简单的方法,指定一个枝干半径,从而绘制枝干。

但是要知道自然界中枝干和其子枝干是不一样粗的,所以我们要知道枝干和子枝干半径的对应关系。

对应关系如下:


a是一个系数,ri是子分支的半径,r是父分支的半径。

2.生成子枝干

如果一种方法只能提取树的主枝干的骨架,如草图建树。那么我们要人工的给这个骨架生成多个分支骨架,从而才能得到整棵树的骨架。主要使用的方法是:利用植物的自相似性进行子枝干的生成,如下图:


我们定义枝干η = {Sγ; γ = 1, 2, .. . , k}

我们在η中选择一个点Sm,把从S1到Sm作为一个子枝干,通过旋转平移添加到η中,从而实现了分支的拓展。

3.树叶建模

 为了提升一棵树的真实感,合理的树叶是必然的。我们平时观察的树叶都是一个复杂的曲面,但是如果我们直接去对树叶建立一  个曲面(树的叶子可是繁多的),渲染如此多的树叶必然很影响效率的,而且叶子很小,效果也不见得有好,这性价比显然是很  低的。 所以我们常用的方法是使用一种带alpha值的纹理图表示树叶。

 希望本文介绍的方法可以对感兴趣的小伙伴们有所帮助。




猜你喜欢

转载自blog.csdn.net/qq_31804159/article/details/80498452