靳文忠-建筑表现中的关键技术及研究(6月5日版)

1970-01-01 08:00

北方工业大学学位论文

(b)冬日白雪中的南大北大楼

图1-1 同一建筑物在一年中的视觉效果变化

资料来源:http://www.nju.org.cn

其次,从时间上来讲,建筑表现要表现建筑在不同时间段的视觉效果。例如在一年中,春天的沙尘暴、夏日的磅薄大雨、深秋的雾色朦胧、隆冬的白雪皑皑,都将使同一建筑物表现出不同的视觉效果(参见图1-1);在一天之中,黎明、中午、黄昏、夜晚等不同的时间段里,由于日光条件的变化,建筑物也将有不同的色彩特征(参见图1-2)。

(a)一幢写字楼白天的视觉效果

2

北方工业大学学位论文

(a)一幢写字楼夜晚的视觉效果

图1-2 同一建筑物在一天中的视觉效果变化

资料来源:《水晶石图库》光盘

最后,由于建筑设计,尤其现代建筑设计,其内涵并不局限于空间范畴,还包括三维空间之外的声场音响效果、光照条件、能源利用、材料质感等范畴,以及与周边环境的协调等问题,因此建筑表现也应该包括这些方面的内容。

1.3建筑表现的目的和意义

休·费里斯(Hugh Feriss)在1929年出版的《Britanica百科全书》中写道,渲染表现有六个目的:传达对适当结构的认识;帮助建筑师透析出其思想中的观念;对存在的建筑之伟大进行诠释;对城市规划的批评与指导作用;帮助发展新型建筑;以及加强建筑对人类价值的心理影响[2]。

建筑表现的意义在于,通过建筑表现,可以把建筑师的的设计意图明确清晰地表现出来,与用户或施工者进行沟通。建筑表现图也是建筑艺术的一部分。通过建立三维实体模型,可以帮助建筑师分析自己产品的最终效果。使用计算机三维动画作为表现的媒介,建筑表现可以使得人们在建筑被构造出来之前,按照预先定义好的路径,步移景异地观察建筑物。应用虚拟现实的建筑表现则不仅使得人们可以在三维视觉空间中体验虚拟建筑的外观造型,更可以在不同的时间范围内,甚至时空范畴之外去预先体验建筑的整体效果。

3

北方工业大学学位论文

1.4建筑表现的媒介工具

从建筑表现的媒介工具的技术发展轨迹来看,建筑表现的方法可以分为一维的语言文字、二维的图纸系统、三维实体模型、四维(时间和空间)的动画,以及多通道的虚拟现实技术(有关虚拟现实在建筑表现中的应用将在1.5节论述)。

1.4.1一维语言文字

我们最熟悉的用文字媒介工具对建筑空间再现的例子,来源于初中语文第二册的课文《雄伟的人们大会堂》。该课文纯粹用语言文字向人们“表现”了人民大会堂的宏大规模和雄伟气势。

在天安门右前方,巍然耸立着一座雄伟壮丽的大厦,这就是人民大会堂。全国各族人民的代表在这里共商国策。

庄严的人民大会堂,是首都最宏伟的建筑之一,建筑面积达171 800平方米,体积有1 596 900立方米。一条黄绿相间的琉璃屋檐,把巍峨的大会堂的轮廓从蔚蓝的天空中勾画出来。那壮丽的柱廊,淡雅的色调,以及四周层次繁多的建筑立面,组成了一幅庄严绚丽的画图。

我们在建筑师的陪同下,从天安门广场往西走,参观人民大会堂。老远就看见镶嵌在正门顶上的国徽的闪闪金光。踏上一层楼高的花岗石大台阶,迎面是12根浅灰色的大理石门柱。门柱有25米高,柱身要4个人才能合抱过来。柱距采用我国柱廊的传统样式,明间宽,紧邻的两个次间较窄,再往两旁,各4个次间又较窄。这样高大而有力的柱廊,是建筑师们吸收了中外古今门柱造型的优点创造出来的。

迈进金黄色大铜门,穿过宽阔的风门厅和衣帽厅,就到了大会堂建筑的枢纽部分——中央大厅。建筑师站在这里,指着四周向我们介绍了整个建筑的布局:朝西直入万人大礼堂;往北通宴会厅;向南穿过长长的廊道,是全国人民代表大会常务委员会的办公大楼。整个建筑就是由这三部分组成的。

万人大礼堂,里面宽76米,深60米,中部高33米,体积达86000立方米,像一座大厦。但是由于设计师们处理得巧妙,走进大礼堂的人放眼一望,从屋顶到地面,上下浑然一体,并不感到怎样空旷。屋顶是穹窿形的,天花板上纵横密排着近500个灯孔。灯光齐明的时候,就像满天星斗。顶部的中心挂着红宝石般的五星灯,灯的周围是70条瑰丽的光芒线和40瓣镏金的向日葵花瓣,象征着全国各族人民万众一心,紧密团结在中国共产党的周围。在它的外围,有三环层次分明的水波形暗灯槽,同周围装贴的淡青色塑料板相映,形成“水天一色”的奇观。

4

北方工业大学学位论文

大礼堂椭圆形,有两层挑台像两弯新月,围拱着主席台,使大礼堂成为层次分明错落有致的整体。两层挑台连地面共3层座席,有9600多个席位。礼堂的主席台象个小会场,能容纳300多人。礼堂底层席位的桌柜都装有能同时翻译12种语言的译意风,每4个席位还有一个即席发言的扩音器。第一层挑台的第一排同样装有扩音器,其余席位都有能听到一种语言的扩音小喇叭。屋顶和挑台下的灯光,能够把礼堂的各个角落照得通明。

[3]

用语言文字来表现建筑,显著的优点是可以直接地向读者传达建筑设计师的设计意图,揭示建筑设计的内在涵义和功能特征,如例文中“全国各族人民的代表在这里共商国策”,“象征着全国各族人民万众一心,紧密团结在中国共产党的周围”等等。但由于语言文字自身的模糊性,用语言文字作为媒介工具来表现建筑也是不精确的,显然不能作为建筑施工者的指导标准。另外由于语言的抽象性,读者需要动用自己的想象力,才能在脑海中形成建筑的“效果图”。

1.4.2二维图纸系统

图1-3某建筑图纸

资料来源:http://www.ccdn.cn

二维图纸系统是以纸为载体的建筑表现工具。用于表现建筑的是平面图、立面图、剖面图、透视图等这些专业表达语言(参见图1-3)。二维图纸系统类似于一个照相机,把完整的建筑形象以抽象的方式从某一个假想的视点位置截取出来,成为一套相互参照自成一体的建筑表现系统。与一维的语言文字系统相比,二维图纸系统则更加抽象——使用只有专业人员才能读懂的符号。但二维图纸具备精确性,可以用于建筑施工图,而且可以作为具备法律效力的建筑文档。

1.4.3三维实体模型

三维实体模型是指为展示、试验或者观测等用途,根据建筑的形状和结构,使用木材、塑料等材料按照一定比例制成的立体建筑模型(参见图1-4)。这使得建筑师可以将设计产品作为一个整体加以检验,从而在进一步深入之前,估计出可能的困难和开销。三维实体模型系统的优点在于允许用户在三维空间中

