可漫游虚拟场景中的三维树木建模
陈华光,王京文,张晓清
(湖南工程学院计算机科学与技术系,湖南湘潭411104) 摘 要:树在虚拟场景中的构成中占有很重要的地位.论文跟据不同虚拟场景中绘制三维树木的特点,介绍了贴图法画树;提出了用分形方法对三维树木进行真实绘制;并讨论了加速虚拟场景中三维树木绘制的技术.实践证明:在VC和OpenGL的环境下,用本文方法在可漫游虚拟场景中产生树模型,在实时
性与真实感方面均取得了不错的效果.关键词:虚拟场景;贴图法;分形;树建模中图分类号:TP391.9 文献标识码:A 文章编号:1671-119X(2008)02-0068-04
于生成速度快,用于可漫游的虚拟场景中;而分形
0 引 言
树是自然界最常见的景观之一,其种类繁多,长势千姿百态,结构特征性很强,具有复杂的三维结构.树木的三维建模已成为计算机图形学一个重要的应用研究领域[1],广泛应用于虚拟现实、教学、娱乐、游戏、影视场景的规划等领域.
自20世纪60年代开始,人们从不同角度构建数学模型来力求模拟更真实的树木形态.大量学者对此进行了深入的研究:1968年AristidLinden2mayer提出了基于文法、侧重于植物拓扑结构的L-系统[2],并与Prusinkiewicz将其用于树木及其他
树,它的真实感较强,但生成速度较慢,主要用于静
态虚拟场景中.1.1 仿真树
仿真树是利用一系列多边形进行拼装形成树冠及树干,树冠部分用多边形贴上茂密树冠的纹理图片,树干用多边形部分贴树干纹理图片,从而构造出如图1(a)所示的仿真树.1.2 贴图法画树
所谓贴图法画树就是在一个平面上贴一个树木的图像,并对图像进行透明处理,保留有树枝和树叶的部分,而对树木以外的其他图像进行透明处理.这样在场景中的一个三维平面上只显示树木图像.贴图法画树的原理很简单,位图文件分别存储RBGA4个颜色分量.其中第4个分量ALPHA值表示材质像素的透明度,该值越大,透明度越小,该值取0,全透明.在用位图贴纹理之前,必须对位图文件进行处理,一是将位图的长和宽调整为2的整数次幂,为了便于编程读取数据,通常设为256,另外就是将位图透明的地方用某一种单调的颜色填充.
图像经过加工之后,就可以在OpenGL编程环境中进行透明和贴图处理.如果仅用一个平面贴图来绘制一棵树,则必须根据人的视线方向实时调整树平面与视线之间的关系,保证贴图平面垂直于视
植物的造型;随后,有学者对L-系统作出改进、拓展,提出了允许与环境因素交互的开放的L-系统-OpenGL系统[3];1983年Reeves提出了注重于
模拟花、草、树整体环境的粒子系统[4];1995年We2ber等人提出了树木的分步生长模拟方法[5].
1 虚拟场景中的树建模
在三维虚拟环境中构造树木的要求是绘制速度快和有一定的真实感.目前在三维虚拟环境中构造的树木和花草等植物多采用以下几种形式:仿真树、贴图法画树、分形树等.其中仿真树、贴图法画树由
收稿日期:2007-10-23
基金项目:湖南省教育厅科研资助项目(07C216)
作者简介:陈华光(1961-),男,硕士,副教授,研究方向:计算机图形学,虚拟现实.
第2期 陈华光等:可漫游虚拟场景中的三维树木建筑线方向,如图1(b)所示.这样做虽然减少了所需贴图的数量,但又额外增加了计算量,当场景复杂时,要考虑到每一棵树与视线的相对位置,从算法上来说也是比较复杂的.解决这个问题的方法是使用十字交叉贴图法画树,在场景中用两个交叉90°的平面贴图法画树,这种方法可以不调整法线就获得良好的视觉效果,其示意图如图1(c)所示.在场景中绘制三维树时,只需知道树的坐标位置就可以用该方法完成树的可视化绘制.
γ2sinγ0cos
γcosγ0・sin0
0
169
α0cos0
1
αsin0
(1)
α02sinαcos
根据旋转矩阵和计算所得的分枝点位置,就可以对已有分枝的三维信息,用glTranslate()和gl2Rotated()函数进行平移和旋转操作.
2)用圆台生成树枝
图1 树的简单绘制
为了增加三维树模型的立体感,在绘制时树干和分枝都是以圆台为基本单位,圆台高,顶、底半径
和分枝角等属性的确定需要考虑下述因素:
(1)枝长初始长度length:即树干高度;(2)枝粗初始宽度width:即树干底半径;
(3)枝长衰减系数length-scale:新生树枝与当前树枝的长度比;
(4)枝粗衰减系数width-scale:新生树枝与当前树枝的底半径比;
(5)顶底半径差new-width:圆台的顶、底截面半径差;
(6)递归控制层数Level:三维树的分枝深度,表现在程序中即算法的递归次数.
圆台属性确定后,可用OpenGL实用库中的圆台绘制函数gluCylider()绘制,并进行纹理贴图.由于树的结构形态不同,根据不同结构形态的树,可以对其基本参数的个数作必要的调整,以便为形态控制提供方便.2.2 算法描述
(1)准备树干纹理,设置绘制树木的参数,将坐标移到绘制点;
(2)由初始点开始画树干,对树干进行纹理贴图,count=0;
(3)用函数glTranslate()平移坐标到当前分枝点,用函数glPushMatrix()将当前分枝点入栈两次;
(4)ifcount=Level,则转到第7步;
(5)用gluCylider()函数进行当前分枝的绘制,
2 用分形方法实现三维树的真实感建模
2.1 三维树木建模
任意一棵树木都是由若干树枝和树叶组成的,每一条树枝又是由若干分枝组成.因此分枝和树叶是树木最基本的组成单位.树木的分枝模式,可归结为两大类[6]:①合轴分枝:顶芽死亡,由侧芽取代之,形成强的侧枝,没有明显的主干,整个植物呈冠状张开;②单轴分枝:顶芽不断生成,形成明显的主干,整个植物形成了挺拔向上的树形.
分形方法是根据植物的形态结构,利用了描述具有自相似性的数学功能来表现植物生长的拓扑及形态结构.本文采用迭代函数系统(IteratedFunc2tionSystem,IFS)实现分形树的几何建模;以合轴分枝的三叉树(图2所示)为例建立树木三维模型.
1)树干位置的确定
设树干的方向为Z轴方向,首先,每个分枝在绘制时都以三维坐标原点为起点,每次绘制都要把坐标原点平移到当前分枝点,然后分枝偏转的三个自由度表示如下α,表示当前树枝与父树枝的夹角,β表示当前树枝与父树干(Z方向)的夹角,γ表示当前树枝绕父树枝的旋转夹角如图3所示.
分枝方向由上述三个角度唯一确定,放置矩阵可由公式(1)计算[7]
β0sinβcos
V=VβVγVα=
010・
β0-sinβcos
70 湖南工程学院学报 2008年
是在需要三维实时漫游的系统中,使用显示列表的功能,对绘制速度有一定的改善.
存点法的基本思想是:首先计算构成场景中点的模型视图坐标、纹理坐标、基本面的法线坐标,然后将这些点存入内存,最后是直接绘制点到显示设备上.所以在实现漫游中的重绘时,就不需要重新计算点的模型视图坐标,纹理坐标,基本面的法线坐标,极大的提高了绘制的速度.
并对分枝进行纹理贴图,绘制顺序flag指定当前绘制是左、右或后枝,flag=1绘制左枝;flag=2,用gl2PushMatrix()函数弹出分枝点,绘制右枝;flag=3,用glPushMatrix()函数弹出分枝点,绘制后枝;
(6)count=++,选择下级分枝点为当前分枝点,转回第3步继续绘制;
(7)绘制结束.2.3 模型的随机性
三维情况下,可以通过基本参数的调整生成不同的树木形态.通过在分树的长度,偏离树干的角度,树枝粗衰减及当前树枝粗细半径等方面添加随机抖动,可以增加树图形的真实感,同时也可以对基本参数分别进行随机性控制.
4 结果分析本文用VC和OpenGL编程生成虚拟场景,在静态虚拟场景中用分形法进行树木的绘制,实时性与真实感方面都取得了较好的效果.在可漫游虚拟场景中,用贴图法画树为主,适当加入小量的分形树.对用上述方法生成的三维真实感树木的虚拟场景进行漫游测试,结果表明:在可漫游虚拟场景中生成三维树,在实时性与真实感方面都取得了较好的效果.在配置为PentiumD2.8GHz的CPU、DDRⅡ1G内存及7300GT(256M)显卡的PC机上进行虚拟漫游,平均速度可达31帧/秒.其漫游效果图如图5所示.
3 提高绘制速度的方法
3.1 采用层次细节(LOD)绘制
在虚拟场景中,当树木离视点较远时,树木的枝干树叶将会变得模糊不可见.按照LOD理论,当一个物体距离视点越远,此物体能够被观察到的精细部分就越少.这种情况下,树木细节的绘制是一种浪费.因此,很多基于视点的多分辨率树木模型的实现都是通过设置不同的迭代数量来加快绘制的速度.此外,还有一种方法是将树木用一个平面从主干中心轴线分开,此平面与视点到模型的方向矢量垂直,在视点和平面中的树木是用户能观察到的部分,这个部分是用精细模型绘制,而平面另一侧的树木则采用精度最小的模型.
图5 漫游场景中树的效果
图4 树的LOD绘制
5 结束语
本文对虚拟场景中树木的绘制进行了探讨.在
可漫游的虚拟场景中树木的绘制,可用贴图法画树为主;在静态虚拟场景中,可采用分形树为基础,与随机函数相结合,对树木模型进行了一些改进使生成树木的形态更加逼真;在绘制时采用多个复杂度的树木模型,根据不同的距离选择不同的模型,从而加快了渲染的速度.
如何改进模型,加入更多影响树木形态的参数,
3.2 采用显示列表和存点法
本文用VisualC++和OpenGL作为开发环境,在此开发环境下进行虚拟场景构造,实现三维真实感实体树的绘制.在OpenGL中,显示列表是由一组预先存储起来的留待以后调用的OpenGL函数语句组成的,当调用显示列表时就以此执行表中所列出的函数语句.存储在显示列表中的操作被预先编译,在每次调用时就只需调用而无需计算.尤其
第2期 陈华光等:可漫游虚拟场景中的三维树木建筑例如光照、树木的自重等,使树木的逼真度提高;如何使树木在风的作用下摇曳,都是值得进一步研究的课题.
参 考 文 献
[1] 王永皎,莫国良.植物的三维建模研究进展[J].计算机
71
GraphicsProceedings,AnnualConferenceSeries,1996:397-410.
[4] ReevesWT.ApproximateandProbabilisticAlgo2
rithmsfourShadingandRenderingStructuredParticleSystems[J].SIGGRAPH,1985,19(3):313-322.
[5] WeberJ,PennJ.CreationandRenderingofRealistic
Trees[J].SIGGRAPH,1995:119-127.
[6] 王 琰,张 鑫.虚拟场景三维自然景观的分形模拟[J].
应用研究,2005(11):1-4.
[2] LindenmayerA.MathematicalModelsforCellularIn2
teractioninDevelopment,FilamentswithOne-sidedInputs[J].JournalofTheoreticalBiology,1968,18(1):280-289.
[3] RadomirM,etal.VisualModelsofPlantsInteracting
withTheirEnvironment[C].LosAngeles:Computer
沈阳工学院学报,2000,21(3):6-10.
[7] 康孟珍,DeReffyeP.胡包钢,等.快速构造植物几何结
构的子结构算法[J].中国图形图像学报,2004,9(3):
79-86.
TheModelingof3DTreeinRoamingVirtualScene
CHENHua2guang,WANGJing2wen,ZHANGXiao2qing
(Dept.ofComputerScience,HunanInstituteofEngineering,Xiangtan411104,China)
Abstract:Treesplayanimportantroleinthevirtualscenerylandscape.Thetexturemappingoftree2imageisintroducedandthemethodofdrawing3Dtreebasedonfractalispresented.Thetechniqueofspeedingupdrawing3Dtreeinvirtualsceneisalsodiscussedaccordingtothedemandofdrawing3Dtreeindifferentvirtualscene.ExperimentalresultsshowthatwiththetoolsOpenGLandVC,themodelingoftreeinroa2mingvirtualscenedemonstratessatisfactoryeffectsinreal2timeandthirddimension.Keywords:virtualscene;texturemapping;fractal;modelingoftree
(上接第63页)
BackupandRecoveryConfigureBasedonOracle10gRMAN
DUANLian,ZHANGJian2gang,FANLiang2zhi
(WuhanUniversityofScienceandTechnotogy,Wuhan430073,China)
Abstract:ThispaperintroducesthebackupandrecoverydatabasebyusingtheOracle10gDBAtool2RMAN.Thegeneralstructure,thebasicprinciplesandtheconfigurationapproachofRMANaregiven.ByusingRMAN,thebackupschemaisimplementedandtherecoverystrategyisexecuted.Keywords:Oracle10g;RMAN;backapandrecovery
因篇幅问题不能全部显示,请点此查看更多更全内容