APP下载

基于SpeedTree工具的三维真实感树木建模研究*

2015-03-14夏红梅张欣景胡训强

舰船电子工程 2015年1期
关键词:小树枝光照面板

夏红梅 张欣景 胡训强

(海军陆战学院模拟训练中心 广州 510430)



基于SpeedTree工具的三维真实感树木建模研究*

夏红梅 张欣景 胡训强

(海军陆战学院模拟训练中心 广州 510430)

论文对SpeedTree建模软件进行了研究,分析了软件的基本构成、主要技术特性和树木建模的具体方法。依据建模原理,对树木整体骨架、主干、分枝、叶片等属性进行编辑设置,同时加入LOD、光照和风力效果,最后将创建好的树木模型加入到三维地形中,结果表明,创建的树木模型具有真实度高、动感效果好、操作简便的特点。

SpeedTree; 树; 构成; 特性

Class Number TP391.9

1 引言

众所周知,树木是自然环境中重要的组成部分,对树木等植物的模拟也一直是计算机图形学的研究热点[1],并广泛应用各领域中,无论是教育教学,还是工业、农业或是电影游戏,树木的虚拟表现都具有重要作用[2]。SpeedTree是一款专门的三维树木建模软件,不仅树木模型真实感较高,而且支持大片树木的快速建立和渲染,同时提供了丰富的树木模型库和软件开发接口。该软件是由美国IDV公司研发制作的,不仅可以通过插件将树木导入到其他的三维建模软件中使用,也可以为游戏引擎提供强大的树库支持[3],目前已经广泛应用于游戏、动画、军事仿真、景观设计等方面。

2 软件构成

SpeedTree实际上是一个工具集,主要包括SpeedTreeCAD、SpeedTreeMax、SpeedTreeRT[4]等。

SpeedTreeCAD专门用来创建、修改单棵树木效果的工具。生成的文件直接用于SpeedTreeRT在程序中加载,或者用于SpeedTreeMax。

SpeedTreeMax是与3Ds Max整合的一组插件(与Maya有一套相似的整合插件),主要用来创建一大片森林的效果,可以结合地形起伏来创建符合真实效果的森林。

SpeedTreeRT是SpeedTree的C++运行库。其主要实现的功能包括:每棵树的实时阴影、自动LOD切换、每棵树随风摇摆的效果。

2011年SpeedTree更新到6,并根据所面对的不同用户群体将软件分为了三个版本,其中包括面向游戏产业的SpeedTree for games、面向电影业的SpeedTree Modeler Cinem和面向建筑工程行业的SpeedTree architectural。目前,SpeedTree的最新版本为7.0。

3 软件特性

1) 树的基本渲染

在SpeedTree中将所有的植物模型保存在.spt文件中,其结构[4]如图1所示。

图1 树的结构

一棵树分三部分绘制:树干和大树枝(branches),小树枝(fronds),树叶(leaves)。

branches:使用模型来绘制;

fronds:使用两个十字交叉的面模拟小树枝,为了节省三角形;

leaves:使用billboard(布告板)方式绘制,这样就能产生视觉效果比较好的叶子了。

它这样划分是出于以下三方面的考虑:这几部分的渲染状态不一样,动画的状态不一样,做LOD的时候也不一样。

2) 树的阴影系统

SpeedTree中将阴影分成三部分计算,首先是树木在地面上的阴影,直接使用shadow map计算出来树木的阴影。其次是self-shadow(自阴影),这一部分是难度比较大的地方,是通过预计算出来,然后将其保存到一张shadow map中。最后是其他物体投影到自身上的阴影,这一部分难度最大,一部分分别处理,对于树叶和支干是取其中心点坐标,将其变换到投影物体的光照坐标系中,获得投影物体的shadow map投影面的uv坐标,检查shadow map指定位置的亮度信息作为自身的光照值。而对于主干的mesh,则需要将所有的顶点变换到投影物体的光照坐标系中,计算顶点在shadow map的uv坐标,另开一个pass或添加一个纹理单元使用投影物体的shadow map渲染。

3) 树的光照