5

北方工业大学学位论文

以自然地方式直接地观察建筑对象,但最大的缺点在于尺寸、规模和材料细节等各方面的诸多限制。

(a)日本平等院凤凰堂模型(1/75),高240毫米,长700毫米。

(b)木制日本银行模型,高120毫米,长1400毫米

图1-4 三维实体建筑模型

资料来源:http://www.chinahobby.com

1.4.4四维动画

传统的建筑表现媒介工具均未超出为静态三维空间的范畴。但建筑本身所固有地诸多本质性的东西,并不局限于三维的空间之中。例如,中国的苏州园林从某种意义上讲还具有时间中的本质特性,因为其空间中的特性不是在一个固定的视点可以领略殆尽的,而需要随观赏路径的延伸而层层展开。因此传统的表现媒介工具在表现建筑的时间特性方面,似乎显得无能为力,这倒使得计算机动画在建筑表现领域有了大显身手之处。

与前述的语言文字、图纸、模型等表现媒介相比,动画突破了三维空间的限制,使得观察者可以动态地在虚拟建筑场景中以预先定义好的路径进行漫游,这样观察者可以更全面地理解和评判建筑设计。

但由于其自身的局限性,动画应用在建筑表现领域也并非完美无缺。动画需要预先定义漫游路径,这使得观察者不能随自己意愿漫游建筑,这是动画作为建筑表现媒介工具的一个重要缺点[4]。另外,动画制作的过程相当复杂,制作成本高,周期长,通常在专业的动画制作公司完成,这使得以动画作为建筑表现媒介工具时只能适用于时间较短的简单演示[5]。最后,动画不具有交互性,不易于与建筑设计过程融为一体。

需求推动技术的发展。各种建筑表现媒介工具的局限性,促使人们寻求更加能够揭示建筑表现内在涵义的媒介工具。虚拟现实技术的出现,正好适应了人们对建筑表现媒介工具的要求。

6

摘要

建筑表现要以一定的中介系统或表现媒介来向人们展示建筑及其设计的内容、特征及涵义,传达设计意向,更是与建筑设计过程交互作用不可分割的的一个手段。从建筑表现媒介工具的技术发展轨迹来看,建筑表现的方法可以分为一维的语言文字、二维的图纸系统、三维实体模型、四维的动画,以及多通道的虚拟现实技术。虚拟现实作为表现工具是它在建筑领域的主要用途。当前,限制虚拟现实技术在建筑表现领域大规模普及应用的一个重要原因是虚拟场景建模效率的低下。不同建模环境之间的数据交换有利于建模环境之间优势互补、数据共享以及提高建模效率。绿化是建筑表现的一个重要内容。尽管雪景是世界上很多地区最常见的自然场景之一,但关于雪景实时表现的研究工作还有待于进一步扩展。

本文第一章从建筑表现的基本概念和理论出发,循着建筑表现媒介工具的历史发展轨迹,论述了建筑表现媒介工具的最终发展——虚拟现实技术在建筑表现中的应用。

第二章介绍了计算机三维建筑模型的文件格式和数据组织方法,重点介绍了OpenFlight文件格式和3D Studio MAX的插件开发方法,并实现了二者之间的数据交换。

第三章从快速建模理论出发,提出如何在大规模虚拟城市场景中构建地形的方法,并在MultiGen Creator建模环境中以插件方式实现。

第四章则秉承第三章的理念与方法,实现在大规模虚拟城市场景中进行绿化的快速建模,其中涉及曲线的交互产生、修改与存储。

第五章介绍了雪景中建筑的实时表现技术。本章首先分析了雪景模拟的应用背景,考察了计算机图形学中雪景模拟的相关工作,进而给出雪景模拟的数据结构和加速绘制算法,并实现了一个简单的建筑场景漫游引擎及基于该引擎之上的雪景中的建筑表现效果。

最后对本文所做工作进行了总结,并讨论了今后可能继续的研究方向。

关键词:建筑表现,快速建模,雪景,虚拟现实

I

Abstract

Architectural illustration needs to show the content, features and inherent meanings of the architecture and it’s designs by certain tools and illustrational medium, and conveys the intent of architectural design to people and furthermore, is an important method cannot be separated from the interactive process of architectural designs. In point of the track of the technical development of medium and tools of architectural illustration, the methods of architectural illustration can be divided into five categories, which includes the one-dimensional word, two-dimensional drawings, three-dimensional solid model, four-dimensional animation and the multi-dimensional virtual reality technology. In the field of architecture, the virtual reality technology is most mainly use as illustrational tools. At present, the inefficient modeling of the virtual scene is one of the most important factors that hamper the application of virtual reality technology in the field of architecture on large scale. The data exchange among various modeling environments makes for the mutual-complement of relative advantages and data sharing among various modeling environment. Virescence is one of important content of architectural illustration. Even though snow is a most common occurrence in many places of the world, the research on the snow simulation in real-time is an area has still to be explored.

Starting from the basic concepts and theory and following the track of history development of architectural illustration, in the first chapter of this thesis we introduces the application of virtual reality, which is the ultimate development of architectural illustrational tools, in the field of architectural illustration.

In the second chapter, we presents the file formats and the organization of virtual scene data, of which the emphases is the OpenFlight file format and the development method of 3DS MAX plug-ins, and implements the data exchange between the two modeling environments.

Based on the theory of rapid modeling, in the third chapter we presentsthe method used to modeling landform in the process of construction of large scale virtual city and practices the method in MultiGen Creator by ways of developing plug-ins for the software.

Taking the concept and theory introduced in the third chapter, in the fourth chapter we implement the rapid planting method in the process of construction of virtual city. The interactive creation, modifying and storing of Cardinal curve are also involved.

In the fifth chapter we introduce our research on the real-time rendering of accumulation snow. In this chapter, the application background of snow simulation is firstly analyzed and the related work is reviewed, the data structure and accelerating rendering arithmetic are presented and a simple walkthrough engine with snow simulation effect is designed and implemented.

At last, we summarize the work of this thesis and discuss the possible further work on the subject of key technologies of architectural illustration.

Keyword:architectural illustration,rapid modeling,snow,virtual reality

II

目录

摘要..................................................................................................................................I Abstract ............................................................................................................................II 第一章 引言 .................................................................................................................... 1

1.1建筑表现的定义 ................................................................................................... 1 1.2建筑表现的内容 ................................................................................................... 1 1.3建筑表现的目的和意义 ........................................................................................ 3 1.4建筑表现的媒介工具 ............................................................................................ 4

1.4.1一维语言文字............................................................................................. 4 1.4.2二维图纸系统............................................................................................. 5 1.4.3三维实体模型............................................................................................. 5 1.4.4四维动画.................................................................................................... 6 1.5多通道的VR技术................................................................................................ 7 1.6本文的工作和论文组织 ...................................................................................... 10 第二章 虚拟场景的建模环境及数据交换 ........................................................................ 12

