真实感森林的建模与可视化

来源:互联网 发布:知而行之 编辑:程序博客网 时间:2024/06/05 09:16

真实感森林的建模与可视化

Modeling and Visualizing a Real Forest

 

 

文章来源:IEEE Computer Graphics and Applications,大规模场景对象渲染技术系列文章(1)

 

Donald H.House,

Midori Kitagawa-DeLeon

Greg S.Schmidt,

Scott A. Arvin,

翻译:张嘉华

http://blog.csdn.net/javazjh

newzjh@126.com

翻译:梁成(女)

aliceliang@163.net

 

德克萨斯州A&M可视化实验室

华南理工大学计算机学院

 

 

介绍 (Introduction)

在德克萨斯州的A&M可视化实验室,我们最近和计算机科学家、心理学者、艺术家以及其他方面专家合作,共同创造了一个具有高度真实感、计算机生成的森林漫游。在美国农业部(USDA)的资助下,这项工作在亚利桑那州大学心理学实验室进行了实验。研究员希望测定在计算机生成可视化自然场景动画的现实程度,让人们得以了解虚拟环境和现实究竟有多少相似。这项计划将要比较项目在真实情况、图像带、图象漫游、和计算机模拟漫游下的效果。

1. 地点数据和信息
 (Site data and information)

亚利桑那州大学科学家调查了一个位于美国犹他州南部自然森林中的风景优美的山坡,并且使用了激光范围搜索设备和GPU技术以定位每一颗树。初始的地形高程数据来自一个ARC/INFO三角网格,我们将它转换为规则网格。这让我们易于应用纹理和位移图到最终的渲染。该地点可视化的区域约占18亩地,150英尺高程,包含1600颗树。我们得到树木的数据文件——每一颗树一行数据。对于每颗树,有位置、高度主干和遮盖直径、类型、针的比例和生长角度。

 

1:在该地点平面图的

成阶层的摄像机路径

 


 

2. 树木几何定义 (Tree geometry definition)

Bogas分枝对象生成和动画系统生成树木的几何结构。该系统由俄亥俄州大学Midori Kitagawa-DeLeon研发,Bogas作为整个成果的骨干,——它为所有的每一颗个体的树修改树木调查数据为realistic representative几何结构。Bogas使用参数化的算法过程去“生产”有机的分枝结构。为了在Bogas中发育一个分枝,你必须首先定义几何图元元素,它构成对象并且定义了这些元素间的拓扑和几何关系。一个定制的软件工具提供了地点调查数据和Bogas的界面。该软件转换树木调查参数——如树木高度、树干直径、遮蓬半径为一个适当的Bogas参数集,Bogas的输出按椭圆体和多边形定义了树木的几何结构。我们使用额外的定制软件转换这树木几何到Pixar动画工作室的Renderman4软件的RIB文件格式。

 

2:作为纹理形式

的个体树木

3. 场景生成过程
(Scene generation process)