SpeedTree中对树木的光照分为三部分进行处理:对于主干部分使用的是per-pixel lighting(单个像素光照)。支干部分由于是两个四方形面片,因此计算光照时使用面法线,这样一个四方形总是一个面为亮面另一个为暗面。而对于树叶是根据树叶的位置来确定光照值,根据树种的不同使用多种光照模型来确定光照,最简单的一种是通过阳光的方向获得一个和其垂直的通过树木中心点的水平轴线,将树叶分成两部分,一部分渲染为带光照,一部分渲染为不带光照。

4) 树的动画

树的三部分的动画状态都是不一样的。风小的时候或者树离视点比较远的时候,只动树叶。

树叶的动画:通过一个billboard的来回平移以及它本身绕视坐标系统Z轴的转动。

树枝的动画:通过它的引擎本身计算出来的矩阵进行动画。

5) LOD的特点

这里的LOD分三方面:顶点的LOD,纹理的LOD,动画的LOD。

· 顶点的LOD:首先是针对树,树干的建立,它是采用贝塞尔曲线来描述整个面片的,贝塞尔曲线的描述方式无疑给即时高效率的LOD计算提供了可行性。同时还针对树枝,远了之后,小树枝就不渲染了。到了一定的距离的时候,整棵树就变成一个billboard了。

· 纹理的LOD:树干上在最高精度的时候会有三套纹理:基本纹理,光照贴图,法线贴图。随着LOD的进行,可以依次减去法线贴图,光照贴图,最后是本身贴图,最后只为树干渲染一种颜色。

· 动画的LOD:有三种动画,大树枝(模型)的动画,小树枝(两个交叉面)的动画,以及树叶的动画。随着LOD的进行,依次去掉大树枝的动画,小树枝的动画,最后是树叶的动画。

4 建模方法

树木的建模使用的是SpeedTreeCAD进行树木几何参数建模。

SpeedtreeCAD主要以编辑参数为基本原理。软件启动后,显示自带的一个树木初始模型,通过调整树木几何形态参数来改变树的外形。主要包括对主干、树枝、树叶的参数化调整。另外还有LOD、材质、光照设置。用户通过参数面板提供的参数接口调整树木的几何形态结构和纹理特性。一般使用比较多的是对树主干、树枝、树叶的调整。

首先,根据各种树木的形态特征,在Global属性页面确定树木的基本骨架,然后编辑树干、分枝和叶片等属性,最后编辑LOD、风力和光照,其流程图如图2所示。

1) 创建树的基本骨架

在Global属性页面可对整棵树的基本形态和运动属性进行编辑,比如树的形状、编辑范围、相对地平面高度、树叶的稠密程度等,其参数设置如图3所示。

图2 树木建模流程图

图3 树木整体参数面板

2) 树干参数的设置

“Trunk”属性面板主要用来设置树干的长度、宽度、弯曲度、分枝长势等。Start angle控制树干相对于地面的生长方式。Flexibility决定树干的弯曲性,并沿着树干长势而分布,其参数面板如图4所示。

图4 树干参数面板

图5 树枝参数面板

3) 大树枝(分枝)参数的设置

Branches属性可设置树木的分枝,“Level”参数显示目前当前树木有多少分枝,哪个分枝处在编辑状态。“Generation”控制当前主树干生长出多少个树枝及长出点。“Shape Definition”所有属性通过调节曲线形式而实现,用来控制分枝的长度、稠密度、弯曲性以及新枝相对于母枝(或上一级分枝)的生长角度,其参数设置如图5所示。

4) 小树枝(叶状体)参数的设置

该节点用途多变,是由支节点转变而来,代表了一种形状类似棕橺叶那样具备中轴枝条,周围呈片状展开的几何模型,最常见的用法是作为小树枝使用[5]。

Fronds属性用来设置小树枝,其面板如图6所示,“Generation”参数用来控制小树枝的位置和使用方法。

5) 树叶参数的设置

Leaves属性用来设置树叶的大小,类型和分布情况。其面板如图7所示,其中,“Generation”参数用来控制树叶的数量和位置、“Placement”控制树叶的分布和稠密度、“Texture Maps”指定树叶的纹理贴图。

图6 小树枝参数面板

图7 树叶参数面板

6) 树的行为参数设置

此部分主要是指树模型的LOD、风力效果和光照效果参数的设置。