2.1概述 .................................................................................................................. 12 2.2 MultiGen虚拟现实建模环境 ............................................................................... 12 2.3 OpenFlight数据库层次结构 ................................................................................ 13

2.3.1 概念 ........................................................................................................ 13 2.3.2 特征 ........................................................................................................ 15 2.4 3D Studio MAX简介 .......................................................................................... 16 2.5 3DS MAX SDK概述 .......................................................................................... 17

2.5.1插件的定义 .............................................................................................. 17 2.5.2软件开发工具包(SDK)描述 .................................................................. 17 2.5.3插件类型.................................................................................................. 17 2.6 MultiGen与3DS MAX的数据交换 ..................................................................... 18

2.6.1为什么要交换........................................................................................... 18 2.6.2相关的工作 .............................................................................................. 19 2.6.3本文的做法 .............................................................................................. 20 2.6.4从MultiGen到3DS MAX ......................................................................... 21 2.6.5从3DS MAX到MultiGen ......................................................................... 23 2.7实验结果 ........................................................................................................... 24 2.8小结 .................................................................................................................. 27 第三章 地形的快速构建 ................................................................................................. 28

3.1背景 .................................................................................................................. 28

3.2虚拟地形特点分析 ............................................................................................. 28 3.3原理与实现 ........................................................................................................ 29

3.3.1 非平整面的处理 ...................................................................................... 30

3.3.2 纹理设置 ................................................................................................. 30 3.3.3 LOD生成................................................................................................. 31 3.3.4 模型优化 ................................................................................................. 31 3.4实验结果 ........................................................................................................... 32 3.5小结 .................................................................................................................. 33

III

第四章 建筑绿化的表现 ................................................................................................. 34

4.1建筑绿化的背景 ................................................................................................. 34 4.2建筑绿化的实现方法 .......................................................................................... 35

4.2.1曲线路径的生成 ....................................................................................... 35 4.2.2树木方位的计算 ....................................................................................... 37 4.2.3树木的选择 .............................................................................................. 38 4.3实验结果 ........................................................................................................... 38 4.4小结 .................................................................................................................. 40 第五章 雪景的处理 ........................................................................................................ 41

5.1背景 .................................................................................................................. 41 5.2相关工作 ........................................................................................................... 42 5.3本文的目标 ........................................................................................................ 44 5.4要解决的问题 .................................................................................................... 44 5.5技术路线 ........................................................................................................... 45 5.6数据结构 ........................................................................................................... 45

5.6.1降雪模型.................................................................................................. 45 5.6.2积雪模型.................................................................................................. 45 5.6.3雪花累积.................................................................................................. 45 5.7算法测试平台的实现 .......................................................................................... 46 5.8实验结果 ........................................................................................................... 46 5.9小结 .................................................................................................................. 46 第六章 结论 .................................................................................................................. 49

6.1论文工作总结 .................................................................................................... 49 6.2进一步的工作 .................................................................................................... 49 参考文献........................................................................................................................ 51 致谢............................................................................................................................... 55 攻读硕士期间所发表的论文............................................................................................ 56

IV

北方工业大学学位论文

第一章 引言

1.1建筑表现的定义

所谓建筑表现,简而言之,就是指以平面或立体形式形象地表现建筑设计意图和效果的造型手段[1]。但更全面的定义应该更接近于罗杰·斯克鲁登在《建筑美学》中所指的“表达”,它不仅有叙述描写和阐释的功能,更是作为对建筑的特征和内涵的“暗示”;不仅反映对象(建筑)的内容,也指向其感受和意义;不仅是对多维度媒介的综合应用,更是与设计过程交互作用密不可分的手段,甚至它本身就可以融入了设计之中——设计方案的发展与表现不应该是两个割裂的部分[2]。

由以上定义可知,建筑表现是要以一定的中介系统或表现媒介来向人们展示建筑的内容、特征及涵义,传达设计意向,更是与建筑设计过程交互作用不可分割的的一个手段。以下从这个定义出发,介绍建筑表现的相关概念和相关技术。

1.2建筑表现的内容

首先,建筑表现要向建筑单位、审查单位、用户等有关方面展示建筑设计的空间(或视觉)效果,这也是建筑表现最基本的、传统的表现内容。

(a) 夏日阳光中的南大北大楼

1

北方工业大学学位论文

1.5多通道的VR技术

在论及虚拟现实在建筑表现中的应用之前,让我们首先来回顾一下所要表现的对象——建筑及其设计的本质特征。建筑是三维空间中的几何实体;建筑不是静止的,如前述苏州园林的例子;建筑是由一定的材料构成的,或木制,或砖瓦结构,而不同的材料有不同的质感;建筑都具备一定的功能,如音乐厅是人们欣赏音乐的地方;建筑的结构或外观并非一成不变的,如室内外的装修装饰,周边环境变化。建筑设计应当包含和反映建筑这些本质特征和涵义,其过程也是一个交互修改的过程。

我们再来看虚拟现实技术的定义和特点。

虚拟现实是用高科技手段构造出来的一种人工环境,它具有模仿人的视觉、听觉、触觉等感知功能的能力。虚拟现实技术的最终目的是提高人的认知能力,促进人与环境的交流,更深入的开发人类的智慧[6]。

图1-4 沉浸式虚拟现实系统

项目名称:上海城市规划局VR展示系统

概 要:3x3M的大型4面屏幕CAVE系统、具超群的临场感和投入感 用 途:城市规划大型屏幕立体视觉展示系统等

系统构成:OS:UNIX 工具:OpenGL、IRIS Performan、Creator、3D Studio MAX 资料来源:www.shanghai3d.com

7

北方工业大学学位论文

根据G.Burden提出的虚拟现实三角形(3I)概念,虚拟现实系统通常具有以下特征:

(1)沉浸性(Immersion)使用户感觉到已融合到虚拟现实环境中去,能在真三维图像的虚拟空间中有目的地漫游、观看、触摸、听取和闻嗅各种虚拟对象地特征,而且似乎离开了自身所处的外部环境,沉浸在所研究的虚拟世界之中,成为系统的组成部分。(参见图1-5)

(2)交互性(Interaction)用户在虚拟世界中所感受到的信息,经过大脑的思考和分析,形成自己想要实施的动作或策略,通过输入界面反馈给系统,实现与系统的交互和独立地控制系统运行的功能。

(3)想象(Imagination)用户在虚拟世界中根据所获取的多种信息和自身在系统中的行为,通过联想、推理和逻辑判断等四维过程,随着系统的运行状态变化对系统运行的未来进行想象,以获取更多的知识、认识复杂系统深层次的运动机理和规律性[7]。

对于建筑及其设计的本质特征,我们很容易在虚拟现实技术中找到其对应之处,如下表所示。

