虚拟现实技术第4章_第1页
虚拟现实技术第4章_第2页
虚拟现实技术第4章_第3页
虚拟现实技术第4章_第4页
虚拟现实技术第4章_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章第四章 复杂造型复杂造型虚拟现实技术第4章 场景中的复杂造型场景中的复杂造型学习目标学习目标 1 1了解在场景中构建复杂造型的基本方法了解在场景中构建复杂造型的基本方法2 2掌握点、线以及面集合节点的使用及其基掌握点、线以及面集合节点的使用及其基本域值的基本含义本域值的基本含义3 3会使用地表节点创建相应的造型会使用地表节点创建相应的造型4 4掌握挤出节点创建复杂造型的建模方法掌握挤出节点创建复杂造型的建模方法几何节点类型4.1 构造离散点的集合造型 点集合节点PointSet 在VRML虚拟环境中创建离散的点,用PointSet。PointSet是geometry域的一个域值,其作用是

2、在空间构造、定义一系列与色彩相关联的点的集合。 使用语法使用语法 PointSet coord NULL # SFNode color NULL # SFNode 4 4. .2 2域值说明域值说明 coord 包含一个 Coordinate 节点,用来给出一些列空间坐标点。 color 包含一个Color节点,Color节点包含一个color域,使空间的点与颜色联系起来。 例例1 1 点的集合点的集合#VRML V2.0 utf8#VRML V2.0 utf8Shape Shape appearance Appearance appearance Appearance geometry Po

3、intSet geometry PointSet coord Coordinate coord Coordinate point 0 2 0 , -1 1 0 , 0 1 0, 1 point 0 2 0 , -1 1 0 , 0 1 0, 1 1 0 ,1 0 , -2 0 0 , -1 0 0, 0 0 0 , 1 -2 0 0 , -1 0 0, 0 0 0 , 1 0 0 , 0 0 , 2 0 0 , -1 -1 0, 0 2 0 0 , -1 -1 0, 0 -1 0, 1 -1 0,-1 0, 1 -1 0, 0 -2 0 0 -2 0 color Color color Col

4、or color 1 1 1, 1 1 1, 1 1 1, color 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1, 1 1 1 1 1 1 运行效果图运行效果图4.3 构造空间折线造型空间的任意两个点可以构成一根直线,多根线在空间中相互连接可以构成各种封闭线或者折线。在VRML中,也是采用这样的思想构造空间的直线段、折线或者封闭线。 节点用来构建各

5、种线造型。 节点是域的值,共有5个域域,以及两个描述事件的接口。 4 4.3.1.3.1 构造空间折线造型构造空间折线造型2 域值说明 用来提供空间线段的顶点的点坐标。其域值是Coordinate节点,Coordinate 节点的域 给出这些点坐标的列表。这些点的列表按照先后顺序每一个分配一个,后面的域 coordIndex引用的时候直接针对索引值。 对应Coordinate节点的 point域的坐标列表的一个索引列表,按给定的索引顺序连接坐标点形成线段或者折线。2域值说明 域值是 Color 节点,Color 节点的域值也是 color,它列出了用于作为每个线段的顶点的坐标点着色的一个颜色列

6、表。这些颜色值也同 coord情况一样按照先后顺序从 0 开始分配一个索引,以后按照索引引用相应的颜色。 对应Color节点的 color 域值的索引列表。按照这里给出的顺序为线段的顶点着色或者线段着色。如果是给顶点着色,在两个顶点之间的线段的颜色是顶点颜色的过渡色。 如果在color域有一个Color节点给出了颜色列表,则这个域的域值指明是把对应的颜色赋给每个还是每条。域值设置为TRUE则表示为线段的顶点着色;如果域值设置为FALSE则表示为线段着色。 例2. 构造图示的五面体显示效果图例例2. 2. 构造图示的五面体构造图示的五面体坐标值和索引坐标值和索引 按索引构建封闭线框按索引构建封闭