LOD属性面板用来控制LOD的初始化和SpeedTree的自动LOD系统的行为。可分别设置树叶和布告板、大树枝以及小树枝的LOD属性。在LOD优化方面,图8说明了在极远处的树木,我们只需要两个多边形加上雾化就足够真实了,而随着距离的拉近,SpeedTree动态将树木的多边形数量调整到了1126个,最大程度上达到了性能和视觉效果的平衡。

在Wind属性页中只需定义树木哪些部分(树叶、分枝)受到风的影响以及树叶的摇摆和声音参数,SpeedTree就可以让树木实时生成绝对逼真的摆动效果。

图8 LOD示意图

在Lighting属性页中可分别设置大树枝、小树枝和叶子的光照方式,光照方式可设为动态光照或者静态光照。光照方式设置好后通过计算即可看到光照效果。

按照上面的树木建模步骤,笔者建立了几种树木模型,并将之应用于建好的地形中[6~9],在Vega Prime里调整环境风参数[10],树木模型能够以摇摆的方式做出逼真的反应,调整视点远近,能观察到树木模型能够按设定的LOD变化,距离越远,树模型的面数越少,距离越近,树模型细节越多,其效果图9所示。

图9 树模型效果图

5 结语

SpeedTree是一款强大的三维树木建模软件,建立的模型真实度比较高,能够清晰的表示树木的基本形态。运用LOD属性,能够在优化性能的同时模拟逼真的视觉效果;运用风力属性,能够真实模拟树木随风摇摆效果;运用光照属性可以产生明暗及颜色上的变化,能够模拟光源生成阴影效果。该软件操作简便,兼容性好,应用广泛。

[1] 金小进,马尧海.三维树木的真实感模拟[J].计算机工程与设计,2010,31(8):1753-1756.

[2] 杨立新,田贞.园林树木稠李SpeedtreeCAD虚拟建模技术研究[J].沈阳农业大学学报(社会科学版),2010,12(6):738-741.

[3] 赵常寿,张鹏,吴红权.Vega Prime之SpeedTree模块程序设计[J].电脑编程与技巧维护,2013(13):74-76.

[4] 美国IDV公司.SpeedTreeCAD V4.1 User_Reference[Z].

[5] 李虹珊,常一孜.三维建模软件SpeedTree中树木的基本构造[J].现代电影技术,2013(7):33-36.

[6] 赵月,王建华.基于MFC的VegaPrime场景漫游驱动框架设计[J].电子设计工程,2013(1):31-34.

[7] 余洋,傅忠谦.基于VegaPrime的多通道视景仿真技术[J].电子技术,2012(2):70-73.

[8] 杨勇,殷宏,宋晓江.基于Vega Prime/Creator的三维环境仿真系统开发[J].计算机与信息技术,2009(5):30-31.

[9] 张静,杨麦顺,刘萍芬.基于Vega的视景仿真应用系统研究与研究[J].微电子学与计算机,2008(2):93-96.

[10] Presagis USA Inc. Vega_Prime_Parametric_Culture_Tutorial,Version 5.0[Z]. February 2011.

Modeling of Realistic 3D Tree Based on SpeedTree

XIA Hongmei ZHANG Xinjing HU Xunqiang

(Training Simulation Center, Naval Marine Academy, Guangzhou 510430)

In this paper, the SpeedTree modeling software is studied, and the basic structure, technical features and trees modeling methods of the software are analyzed. Based on the modeling principle, the overall frame, trunk, branch and leaf of trees are edited, simultaneously, the LOD, illumination, wind effect are joined. Finally the created tree model is added to the 3D terrain. The results show that created trees model has high fidelity, dynamic, easy-to-operate features.

speed tree, tree, composition, feature

2014年7月3日,

2014年8月15日

夏红梅,女,硕士,研究方向:系统建模与仿真、作战模拟等。

TP391.9

10.3969/j.issn1672-9730.2015.01.026

猜你喜欢

小树枝光照面板
节能环保 光照万家(公益宣传)
当幻想的光照进童心世界
石材家具台面板划分方法
树和斧子
隐蔽的力量
老橡树的选择
MasterCAM在面板类零件造型及加工中的应用
树和斧子
Photoshop CC图库面板的正确打开方法
面板厂商向大尺寸转移2015年LCD电视面板增长目标仅为3%