表1-1 建筑及其设计的特征与虚拟现实特征之对应 建筑及其设计 三维空间中的几何实体 动态的建筑 材料质感 声场音响效果 结构修改及外观变化 建筑表现与设计的紧密结合 虚拟现实 虚拟的三维世界 用户在虚拟世界中随意漫游 触觉和力反馈系统 三维虚拟声音 交互性特征 交互性和想象性特征 由此看来,虚拟现实是最适于作为建筑表现的媒介工具了。事实上,将虚拟现实作为表现工具是它在建筑领域的主要用途,至少到目前为止是这样[2]。虚拟现实的沉浸性和交互性使得它成为任何虚拟建筑,包括虚拟城市的理想表现工具。它允许观察者从任意角度和方位观察建筑本身,从而使得用户可以对建筑设计作全面评估。在高端的沉浸式虚拟现实系统帮助下,观察者可以从视、听、触、嗅等多个通道感受建筑设计。在虚拟现实的虚拟设计环境中,组成一幢建筑的各个部分并不是固定的,而是可以在设计过程中予以改变和发展的。

8

北方工业大学学位论文

墙壁可以被建立和删除,门窗可以被更换,地板可以改变尺寸和样式。随着分布式虚拟现实和网上虚拟现实技术的发展,人们可以在异地同时漫游建筑场景,更加方便了建筑设计师之间、以及设计师与客户之间间的交流(参见图1-6)。因此,虚拟现实成为建筑表现最理想的媒介工具。

(a)原始数据:由AutoCAD系统创建的城市公路规划图

(b)在AutoCAD中创建一立方体并应用纹理贴图

(c)从预先定义的小品库中向场景添加树木、路灯等

(d)在Web上发布创建的虚拟场景,实现网上实时漫游

图1-5 即时修改场景的虚拟现实 资料来源:http://www.parallelgraphics.com

9

北方工业大学学位论文

尽管虚拟现实技术用于建筑表现媒介工具具有许多天然的优势,但也有其不足之处。其中影响虚拟现实技术大众化普及应用的一个重要原因是构成虚拟现实基础的关键技术发展还不够成熟和完善[6]。主要表现在以下几个方面:

首先,在虚拟环境的建模技术方面,尽管当前市场上已经出现许多虚拟现实的建模工具(如MultiGen Creator、3D MAX等),但这些工具的使用仍需要建模人员手工操作来完成。这就严重限制了虚拟场景的建模速度,也成为虚拟城市仿真系统产品的成本居高不下的一个重要原因。

其次,每个建模工具软件自身都有其优势和不足,因此需要在不同的软件平台之间共享数据,但各个虚拟现实建模工具软件使用不同的虚拟场景组织策略和文件存储格式,这样不利于建模软件之间的数据交换,同时也不利于大规模虚拟场景的快速建模。

最后,在三维图形的实时绘制方面,为了表现不同时间段(如春夏秋冬四季)的同一虚拟环境(如虚拟建筑场景),往往需要建立不同时间段里不同的场景模型,这不仅增加了重复劳动,而且从根本上不可能表现虚拟场景随时间的变化规律。

1.6本文的工作和论文组织

本文第一章从建筑表现的基本概念和理论出发,循着建筑表现媒介工具的历史发展轨迹,论述了建筑表现媒介工具的最终发展——虚拟现实技术在建筑表现中的应用。

本文第二章至第五章则介绍了作者在研究生期间,从不同方面对建筑表现的关键技术所做的一些研究工作,其中:

第二章介绍了计算机三维建筑模型的文件格式和数据组织方法,重点介绍了OpenFlight文件格式和3D Studio MAX的插件开发方法,并实现了二者之间的数据交换。

第三章从快速建模理论出发,提出如何在大规模虚拟城市场景中构建地形的方法,并在MultiGen Creator建模环境中以插件方式实现。

第四章则秉承第三章的理念与方法,实现在大规模虚拟城市场景中进行绿化的快速建模,其中涉及曲线的交互生产、修改与存储。

第五章介绍了雪景中建筑的实时表现技术。本章首先分析了雪景模拟的应用背景,考察了计算机图形学中雪景模拟的相关工作,进而给出雪景模拟的数

10

北方工业大学学位论文

据结构和加速绘制算法,并实现了一个简单的建筑场景漫游引擎及基于该引擎之上的雪景中的建筑表现效果。

11

北方工业大学学位论文

第二章 虚拟场景的建模环境及数据交换

2.1概述

在虚拟现实用于建筑表现的过程中,虚拟建筑场景的建模及三维场景的数据存储是首先要解决的基本问题。建模平台的选择和虚拟场景的数据组织方法将直接影响到虚拟现实作为建筑表现媒介工具的性能。本文选择MultiGen Creator作为建模平台。

另外,不同平台之间的数据交换也是经常遇到的问题。本文介绍了作者为3DS MAX开发了两个文件输入/输出插件,用于在3DS MAX和MultiGen Creator之间进行数据交换。

2.2 MultiGen虚拟现实建模环境

MultiGen是由MultiGen-Paradigm公司开发的一个用于对可视化系统数据库进行创建和编辑的交互工具。它有不同的MultiGen版本以适应于一系列系统和平台。MultiGen-Paradigm公司于1998年9月由MultiGen Inc.和Paradigm Simulation Inc.合并而成,是世界领先的视景仿真技术公司,它向客户提供了一整套视景仿真解决方案。其中,MultiGen公司成立于1986年,主要提供易于使用的视景仿真建模工具。Paradigm公司成立于1990年,主要提供广泛应用的实时视景仿真驱动和声音仿真的商业工具[8]。

MultiGen Creator系列产品是世界上领先的实时三维数据库生成系统,用于产生高优化、高精度的实时3D内容,可以用来对战场仿真、城市仿真和计算可视化等领域的视景数据库进行生产、编辑和查看。这种先进的技术由包括自动化的大型地形和三维人文景观产生器、道路产生器等强有力的集成选项来支撑。MultiGen Creator是一个完整的交互式实时三维建模系统,广泛的选项增强了其特性和功能。

这个集成的和可扩展的工具集提供比其它的建模工具更多的交互式的实时三维建模能力。MultiGen Creator软件包是经济的、交互式的、高度自动化的软件,用它可以高效、实时地产生三维数据库而没有视觉质量的损失[10]。

MultiGen Creator在满足实时性的前提下生成面向仿真的、逼真性好的大面积场景。它可为25种之多不同类型的图像发生器提供建模系统及工具,它的OpenFlight在实时三维领域成为最流行的格式,成为仿真领域的行业标准。

12

北方工业大学学位论文

2.3 OpenFlight数据库层次结构[11]

2.3.1 概念

OpenFlight是由MultiGen-Paradigm公司创建并维护的三维场景描述文件格式,在视景仿真领域非常流行。OpenFlight数据库格式既支持简单的三维软件应用,同时更适于大规模复杂场景的应用场合。OpenFlight的完整实现支持层数可变的LOD(levels of detail)、DOF(degrees of freedom)、声音(sound)、实例(instancing)、复制(replicating)、动画(animation sequences)、用于实时裁剪的包围盒(bounding volumes for real-time culling)、光源(lighting)、透明(transparency)、纹理映射(texture mapping)、材质(material)等特征。对于简单的应用,可以只考虑上述特征的一个子集,如仅考虑几何属性等,而忽略动画、声音等相对复杂的属性。