7、线框 4.3 4.3 构造空间平面集合造型构造空间平面集合造型 VRML中构造空间的用节点 IndexedFaceSet,面集合节点 IndexedFaceSet 同样是Shape 节点中geometry域的域值。 一系列空间点按一定关系集合构建VRML的平面以及平面的集合。创建的平面的样子完全由各个顶点确定。 4.3 4.3 构造空间平面集合造型构造空间平面集合造型4.3 4.3 构造空间平面集合造型构造空间平面集合造型 coordcoord 这个域的用法同线集合节点 IndexedLineSet 情况类似,只是这个域用来提供空间平面多边形的顶点的点坐标。其域值是Coordinate节点,C

8、oordinate节点的域 point 给出这些点坐标的列表。这些点的列表按照先后顺序从0开始每一个分配一个索引值,用域coordIndex直接针对索引值引用各个坐标点。 coordIndexcoordIndex 对应 Coordinate 节点的 point 域的坐标列表的一个索引列表,按给定的索引顺序连接坐标点形成空间的多边形。由于其是多域值的,也就相当于提供了一个索引列表,要创建的每个多边形通过一组指向Coordinate节点中的顶点索引来指明。 4.3 4.3 构造空间平面集合造型构造空间平面集合造型 texCoord 这个域包含一个 TextureCoordinate 节点,指明将一

9、幅纹理图片纹理图片映射到面集表面上。 texCoordIndex 对应TextureCoordinate节点的索引列表。 color 域值是 Color 节点,Color 节点的域值也是 color,它列出了用于为每个面的顶点的坐标点着色的一个颜色列表。这些颜色值也同 coord 情况一样按照先后顺序从 0 开始分配一个索引,以后按照索引引用相应的颜色。它列出了用于为每个顶点或每个面着色的颜色列表。 colorIndex对应Color节点的 color 域值的索引列表。按照这里给出的顺序为面的顶点着色或者面本身着色。 4.3 4.3 构造空间平面集合造型构造空间平面集合造型 如果在color域

10、有一个Color节点给出了颜色列表,则这个域的域值指明是把对应的颜色赋给每个顶点,还是赋给每个表面。域值设置为TRUE则表示为平面的顶点着色;如果域值设置为FALSE则表示为平面着色。 这个域含一个Normal 节点,给出了给表面指定法线向量的值。法向量并不是必须指定的,不指定情况下,浏览器会计算缺省的法向向量。这里指定的是一系列的多组值,每一组值对应了一个从0开始的索引,针对每一个构造面。 对应于Normal节点的索引的列表,由索引的排列顺序决定了表面法线向量的方向排列。4.3 4.3 构造空间平面集合造型构造空间平面集合造型 指明是否已为每个顶点还是给每个表面确定了法向量。如果 norma

11、l域为空,该域被忽略。如果 normalPerVertex域为TRUE,则给每个顶点确定法向量。反之,如果 normalPerVertex域为FALSE,则表示给每个表面确定法向量。 (11) ccwccw 按照右手螺旋法则指明每个表面上的顶点的排列走向。当确定了拇指方向为正方向时,构成表面的各顶点遵从四指绕行的方向即逆时针方向排列,则此域值为 TRUE,如果与四指绕行方向相反即顺时针方向排列,则域值为FALSE。比如,在XOY平面的一个平面,当 ccw 为TRUE时,平面正面面向屏幕;当为FALSE时,所画平面背面面向屏幕。 这个域和solid域共同决定了构建的表面是否两面都能看到。 4.3

12、 4.3 构造空间平面集合造型构造空间平面集合造型(12) solid 指定用户是否能看见表面的背面。默认情况下,该域值为 TRUE,表明构建表面的正面,即在ccw 中逆时针绕行构建的表面的正方向确定的表面,如果设定为FALSE,则也能够看到背面。在构建表面时,应当根据需要设定这个域的域值,如果并非要使一个平面的两个面都可见,比如,构建一个封闭的多面体,则内部的面没有必要可见,则应该取默认值,以减少浏览器计算的负担。 (13) Convex Convex 设定所构建的表面是凸的还是凹的。如果取 TRUE,则表面是凸的,否则,表面为凹的。多数浏览器可以优化运算过程,不必设置这个域。 4.3 4.