为了生成场景,我们首先定义一个摄像机路径,然后渲染每一颗树,并且最终创建动画中每一帧单独的图象。我们设计摄像机路径以模拟一个人沿着连续的路径漫步,在每个预先定义的点停下来,转360度,并且继续沿着路径走。该路径打算模拟真实的森林漫步远足旅行。图1展示了一个带有树木、摄像机路径和旋转点的该地点的布谷图。结合从初始调查得到的树木大小的数据,我们使用Bogas为每一颗树创建几何结构。在该点上,我们为每颗树渲染一个二维图象以创建纹理映射代表在最终图象中远离摄像机摄像机的树(见图2)。对于最终动画中的每一帧,我们创建一个Renderman4RIB文件。该定制软件从Bogas综合每一颗树的几何结构,树木坐落于最初调查所得的位置,矩形网格来源于地形数据,摄像机路径信息定义每一帧。我们编写定制的Renderman shader为地面和树皮提供位移(displacement)和纹理图。针叶构成Engleman Spruce树叶,同样是由定制的位移(displacementshader生成的,它转换Bogas输出的简单的椭圆体的针叶为定人信服的针叶从,如图3

3 Needle closeup displacement map

4. Managing size and complexity

我们的生成过程,从初始化的地形和树木数据到渲染的每一帧,逻辑地创建了从数据到图象的管线。但是,许多其它实际问题需要解决,不仅仅我们需要解决的问题大小。首先,我们想通过强制(brute force)使用最大可能的计算能力能够快速地给我们结果。我们在德克萨斯州A&M超级计算中心的SGI Power Challenge机器,带有24个每转200MHZ的处理器。我们每个处理器有1G内存空间,4G磁盘空间用于渲染,在几何用户之间共享。即使在这样的大型机器,我们首次尝试创建RIB文件并且试图渲染它们均失败了。RIB文件和里面的模型太大,超过了RAM能够处理的能力,——换来的结果是虚拟内存交换使得渲染非常慢。一些图象根本没有渲染,导致机器在几小时后崩溃。其它图象花费了超过10小时用于渲染,并且RIB文件可能超过500M,最后,我们减少渲染时间到一个范围:从20分钟到2小时,RIB文件大小减少到以下范围:从50M120M。最终,我们通过小心处理潜在的复杂问题,在努力维持一个高度可见的真实感情况下,完成了渲染。

 


 

 

5. 细节层次技术(Level of detail)

我们首先尝试通过每帧减少递交给RIB文件的树木数量以减少复杂度。在三维图形学中,你通常传递整个模型给渲染器,并且让渲染器软件丢弃模型中对于当前摄像机位置不影响图象渲染的部分,此外,所有模型元素通常以全分辨率展现,渲染器必须检测多精细或多粗糙去抽样特定模型元素以得到渲染图象中的合适精度。但是,在我们的问题中,模型中的树木数量太大,每颗树都太复杂了,使得这种标准方法显得不切实际。取而代之,我们预处理模型,传递给RIB文件仅仅那些从当前摄像机位置影响最终图象的树木。图4展示了带有一个三角形高亮标识了摄像机位置和视锥的森林图例。截然不同的颜色代表不同的树木类型:处于视锥内和仅仅超出视锥范围的的树木(绿色),那些完全处于视锥外但它们的阴影可能重叠在视锥内的树木(黄色),其它被剔除的树木(红色)。所有的场景中的树木根据它们距离摄像机的距离被分类为nearmidfarvery far区域。我们使用上述的树木距离区域去决定在渲染树木时在RIB文件中使用那种细节层次(LOD),并且决定那种颜色和位移(displacement)细节。

4:根据观察视锥分类并剔除树木

 

   

 

5,一个渲染好的图象,展示了树木是如何从4个不同区域呈现。树木在标识为very far的区域中不以几何模型的形式包含在RIB文件中,取而代之的是,它们表现为一个具有透明度的面向摄像机的矩形多边形,带有不透明的树木二维纹理图在它之上(如图2)。这种技术通常被称为公告牌。我们完全建模剩下的树,但根据与摄像机的距离渲染它们(见表1)。在far区域中的树木通过仅仅实体颜色着色(solid color shader),没有针对树皮和针叶的位移(displacement)贴图。在near区域的树通过全部纹理和表现真实树皮针叶的位移(displacement)贴图渲染。对于中间区域的树,我们在纹理和位移贴图(displacement)之间插值,从全纹理到实体颜色(solid color),从全纹理和全位移贴图到没(none),根据它们距离摄像机的距离,这种插值方案避免动画中由于渐进漫游过程树木在区域间移动所产生的讨厌的可见效果。

5不同的细节层次

 


 

6. 实例化 (Instantiation)

根据视锥预处理模型被证实在处理过程中非常有用,但是在一些动画片段中,场景仍然太大和太复杂难以渲染。所以,我们引入实例化(instantiation)以减少截然不同的树木几何模型数量在一个RIB件中。我们在原始树木数据库中根据类别和高度对对1600颗树进行分类。类别包括幼树(baby tree)和成熟的树(mature tree)以及每颗树是否活的,将要死亡的还是已经死亡的。高度每两米区间为一组。我们小组为每一个类别和高度创建一个模型,结果剩下70种截然不同的几何模型。每个RIB文件包含仅仅特定场景需要的树木几何模型和那个模型应该放在地形中那个位置的信息。实例化方案让我们明显减少RIB文件大小,并且在漫游中以适当的帧速和时间渲染所有场景。但是,着技术确实有一个主要缺点——我们丢失了不同树木之间的差异性。例如,树木宽度和复杂度(叶子数量和枝干数量)变成了静态的。我们相信无经验的观察者不会注意到这些丢失的差异性。当观察作为森林中一个很大的整体时,并且带有针叶和其它添加的细节,那是几乎不可能存在一样的树木。

7. 照明和观察(Illumination and shadows)

当我们创建合适的几何结构、摄像机动作和表面细节后,我们关注森林中的照明以达到真实地在森林中徒步旅行的效果。我们建模天空作为一个蓝色的椭球体包围着森林。主要的关照来源于721日早上10:00时太阳位置所产生的平行光。一个很小的环境光模拟由于反射和大气漫反射引起的光线。最后,一个填充式的光总是处于摄像机位置,并且和观察方向一致的发射方向,提供一些额外的光线和背面光漫反射感觉。我们用Renderman depth-cue shader创建大气效果,它给予摄像机到反射面的距离混合背景色到来自表面的光线反射中。阴影的存在对于最终的动画表现是犹关重要的。图6展示了同样的场景带有三种不同层次阴影渲染的效果。图6a展示了没有阴影的场景,森林显得非常静态,并且不真实——显然是计算机生成的。在图6b,我们看到同样的树带有通过包含仅仅树皮和枝干在阴影计算中的“telephone pole”阴影。我们使用阴影层次在我们的首次尝试渲染全部动画。最终,在图6c,我们看到场景带有全部阴影渲染——包含树叶canopy效果。在创建遮蔽的大区域和象征森林的太阳,消耗了50%更多的渲染时间去包含恰当的telephone pole阴影;从这到全阴影增加了额外的20%渲染时间。但是,可见的真实感带来的冲击是非常重要的以致于我们决定包含全阴影在最终的动画版本中。

7:各种阴影渲染的森林对比

 


 

8成果 (Production)

那是很难去预测一个场景动画的效果直到它被渲染和以视频帧速回放。整个序列,包含7200帧,包含7360度回转和7个直线截取。对于动作,为了快速得到一个效果,我们开始每30帧渲染以保证所有的东西合理渲染,我们通过从一帧到下一帧的分解把这些帧放到带上,以观察动作和时间。在成果的鼓励下,我们填充丢失的帧并且以每秒10帧渲染并产生动画。沿着直线路径上截取每一帧,看起来对了,但是需要在360度转弯处更细化。所以我们在转弯处以7.5FPS帧速渲染。不幸运的是,这并没有带来好的效果,由于转弯处会带来令人昏乱(dizzying)效果。为了抵消这种效果,我们渲染转弯处以一系列摄像机位置静止,大约每帧之间30度旋转的10多帧,分解转弯处360度的两帧之间为30度旋转的12帧。这带来了转弯处急速勒马(saccades)的效果。最终,我们解决勒许多在产生森林漫游动画中遇到的困难的问题,并且最终产生了如图7所见的完整动画。我们在NTSC BetaCam 录像带渲染并记录了整个4分钟动画。同时,我们在准备7个动画片段和7次转弯动画的MPEG版本。

 

7:最终的效果

 

9. 结语 (Conclusion)

这项目需要许多工具和技术去解决高度复杂的真实感需求带来的问题。这项目教会我们在自然场景工作中分层次细节层次建模和渲染。我们将会提供地表纹理质量,这可能是我们图象中最缺乏真实感的地方。一个可能的方法将会是使用过程着色(procedural shader)代替位移贴图和纹理映射。令一个方面的改进是包含各种各样的树木颜色表现死亡的树木和森林地表残骸,并且建模环境效果,如基于森林密度的树木形状改变。如果让我们重新再做这个项目,我们会考虑编写一个专门的渲染器,为我们的问题和需求优化,以提高渲染时间。我们得到的最好的称赞将会是我们真实森林场景的工作得到一个研究员花费可观的时间关注,他所看到的图象和动画,截取了森林的灵魂和气息,带给他真实的沉浸感。

鸣谢 (Acknowledgments)

参考文献 (References)

1.        D.H. House et al., “Visualizing the Midway Face of the Dixie National Forest,” Proc Siggraph 97 Visual Technical Sketches,ACM Press, New York, 1997, p. 207.

2.        M. Kitagawa-DeLeon, “Branching Object Generation and Animation System with Cubic Hermite Interpolation,” J.Vis. and Computer Animation, 1994, Vol. 2, pp. 60–67.

3.        M. Kitagawa-DeLeon, “Rendering the Midway Face Forest, Towards High Realism in Environmental Visualizations,”Proc. Resource Tech. 94, American Soc. of Photogrammetry and Remote Sensing, Bethesda, Md., 1994, Vol. 1, p. 231.

4.        S. Upstill, The RenderMan Companion: A Programmer’s Guide to Realistic Computer Graphics, Addison-Wesley,Reading, Mass., 1990