OpenFlight数据库层次把虚拟场景组织为逻辑组(groupings),从而便于实现实时功能,如视域剪切(field-of-view culling)、LOD转换等。每一个OpenFlight数据库是一个树形结构,由节点组成。大多数节点可以有孩子节点和兄弟节点。总的来讲,从层次的最顶端开始,节点分为三个层次类:容器节点(container nodes)、几何节点(geometry nodes)、顶点节点(vertex nodes)。

容器节点把其下的所有孩子节点在逻辑上归为一组,并对组内节点施加一些行为。例如,组节点(group nodes)允许用户把由于某种原因需要放在一个共同父节点的所有节点“收集”在一个组节点下。用户可以把节点单独分组,也可以根据一定的标准来分组。另一个常用的容器节点是LOD节点(level-of-detail nodes),该容器节点对其下的孩子节点施加一种特定的视觉行为,即它定义了其下节点漫游引擎中何时可见的距离范围。

几何节点代表实际的物理(可渲染的)几何体。一个几何节点所具备的典型的物理属性包括诸如颜色、材质、纹理等视觉属性。OpenFlight中两个主要的几何节点是面节点(face nodes)和mesh节点。其它的几何节点包括光点节点(light point nodes)和文本节点(text nodes)。尽管OpenFlight允许一个容器节点中不包含任何几何节点,但此种情况很少见。

顶点节点构建几何节点的“砖块”。每个顶点节点在空间中分别代表离散的点。一组顶点节点被一个几何节点(如面节点)收集到一起构成一个封闭(或不封闭)的环。封闭的顶点环构成一个面或多边形(polygon)。面的“前”面由组成该面的顶点出现的顺序决定。不封闭的环定义了一组线段,其方向同样由

13

北方工业大学学位论文

顶点出现的顺序决定。

根据其在数据库中的作用,每类节点具备一些属性。OpenFlight数据库中的基本节点类型如下:

头节点(header nodes):每个数据库中有且只有一个头节点。在文件中,头节点总是第一个节点;在数据库层次和树形结构中,头节点总是最顶层的节点。

组节点(group nodes):一个组节点是数据库中的一个逻辑子集。组节点可以被变换(平移、旋转、缩放等)。该变换作用于组节点自身及其所有的孩子节点。组节点的孩子节点或兄弟节点可以是除头节点之外的任何节点。

对象节点(object nodes):对象节点是包含几何节点的一个逻辑集合,它通常作为比组节点低一级的组节点并提供一些区别于组节点的属性。

面节点(face nodes):面节点表示几何体,它的孩子节点只能是描述多边形、线段或点的顶点节点集合。对多边形来讲,其前面按如下定义:当面向多边形前面时,其顶点序列按逆时针排序。面节点的属性包括颜色、纹理、材质和透明性。

Mesh节点:Mesh节点定义了共用顶点和具有相同属性的简单几何体。 子面节点(subface nodes):子面节点被认为是与其上级面共面并且绘制在其上级面之上的面节点。子面节点自身也可以是上级面,从而允许子面的多层“递归”。子面的构造解决了共面的面的显示问题。一个子面节点在一个面节点之后,由子面进栈控制记录(subface push control record)引入,以子面出栈控制记录(subface pop control record)结束。

顶点节点(vertex nodes):一个顶点节点表示空间中一点,以一个双精度的3D坐标来表示。每个顶点坐标值存放在顶点属性表记录(vertex palette record)里。顶点属性包括X、Y、Z坐标以及颜色、法向量和纹理映射信息等。顶点节点是面节点和光点节点的子节点。

LOD节点(level of detail nodes):根据其切入(switch-in)距离、切出(switch-out)距离和中心(center)位置等属性以及距离观察者的距离,LOD节点用于转变其下孩子节点的显示状态。显示状态有显示和不显示两种。

Switch节点:switch节点是LOD节点更一般的情况,允许通过激活一个选择标志(selector mask)来选择零个或多个孩子节点。任何孩子节点的组合均可被选择,而且选择标志的数目没有限制。

14

北方工业大学学位论文

2.3.2特征

节点属性(node attributes):OpenFlight场景中的节点包含属性,不同的属性值描述了节点的不同属性或特征。大多数属性在节点上被直接表示,并且适合描述该类节点的具体特征。例如,LOD节点定义了切入与切出距离属性,这两个属性一起定义了该LOD节点下几何体可见的范围。

其它属性在节点上被简介定义,即使用一个属性表(palette)的索引号来描述节点的属性特征。例如,面节点定义了数个间接属性,包括颜色索引、材质索引和纹理索引。这些索引属性的值用于映射面节点的具体颜色、材质和纹理。被这些索引属性所引用的颜色定义在数据库的属性表(palette)里,而非节点自身之上。

这种通过属性表实现的间接属性映射机制具有两个优点。一个优点是它可以节省OpenFlight文件的空间,另外一个优点是使得对数据库中的节点属性做全局修改操作更简单。

为了看清楚间接映射属性如何节省空间,考虑面节点的材质属性。一个材质属性由超过15个单独的颜色属性和其它属性共同定义。如果每个面节点上的材质属性定义在各个面节点上,那么数据库的大小将迅速增加。然而使用间接映射,每个面节点上只需定义一个索引属性,要比把每个材质属性定义在面节点上节省大量空间。这是因为在数据库中,把一个材质映射至成百上千个面节点是很常见的做法。

同样,就修改数据库中一个特定的材质属性而言,当用户在材质属性表里修改材质属性时,数据库中所有引用该材质的面节点的材质属性自动得到修改。这要比对数据库中成千上万个面节点的材质属性逐一进行修改简单的多。

属性表(palette):数据库的属性表是一组属性定义的集合。没有属性表,间接属性映射是不可能的。如前所述,材质属性表定义了一组材质,每个材质由许多不同的颜色和视觉属性组成。

OpenFlight支持许多不同的属性表。最常见的是颜色、材质和纹理属性表。大多数属性表支持可变数量的元素,而另外的属性表则使用一个固定的尺寸约束。例如,材质属性表和纹理属性表可以定义零个或多个材质和纹理,而颜色属性表则定义固定的1024个颜色。

数据库的属性表并不局限于支持间接属性映射。例如,顶点属性表定义了一组可以被多个面节点间接引用的“共享”顶点。当许多几何节点引用相同的

15

北方工业大学学位论文

顶点时,顶点属性表同样可以节省大量空间。

实例(instancing):实例允许一次性地定义整个或部分数据库,然后通过应用各种变换参考之。OpenFlight支持内部实例和外部实例,以及诸如旋转(Rotate)、平移(Translate)、缩放(Scale)和置放(Put)等操作。

内部实例是被声明为实例的数据库中的子树。实例定义表示数据库中单独子树的根,由包含一个唯一实例ID的实例定义记录引入。实例定义由数据库树结构中其它部分的实例参考记录激活。

外部实例参考另外一个数据库文件,由外部参考节点引入。外部参考节点包含将被插入至参考数据库的子数据库文件的名字,还包含属性以指明子数据库是用其自带的颜色、材质属性表,还是使用父数据库的颜色、材质属性表。

实例定义本身也可以包含实例定义和参考。内部实例和外部实例都不能参考其自身,无论直接地还是间接地。参考自身实例操作的结果是不确定的。