13、3 构造空间平面集合造型构造空间平面集合造型(14) creaseAngle 确定一个转折角,当相邻两个表面的夹角小于这个角度的时候,则相邻两表面间的边界平滑过渡,即棱角看起来不那么尖锐。例例3 3 构造平面集合造型构造平面集合造型思考:将colorPerVertex属性改为 FALSE分析下列程序,找出对应各个顶点的着色分析下列程序,找出对应各个顶点的着色的规律,再分析底面的着色分布。的规律,再分析底面的着色分布。每个面的法向量是指向外面;Color 域为每个索引顶点着色分别是:白、黄、红、蓝、绿底面各顶点着色的顺序由colorIndex确定,分别为:白、黄、红、绿,对应的索引值为:0 1

14、2 44.4 4.4 创建复杂表面的方法创建复杂表面的方法对于一些的造型,比如山峦起伏的景象如果用前面的节点组合构造,能够想象到要用许多个节点,并且还要考虑到坐标系的变换等一系列的问题。在VRML中,解决类似于这样的问题有对应的节点,称为地表节点节点 。地表节点的基本使用在很大程度上使得那些表面凹凸不平的造型的创建得以简化。 4.4 创建复杂表面的方法地表节点也称为,是 geometry域的节点域值,它可以用来描述地表特征,比如高山、丘陵、平地等地表面的不规则变化。 构建的是将某个要描述的地表区域分割成许多,定义网格的数目、长度和宽度,最后定义高度,就可以描述要表达的地表的表面形状。 4.4

15、4.4 创建复杂表面的方法创建复杂表面的方法4.4 4.4 创建复杂表面的方法创建复杂表面的方法 X方向上的顶点数,不能为负值。这个值相当于在X方向上所取的坐标点数目。 X方向的顶点之间的距离,不能为负值。这个值相当于在X方向上相邻的两个坐标点之间的间距。 Z方向上的顶点数,不能为负值。这个值相当于在Z方向上所取的坐标点数目。 Z方向的顶点之间的距离,不能为负值。这个值相当于在Z方向上相邻的两个坐标点之间的间距。上面四个域值共同决定了在浏览器中 XOZ 平面上的网格。显然,网格的数目等于(xDimension-1)和 (zDimension-1)的乘积。在建模的时候应该注意这一点。 4.4 创

16、建复杂表面的方法 定义对应于前面的顶点一系列的高度值(即Y坐标值)。需要注意的是,这是一个Y值的列表,按行排列,依次每个值对应xDimension的每个顶点值。在书写的时候是依次逗号或者空格隔开的一串数值。比如,X、Z方向各取3个点,意即xDimension 和zDimension均等于3,形成有四个格子的网格。height 应该对应为 9 个数值:h1、h2、h3、h4、h5、h6、h7、h8、h9。则 h1、h2、h3对应第一行的x1、x2、x3。依次类推。4.4 创建复杂表面的方法 域值是一个 Color 节点,如果想为每个四边形或每个顶点添加颜色,可以使用这个节点设置一个颜色列表。 需

17、要注意的是,如果 colorPerVertex 域是 TRUE,表明给网格即每个四边形着色,那就必须提供至少(xDimension-1)*(zDimension-1)种颜色。如果 colorPerVertex 域值是FALSE,是给每个顶点着色,而网格上的颜色是顶点之间颜色的过渡,那就需要列表提供xDimension*zDimension种颜色。 4.4 创建复杂表面的方法 确定是否为每个顶点还是为每个四边形添加颜色。TRUE 表示是为每个顶点着色, 而FALSE则为每个四边形添加颜色。这个域值和 color域是相关的。如果color 域没有设置颜色,域是空的,则 colorPerVertex

18、无论选取什么值均可以忽略。如果 color域指定了一个Color节点,设置了颜色列表,这个域值才起作用。 表面法线向量是用来确定表面的朝向的,如果希望为网格定义法向量,可包含一个向量节点Normal,该节点包含一个vector域,用来给定向量值。如果没有定义法向量,浏览器会自动生成。 4.4 创建复杂表面的方法 包含一个TextureCoordinate节点,用来将一个贴到网格上。注意同 IndexFaceSet 节点情况类似,在 TextureCoordinate节点的域 point 中,是一个二维坐标值(s,t),意味着是纹理坐标。 例4 构造复杂造型4.5 构造空间挤出造型在VRML中,