重复(replication):重复对数据库中一个子树进行多次实例操作,每次使用一个变化矩阵。例如,一排树可以由包含一棵树的组节点通过多次实例化操作和平移操作实现。

重复操作对组节点、面节点和光点节点都是合法的,因此重复记录是组节点、面节点或光点节点的辅助记录。与重复记录并存的由一个或多个变换记录。

边界盒(bounding volumes):边界盒用于确定一个特定的子树是否在视域范围内。边界盒可以是方形(box)的、球形(sphere)的或圆柱形(cylinder)的。每一个组节点只能有一个边界盒。边界盒范围通常包含组节点所有孩子节点所能达到的区域,包括任意实例和重复在内。边界盒记录是组节点的辅助记录。

多重纹理(multitexture):在OpenFlight数据库中,每个多边形或Mesh可以有八层纹理,相应地,每个顶点可以有八组纹理坐标。直接存储与面节点、mesh节点和顶点节点上的纹理信息称为“基本纹理”或“0层纹理”,附加的纹理信息存储于面节点、mesh节点和顶点节点的辅助记录中,称为“N层纹理”,其中N=1..7。

2.4 3D Studio MAX简介

3D studio MAX,简称3DS MAX,是由著名的AutoDesk公司麾下的Discreet多媒体分部推出。3DS MAX易学易用,操作简单,入门快,功能强大,目前在

16

北方工业大学学位论文

国内外拥有最大的用户群。

3DS MAX主要有以下特点:[15]

提供了强大的建模功能:具有各种方便、快捷、高效的建模方式与工具。提供了多边形建模、放样、表面建模工具、NURBS等方便有效的建模手段,使模型的创建工作变得轻松有趣。

易学易用,操作方便,非常具有个性的工作界面随意定制,各种工具也方便易用。

特殊效果与渲染能力强。

角色动画制作能力较强,配套软件Character Studio在人物角色动画的创建方面功能强大。

2.5 3DS MAX SDK概述

2.5.1插件的定义

3D MAX插件(plug-in)是用于扩展3DMAX功能的软件,可以与3DSMAX无缝结合。3DS MAX 本身就是由众多的插件组合而成,接近90%的功能都是由插件来实现,每个插件实现一部分功能。3DS MAX 与插件的关系类似于操作系统和应用程序的关系。各式各样、能实现各种功能和效果的插件被组合在一起,有条不紊地工作,从而形成了功能强大的3DS MAX软件[13]。

插件分为两种:Standard MAX plug-ins(标准插件)和Additional MAX plug-ins(附加插件)。在3DS MAX的安装目录下有两个文件夹,stdplugs和plugins,其中stdplugs用来存放标准插件,plugins用来存放附加插件。

2.5.2软件开发工具包(SDK)描述

3DS MAX软件开发工具包(以下简称SDK)是一个面向对象的用于开发3DS MAX插件的程序库。SDK为程序员提供了大量的、内容广泛的类用于创建与MAX软件本身无缝衔接的插件应用程序。

SDK自身由许多头文件和链接库组成。另外还包括内容全面的帮助文档、FAQ、插件实例以及一个用于Visual C++的插件生成向导。

2.5.3插件类型

使用SDK,程序员可以开发各种类型的插件。3DSMAX插件类型主要有以下类型。

17

北方工业大学学位论文

2.5.3.1过程对象(procedual object)

简单形体(primitive objects):如长方体、球体、圆锥体、圆柱体等,此类对象继承自类GeomObject或SimpleObject。

粒子系统(particles system):开发者可以创建粒子对象以产生烟火、爆炸、水流等效果,粒子系统对象继承自类ParticleObject或SimpleParticle。

帮助对象(helper objects):帮助对象是诸如“傀儡”对象、网格、点对象等。

2.5.3.2修改器(modifier)

对象修改器(object modifiers):在对象的本地转换空间中,修改器用于以某种方式修改对象,如弯曲器(Bend)、锥形器(Taper)、扭曲器(Twist)等。

编辑修改器(edit modifiers):运行特定的类被修改,如EditMesh修改器、EditPatch修改器等。典型情况下,编辑修改器允许用户选择对象的元素进行至少标准的平移/旋转/缩放等变换。

空间包裹器(space wraps):即原先的“世界空间修改器”,在世界坐标系中修改对象。空间包裹器是非渲染(non-rednering)对象,影响场景中基于其它对象位置和方向、绑定于空间包裹器的对象,如波纹空间包裹器(Ripple Space Wrap)等。

2.5.3.3控制器(controller)

控制器用于控制动画,如插值控制器、关键帧控制器、数学表达式等。 2.5.3.4文件输入/输出(file import/export)

文件输入类插件允许除3ds max格式之外的场景文件输入或输出至3ds max环境中。输入类插件继承自SceneImport类,输出类插件继承自SceneExport类。

3ds max 有其它许多类型插件,由于与本文工作无关,在此不一一介绍。

2.6 MultiGen与3DS MAX的数据交换

2.6.1为什么要交换

首先,由前文关于MultiGen Creator和3DS MAX的介绍知道,MultiGen Creator和3DS MAX是两个服务于不同目的的建模工具。MultiGen Creator主要用于视景仿真领域,其场景文件格式OpenFlight的设计也是在满足实时性的前

18

北方工业大学学位论文

提下兼顾诸如视觉质量等其它特性的。3DS MAX则主要面向动画渲染领域,视觉效果是其追求的首要目标,而实时性相比而言则居于其次。为了实现两种软件平台之间的协同工作,互补长短,有必要在二者之间进行数据交换。

其次,3DS MAX是较MultiGen Creator更为通用的软件,在国内外拥有最大的用户群,同时存在大量的3DSMAX三维模型库,为了使MultiGen Creator可以重用现有的3DSMAX模型,也需要在二者之间实现数据的交换。

最后,对于建模人员而言,有些建模人员喜欢使用3DSMAX,而另外一些更倾向于使用MultiGen Creator,对两个建模环境的熟悉程度也不一样。通过开发插件实现两个软件平台之间的“息息相通”,可以提高建模人员的工作效率。

2.6.2相关的工作

在互联网上,各种格式之间、各家公司之间三维模型数据之间的相互交换方法不计其数。如Right Hemisphere公司推出的Deep Exploration可以使用户在一个程序中查看、管理多种格式的图片、视频以及三维模型[17]。实际上,MultiGen Creator和3DS MAX软件安装本身也带有文件输入/输出(Import/Export)功能,可以在一定称度上实现不同格式三维数据之间的相互交换。

但就本文所知,目前还没有哪个软件工具能够实现在OpenFlight格式场景数据库与3DS MAX之间直接进行数据互导的功能。大多数做法都是通过3DS、..VRML、DXF等这些更加通用的三维文件格式来实现数据交换。但通过这些第三方的格式在两者之间进行数据互导时,容易丢失一些重要的三维模型信息,甚至出现错误,如部分模型中对象之间相互错位、纹理坐标不对等。例如,MultiGen Creator安装程序自带的3DS格式文件输入插件,对于某些3DS格式的文件就不能正确读取,如图2-1所示。

(a)

19

北方工业大学学位论文

(b)

(c)

图2-1 3DSMAX与MultiGenCreator通过3DS格式文件交换数据出错的例子

图片说明:上图(a)是在3DSMAX打开的Particle_Butterfly.max模型文件,使用3DSMAX的文件输出(export)功能输出为Particle_Butterfly.3ds格式文件;中图(b)是使用MultiGen Creator的文件输入(import)功能打开Particle_Butterfly.3ds后,模型中蝴蝶的身体和翅膀之间的位置发生错位;下图(c)是使用本文为3DSMAX开发的OpenFlight格式文件输出插件直接输出Particle_Butterfly.flt文件后,在MultiGen Creator中打开的情况。从图中可以看出,本文为3DSMAX开发的OpenFlight格式输出插件消除了模型中对象之间的相互错位现象。

资料来源:Particle_Butterfly.max文件来自3DSMAX安装程序自带的模型文件。

类似的错误还出现于其它许多的文件转换之中(如TarrasqueTextured.max文件的转换),读者如有兴趣可以自己试一试。这主要是因为3DS格式是一个内部非公开的文件格式[14],格式中许多块(chunk)的含义并不清楚。

2.6.3本文的做法

本文试图不经过第三方文件格式、直接从3DS MAX输入或输出OpenFlight格式场景文件来实现两个软件平台之间的数据互导。具体地,是使用3DS MAX提供的软件开发工具包(SDK)为3DS MAX开发两个插件,一个用于输入(import)OpenFlight格式的场景数据文件,另一个用于输出(export)OpenFlight

20

北方工业大学学位论文

格式的场景数据文件。输入或输出的OpenFlight格式场景文件可以由MultiGen Creator直接打开(open)进行查看、编辑等操作。

2.6.4从MultiGen到3DS MAX

从MultiGen到3DSMAX的数据转换由3DSMAX的输入插件fltimp.dll实现。插件的具体生成过程是:

第一步:由3DS MAX SDK提供的3DS MAX 插件向导生成文件输入类型插件的程序框架及必要的类。向导主要生成两个类Fltimp和FltimpClassDesc,分别从SDK提供的基类SceneImport和ClassDesc2继承而来。

第二步:实现类Fltimp的DoImport成员函数。输入插件的功能主要由此成员函数来完成。

需要特别指出的是,在MultiGen Creator中,材质(material)和纹理(texture)是作为多边形或Mesh的相互独立的属性而存在的,每个多边形或Mesh最多可以设置八层纹理和一种材质[10]。而在3DS MAX中,纹理贴图是作为材质球的Blinn Basic Parameters值来指定的,每个Composite或Multi/Sub类型的材质可以指定多个纹理。因此,对于材质和纹理需要做特别处理。

首先对MultiGen Creator中的材质和纹理特点进行分析[10]:(1)每个polygon只能有一个材质;(2)每个polygon可以有最多8层纹理;(3)材质和纹理处于平行的地位;(4)材质只有常用的属性(ambient、diffuse、specular等等);(5)Mesh类型节点的属性与polygon相同;(6)每个polygon或mesh的8层纹理之间的Blend算法可以是:Modulate, Blend, Decal, Replace四者之一。

图2-2 3DS MAX中Multi/Sub类型材质构成

其次分析Max中材质和纹理的特点[16]:(1)材质可分为Standard、Compound等几大类型,而Compound类型下又可细分为Composite、Multi/Sub等小类型;(2)纹理可分为2D、3D、Composite等大类型,而2D类型下有可细分为Bitmap

21

北方工业大学学位论文

雪花的飘落过程,而在于如何在大面积虚拟场景中实时地模拟积雪过程,并达到一定的视觉效果。

5.2 相关工作

如前文所述,图形学中关于雪景模型的工作并不是很多。

国内方面,微软亚洲研究院的陈彦云等人在雪景生成研究中,提出了一种使用位移映射(displacement mapping)的方法。该方法使用位移映射构造近处由多边形构造的物体上的雪块,雪块的厚度由雪花落在该处的概率和稳定性来决定。采用体纹理映射(volumetric textrue mapping)处理远处复杂物体(如树木等):首先利用光线投射技术,将树木的几何模型变成一般的树木体纹理,然后在这个树木纹理上加上给定量的“雪”,并修改相关体元的光照特性[51]。

李峥宇等人在DVENET中雪景的生成研究中提出一种基于多样图的纹理合成算法。算法中采用三角面片来保存场景中的三维模型,计算上下遮挡关系后,在直接暴露在天空下的面片上,通过计算积雪概率以及最大雪层厚度,得出每个雪层厚度值。生成的合成纹理同时包含地面纹理的信息和雪层的纹理信息,地面和雪的比例可以由用户控制[50]。

其它雪景模拟的研究大都集中于使用粒子系统来模拟降雪过程[49][61]-[62]。 国外方面,Premoze等人利用一个数字高程模型(Digital Elevation Model)和航拍照片实现了被雪层覆盖的山脉的场景。他们的做法是把航拍雪景照片作为“零厚度”的雪层,附加在一个数字高程模型之上。由于数字高程模型数据也是来自卫星数据,这使得他们的办法只使用于野外大面积雪景模拟的场合,而对于我们所关注的虚拟城市内建筑物等环境中的雪景模拟,用处不是很大[]。

在文章“Animating Sand, Mud and Snow”中,Summer等人给出了一种处理雪层表面受到外力作用而变形的办法。在他们的算法中,沙层或雪层的表面被分成许多包含雪层高度的体元(voxels),这个网格用于计算当表面与物体相互作用后发生变形的效果[39]。

Nishita等人提出了一套采用metaball和体绘制的雪层模型的办法。Metaball曲面是一种特殊的隐函数曲面,它采用具有等势场值的点集定义曲面,因此,meatball曲面实际上是一张等势面。当metaball在相互靠近到一定程度时会产生形变,再进一步靠近时将融合成光滑的表面。使用多个meatball能够生成非常复杂的形状,适合表示可以变形的物体,如描述人体、液体等造型。使用meatball构造雪景,由于需要考虑光线的路径和漫放射等,使得此方法不大可能用于实

42

北方工业大学学位论文

时的雪景模拟[41]。

Paul Pearing在计算机雪景模拟的研究中,提出了一套复杂的积雪模型(accmulation)和稳定性模型(stability model),用于构造几何表面的雪景模拟方法。该方法近乎准确地给出积雪计算过程,绘制出了迄今为止最真实漂亮的虚拟雪景,如图5-1所示。算法中的积雪模型用于计算对于任意场景,在自然情况下,雪应该堆积到哪些表面,而稳定性模型则用于计算在每个表面上,雪应该堆积多少。不幸的是,使用Pearing的方法渲染一帧的场景就需要相当长的时间,这使得这种办法同样不能用于雪景实时渲染中[36]。

图5-1 由Paul Pearing算法模拟的雪景