19、可以用Extrusion来解决问题。挤出节点也称为“”,相当于以一个2D图形为边界、且沿一个预先设计好的路径向一个方向挤压而形成的造型。 4.5 4.5 构造空间挤出造型构造空间挤出造型4.5 4.5 构造空间挤出造型构造空间挤出造型 该域实际上定义了一条沿挤压方向上的主干线,通称为龙骨折线。它是由一系列三维点构成的,依次连接相邻点就得到一条折线,挤压就沿着这条线进行。根据二维形状 crossSection确定的挤压轮廓得到所需要的造型。该域的坐标值在节点的局部坐标系上定义。 由一系列二维坐标点依次连接相邻的坐标点来定义一个二维折线,作为挤压过程中的。该折线在节点的局部坐标系 XOZ 平面中定

20、义,二维的坐标的第一个数是X坐标,另一个是Z坐标。因而这个二维折线是一个2D图形。二维坐标取X、Z两个坐标值,只是借助于该坐标描述挤压的二维轮廓。这个域和 spine 域共同决定了最终挤压成型的造型的轮廓和走向。 4.5 构造空间挤出造型4.5 4.5 构造空间挤出造型构造空间挤出造型 物体造型的轮廓在挤压的过程中是变化的,比如花瓶,有些地方凸出,有些地方凹下。这个域定义二维折线的尺度沿 spine挤压过程中缩放变换参数。在节点局部坐标系的XZ平面内,尺度变换以平面的坐标原点为参照点,值的第一个数对应X轴的变换,第二个数对应Z轴。在这里,X 和 Z依然应该同上面 crossSection 一样

21、理解。尺度变换参数值必须大于零。一般该域值的个数与 spine 域一样,顺序对应着每个龙骨构造点处的二维折线的尺度变换。如果该域只指定了一个值,每一处的二维折线都使用这个值进行变换。这个域值改变 2D 图形的尺寸,使得在挤出过程中根据需要变化,得到所需要的造型。 4.5 4.5 构造空间挤出造型构造空间挤出造型 该域定义三维旋转变换参数。一般该域值的个数与 spine 域一样,顺序对应着每个龙骨构造点处的二维折线的旋转变换。如果该域只指定了一个值,每一处的二维折线都使用这个值进行变换。注意这个旋转变换并不在节点的局部坐标系上定义,而是对应着 crossSection 的方位变换。 4.5 构造

22、空间挤出造型 该域确定挤压成型的造型是否有起始端面(对应spine 的第一个值)。如果 beginCap设置为FALSE,则不产生起始端面,否则,起始端面是将 crossSection 域中的二维折线首尾相连构成的多边形表面。 该域确定挤压成型的造型是否有终止端面(对应 spine的最后一个值)。如果endCap设置为FALSE,则不产生终止端面,否则,终止端面是将 crossSection 域中的二维折线首尾相连构成的多边形表面。 4.5 4.5 构造空间挤出造型构造空间挤出造型 Extrusion节点自动生成几何面的法线,该域决定法线方向与二维折线走向的关系。当ccw= TRUE 时,二维

23、折线走向(由折点定义的顺序指定)、龙骨走向(由龙骨构造点定义的顺序指定)与法线方向应成右手螺旋关系;反之,当 ccwFALSE 时,二维折线走向、龙骨走向与 法线方向应成左手螺旋关系。如果域 solid 设置为 TRUE,只有逆着法线方向观察,才可以看到几何面。 对于一个几何体的面,法线方向的表面被认为是“外”表面,与此相反的是“内”表面,当 solid 域为 TRUE 时,只显示“外”表面,“内”表面并不显示着色。当几何体是闭合的时候,该域用于浏览器实现优化,因为内表面不用生成,节省了浏览器的计算时间。如果 solid设置为FALSE,则意味着“内”、“外”表面都要显示,浏览器必须计算两个表面,这时如果使用材质、贴图等等,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论