Bryan E. Feldman把Fearing的积雪模型和Fedkiw使用的流体的不可压缩性结合起来,给出了一种模拟雪在风力的作用下,堆积在建筑物墙角或其它障碍物边上的积雪模型。通过计算障碍物周围空间中的三维气流,Feldman的方法可以模拟雪在风力作用下对流、漂移、沉积,最后产生雪层表面波纹的效果。尽管Feldman的方法真实地模拟了风力对积雪的影响效果,但使用该方法渲染一个几乎最简单的场景,需要在一个笔记本电脑上用matlab渲染三个小时[37]。

以上提及的办法均不适于雪景的实时渲染。在实时渲染方面,Per Ohlsson把Hsu等人提出的灰尘的沉积模型作了改进,用于积雪的模拟计算。该方法把积雪作为象素级效果来进行渲染,类似于阴影映射算法。一个深度缓存用于计算一个特定的表面上应该积累多少雪,然后根据表面倾斜度来计算应该去除多少雪量。为了真实地渲染雪层,该方法在雪层表面还应用了3D噪声。Per Ohlsson的方法同样存在性能问题,他只给出了一些较小模型上的实验结果[34]。

43

北方工业大学学位论文

真正可能应用于大规模场景中雪景的实时渲染方法大概是Haglund等人提出一种基于二维数组的方法。在该方法中,Haglund使用二维数组来记录每个被雪覆盖的表面相应位置的雪层高度,雪层的高度则由以粒子表示的雪花来累积计算。雪花落到什么地方,该处的雪层就增加一定高度。最后以二维数组所存储的高度值来绘制三角形面片。Haglund的方法实现了雪层厚度随雪花降落而增长的动态模拟,计算量相对较小,只与整个场景的水平面积相关,而与雪量的多少无关。该方法的不足之处有二:一是需要建模人员为创建二维数组做许多的准备工作;二是由于首先满足实时性的要求,使得雪层网格的宽度过大,不能模拟体积较小物体上的积雪,如建筑物墙上的积雪效果[35]。

本文就是基于Haglund等人的思想,试图对其实现算法进行改进,使得算法可以满足大规模、实时性的要求。

除了针对雪景的模拟工作外,对于自然界中其它粒子状物体如云、烟、雾、水等现象的模拟所采用算法的思想,也可以借鉴用于雪景的模拟。这方面的工作参见文献[42]-[49]。

5.3本文的目标

在雪景模拟方面,本文期望实现两个层次上的目标:

理论层次上,改进Haglund等人的算法,避免过多的人为干预工作,并使之适用于较大规模的虚拟建筑场景。

应用层次上,开发一个简单的虚拟场景漫游系统,并在其上实现雪景模拟算法。

5.4要解决的问题

为了避免过多的人工干预,需要算法能够自动分析出需要积雪的面片,并计算遮挡关系,这就需要用到图形学中关于多变形裁剪的算法。但在现有的裁剪算法中,实现任意多边形的裁剪是比较复杂的[53]-[55],如果直接用于大规模场景的计算,势必增加雪景模拟的预处理时间,使得算法在实践中不可行。因此,一方面需要寻找高效的多边形裁剪算法,另一方面则更需要对虚拟场景事先做出简化处理,但该对虚拟场景做怎样的简化呢?

为了使算法适用于较小物体表现积雪的模拟,必须减小雪层网格的宽度,这样除了导致算法消耗大量内存之外,还大大增加了场景的渲染时间,因此需要使用加速绘制办法,但现有的加速绘制算法(如LOD技术)能否直接应用于

44

北方工业大学学位论文

雪景的渲染?需要做些什么修改?以及能够在多大程度上解决问题?

5.5技术路线

本文首先实现一个简单的虚拟场景漫游系统作为算法试验平台,其次在此平台之上实现Haglund等人的算法,最后对算法做出改进,添加自己的自动裁剪算法和加速绘制算法。

5.6数据结构

5.6.1降雪模型

降雪模型使用粒子系统来表示。由于本文主要是为了模拟积雪的效果,因此对于降雪模型作了些简化的处理。对于每个雪花,以白色小球代替,只需三维空间中位置和雪球半径即可,雪球半径取相同的值。以一个虚拟场景正上方的平面表示下雪的天空,该平面的水平尺寸与整个虚拟场景的包围盒在X、Y平面的投影相同。整个粒子系统的参数雪花数量、雪花下降速度、雪花半径、雪花厚度等。据此分析,降雪模型可用类CSnowFallingSystem来表示,其定义详见源程序及注释。

5.6.2积雪模型

积雪模型数据结构以一个单链表[59]来实现,链表每个节点是一个CSnowFace类的对象。CSnowFace类主要的成员属性有该面的法线、所在平面的一般表达式、包围盒和雪层网格,其中雪层网格是一个存储雪层高度的二维数组,该数组中的雪层高度值用于对相应地区表面进行三角化,进而渲染以产生雪层的效果。积雪模型的详细定义参见源程序及注释。

5.6.3雪花累积

积雪模型中,每个二维数组的元素存储的是该位置处的雪层高度,这个高度值要随雪花累积的过程而不断增高,这是由粒子系统来驱动的。当某个雪花粒子降落到地面时,需要根据其X、Y坐标,确定该雪花粒子落到了哪个面上,为此,需要设计一个快速查找表,用于查找该面。这里的查找不宜直接在积雪模型中的链表来实现,因为这样将使得查找速度下降,影响整体性能。本文的做法是,使用一个与所有积雪平面相同大小的二维数组来存放各处的面索引号,当雪花降落到某处时,直接取出此处的面索引号,用于增加雪层高度。该表详细定义参见源程序源程序及注释。

45

北方工业大学学位论文

5.7算法测试平台的实现

算法测试平台主要分四个模块来实现,分别是引擎模块、场景渲染模块、雪景渲染模块和参数设置模块。引擎模块主要负责键盘和鼠标输入控制、背景天空绘制、OpenGL设置、信息显示等功能。场景渲染主要负责无降雪情况下原始模型的绘制。雪景渲染模块负责降雪模型和积雪模型的实现与绘制。参数设置模块则负责在程序运行中即时修改上述三个模块中的参数,主要由一个参数设置对话框实现。

5.8实验结果

图5-2至图5-5是四幅连续的下雪场景效果图,图5-6是另外一幅雪景效果图。由图可以看出,在满足实时性要求的前提下,本章给出的算法所产生的雪景效果总体上还算比较满意。

5.9小结

本章首先综述了当前国内外关于雪景模拟研究的状况,给出了在实时环境中模拟雪景的数据结构和加速渲染算法,设计了一个虚拟建筑场景的漫游引擎。作为一种尝试性质的研究工作,本章给出关于雪景模拟的算法尚存在相当的缺陷和不足之处,表现在:所采用的数据结构不利于考虑风力对积雪的影响,不利于把考虑雪景中的脚印等考虑进去;在超大规模的虚拟场景中,算法还不能满足实时性的要求,很多情况下算法是以空间的高消耗为代价来换取实时性的等等。这些问题都有待于在未来的工作做进一步的考虑和解决。

图5-2 没有雪景时的原始模型

46


靳文忠-建筑表现中的关键技术及研究(6月5日版).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:PEP小学英语五年级下册Unit 1 My day 第一课时教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: