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

下载本文档

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

文档简介

1、第三章虚拟现实技术第三章虚拟现实技术VRML的空间造型3.1 空间变换 利用Transform (变换)节点可以在VRML空间创建新的坐标系,可以随意translation(平移)、rotation(旋转)和scale(缩放)。 VRML的空间造型3.1 空间变换 利用Transfor坐标变换语法坐标变换语法虚拟现实技术课件第3、4章DEF和USEVRML提供给我们两个避免重复劳动的工具: DEF和USEDEF为节点定义名称USE重新使用节点这两个说明符可以放在任何允许节点名的地方。在定义了节点名字之后,就可在同一文件中用USE语句通过名字引用它。USE语句并不是复制该节点,而是把该节点再次插

2、入它所在的场景图。节点名只在本文件范围内有效。DEF和USEVRML提供给我们两个避免重复劳动的工具: D例3_1 使用相同的外部特征创建一个蓝色立方体和一个蓝色圆柱例3_1 使用相同的外部特征创建一个蓝色立方体和一个蓝色圆柱思考:在上述基础上设计图示的场景图。提示:利用transform语句,将圆锥的y坐标上移。思考:在上述基础上设计图示的场景图。提示:例3-2 制作茶几本例采用一个圆柱体和两个立方体构成一个简易茶几,其中两个立方体分别沿X轴的正反方向移动了一段距离,分别沿Z坐标轴旋转了一定的角度。如图:例3-2 制作茶几本例采用一个圆柱体和两个立方体构成一个制作茶几环境光线漫反射镜面反射发

3、光强度制作茶几环境光线漫反射镜面反射发光强度制作茶几接上页:茶几的另一条腿使用了use语句,引用了已定义的茶几腿的全部特性。茶几的桌面形状为椭圆形,所以使用了scale语句,在X方向的比例为1.5,其它方向的比例为1.透明度制作茶几接上页:茶几的桌面形状为椭圆形,所以使用了scale练习:制作书柜练习:制作书柜VRML的空间造型3.2 文本造型Text(文本)节点用来创建文本造型,通常使用Shape节点的geometry域的域值。VRML文本造型是一个没有厚度的平面造型,但也可以具有不同的外观和材质属性。 VRML的空间造型3.2 文本造型Text(文本)节点用Text节点语法:Text ex

4、posedField MFString string exposedFied SFNode fontStyle NULL expvsedField SFFloat maxExtent exposedField MFFlaat length Text节点语法:TextFantStyte节点语法:FantStyle field SFFloat size 1.0 field SFString family SERIF“ #SANS,TYPEWRITER field SFString style PLANE #BLOD,ITALIC field SFBool horizantal TRUE field

5、 SFBool leftToRight TRUE field SFBool topToBottom TRUE field SFString language “ field MFString justify BEGIN #MIDDLE,END, FIRST field SFFLoat spacing 1.0FantStyte节点语法:FantStyle 例3_3 文本节点例3_3 文本节点本例由一个文本节点和一个立方体节点构成,其中文本节点是主节点,立方体是子节点,而且造型有空间变换,因此使用了children语句。运行结果如下图:本例由一个文本节点和一个立方体节点构成,其中文本节点是主节点思

6、考:请修改原程序,使之运行的结果如下图所示:思考:请修改原程序,使之运行的结果如下图所示:例3-4 使用内联节点可以使用插入内联节点的方法,将指定的VRML程序插入到当前场景。内联节点例3-4 使用内联节点可以使用插入内联节点的方法,将指定例3-4a 请修改上述程序,呈现以下场景图 例3-4a 请修改上述程序,呈现以下场景图 作业:设计如图所示的桌子的空间造型作业:设计如图所示的桌子的空间造型再见再见第四章 复杂造型虚拟现实技术第四章 复杂造型虚拟现实技术第4章 场景中的复杂造型学习目标 1了解在场景中构建复杂造型的基本方法2掌握点、线以及面集合节点的使用及其基本域值的基本含义3会使用地表节点

7、创建相应的造型4掌握挤出节点创建复杂造型的建模方法第4章 场景中的复杂造型学习目标 几何节点类型几何节点类型4.1 构造离散点的集合造型 点集合节点PointSet 在VRML虚拟环境中创建离散的点,用点集合节点PointSet。点集合节点PointSet是geometry域的一个域值,其作用是在空间构造、定义一系列与色彩相关联的点的集合。 使用语法 PointSet coord NULL # SFNode color NULL # SFNode 4.1 构造离散点的集合造型 点集合节点PointSet 4.2域值说明 coord 包含一个 Coordinate 节点,用来给出一些列空间坐标点

8、。 color 包含一个Color节点,Color节点包含一个color域,使空间的点与颜色联系起来。 4.2域值说明 coord 包含一个 Coordinat例1 点的集合#VRML V2.0 utf8Shape appearance Appearance geometry PointSet coord Coordinate point 0 2 0 , -1 1 0 , 0 1 0, 1 1 0 , -2 0 0 , -1 0 0, 0 0 0 , 1 0 0 , 2 0 0 , -1 -1 0, 0 -1 0, 1 -1 0, 0 -2 0 color Color color 1 1 1,

9、 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 点的集合#VRML V2.0 utf8运行效果图4.3 构造空间折线造型空间的任意两个点可以构成一根直线,多根线在空间中相互连接可以构成各种封闭线或者折线。在VRML中,也是采用这样的思想构造空间的直线段、折线或者封闭线。 节点IndexedLineSet用来构建各种线造型。IndexedLineSet 节点是geometry域的值,共有5个域,以及两个描述事件的接口。 4.3 构造空间折线造型空间的任意两个点可

10、以构成一根直线,多4.3.1 构造空间折线造型4.3.1 构造空间折线造型2 域值说明 coord 用来提供空间线段的顶点的点坐标。其域值是Coordinate节点,Coordinate 节点的域 point给出这些点坐标的列表。这些点的列表按照先后顺序从0开始每一个分配一个索引值,后面的域 coordIndex引用的时候直接针对索引值。 coordIndex 对应Coordinate节点的 point域的坐标列表的一个索引列表,按给定的索引顺序连接坐标点形成线段或者折线。2 域值说明 coord 用来提供空间线段的顶点的点坐标2域值说明 color 域值是 Color 节点,Color 节点

11、的域值也是 color,它列出了用于作为每个线段的顶点的坐标点着色的一个颜色列表。这些颜色值也同 coord情况一样按照先后顺序从 0 开始分配一个索引,以后按照索引引用相应的颜色。 colorIndex 对应Color节点的 color 域值的索引列表。按照这里给出的顺序为线段的顶点着色或者线段着色。如果是给顶点着色,在两个顶点之间的线段的颜色是顶点颜色的过渡色。 colorPerVertex 如果在color域有一个Color节点给出了颜色列表,则这个域的域值指明是把对应的颜色赋给每个顶点还是每条折线。域值设置为TRUE则表示为线段的顶点着色;如果域值设置为FALSE则表示为线段着色。 2

12、域值说明 color 域值是 Color 节点,Co例2. 构造图示的五面体显示效果图例2. 构造图示的五面体显示效果图例2. 构造图示的五面体坐标值和索引 按索引构建封闭线框 例2. 构造图示的五面体坐标值和索引 按索引构建封闭线框 4.3 构造空间平面集合造型 VRML中构造空间的平面集合用节点 IndexedFaceSet,面集合节点 IndexedFaceSet 同样是Shape 节点中geometry域的域值。 一系列空间点按一定关系集合构建VRML的平面以及平面的集合。创建的平面的样子完全由各个顶点确定。 4.3 构造空间平面集合造型 VRML中构造空间的平面集4.3 构造空间平面

13、集合造型4.3 构造空间平面集合造型4.3 构造空间平面集合造型2域值说明 coord 这个域的用法同线集合节点 IndexedLineSet 情况类似,只是这个域用来提供空间平面多边形的顶点的点坐标。其域值是Coordinate节点,Coordinate节点的域 point 给出这些点坐标的列表。这些点的列表按照先后顺序从0开始每一个分配一个索引值,用域coordIndex直接针对索引值引用各个坐标点。 coordIndex 对应 Coordinate 节点的 point 域的坐标列表的一个索引列表,按给定的索引顺序连接坐标点形成空间的多边形。由于其是多域值的,也就相当于提供了一个索引列表,

14、要创建的每个多边形通过一组指向Coordinate节点中的顶点索引来指明。 4.3 构造空间平面集合造型2域值说明 4.3 构造空间平面集合造型 texCoord 这个域包含一个 TextureCoordinate 节点,指明将一幅纹理图片映射到面集表面上。 texCoordIndex 对应TextureCoordinate节点的索引列表。 color 域值是 Color 节点,Color 节点的域值也是 color,它列出了用于为每个面的顶点的坐标点着色的一个颜色列表。这些颜色值也同 coord 情况一样按照先后顺序从 0 开始分配一个索引,以后按照索引引用相应的颜色。它列出了用于为每个顶点

15、或每个面着色的颜色列表。 colorIndex对应Color节点的 color 域值的索引列表。按照这里给出的顺序为面的顶点着色或者面本身着色。 4.3 构造空间平面集合造型 texCoord 这个域包4.3 构造空间平面集合造型 colorPerVertex 如果在color域有一个Color节点给出了颜色列表,则这个域的域值指明是把对应的颜色赋给每个顶点,还是赋给每个表面。域值设置为TRUE则表示为平面的顶点着色;如果域值设置为FALSE则表示为平面着色。 normal 这个域含一个Normal 节点,给出了给表面指定法线向量的值。法向量并不是必须指定的,不指定情况下,浏览器会计算缺省的法

16、向向量。这里指定的法线向量是一系列的多组值,每一组值对应了一个从0开始的索引,针对每一个构造面。 normalIndex 对应于Normal节点的索引的列表,由索引的排列顺序决定了表面法线向量的方向排列。4.3 构造空间平面集合造型 colorPerVerte4.3 构造空间平面集合造型 normalPerVertex 指明是否已为每个顶点还是给每个表面确定了法向量。如果 normal域为空,该域被忽略。如果 normalPerVertex域为TRUE,则给每个顶点确定法向量。反之,如果 normalPerVertex域为FALSE,则表示给每个表面确定法向量。 (11) ccw 按照右手螺旋

17、法则指明每个表面上的顶点的排列走向。当确定了拇指方向为正方向时,构成表面的各顶点遵从四指绕行的方向即逆时针方向排列,则此域值为 TRUE,如果与四指绕行方向相反即顺时针方向排列,则域值为FALSE。比如,在XOY平面的一个平面,当 ccw 为TRUE时,平面正面面向屏幕;当为FALSE时,所画平面背面面向屏幕。 这个域和solid域共同决定了构建的表面是否两面都能看到。 4.3 构造空间平面集合造型 normalPerVert4.3 构造空间平面集合造型(12) solid 指定用户是否能看见表面的背面。默认情况下,该域值为 TRUE,表明构建表面的正面,即在ccw 中逆时针绕行构建的表面的正

18、方向确定的表面,如果设定为FALSE,则也能够看到背面。在构建表面时,应当根据需要设定这个域的域值,如果并非要使一个平面的两个面都可见,比如,构建一个封闭的多面体,则内部的面没有必要可见,则应该取默认值,以减少浏览器计算的负担。 (13) Convex 设定所构建的表面是凸的还是凹的。如果取 TRUE,则表面是凸的,否则,表面为凹的。多数浏览器可以优化运算过程,不必设置这个域。 4.3 构造空间平面集合造型(12) solid 指定用户是4.3 构造空间平面集合造型(14) creaseAngle 确定一个转折角,当相邻两个表面的夹角小于这个角度的时候,则相邻两表面间的边界平滑过渡,即棱角看起

19、来不那么尖锐。4.3 构造空间平面集合造型(14) creaseAngl例3 构造平面集合造型思考:将colorPerVertex属性改为 FALSE例3 构造平面集合造型思考:将colorPerVertex属分析下列程序,找出对应各个顶点的着色的规律,再分析底面的着色分布。每个面的法向量是指向外面;Color 域为每个索引顶点着色分别是:白、黄、红、蓝、绿底面各顶点着色的顺序由colorIndex确定,分别为:白、黄、红、绿,对应的索引值为:0 1 2 4分析下列程序,找出对应各个顶点的着色的规律,再分析底面的着色4.4 创建复杂表面的方法对于一些特别复杂的造型,比如山峦起伏的景象如果用前面

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

21、地表的表面形状。 4.4 创建复杂表面的方法地表节点ElevationGrid4.4 创建复杂表面的方法4.4 创建复杂表面的方法4.4 创建复杂表面的方法 2域值说明 xDimension X方向上的顶点数,不能为负值。这个值相当于在X方向上所取的坐标点数目。 XSpacing X方向的顶点之间的距离,不能为负值。这个值相当于在X方向上相邻的两个坐标点之间的间距。 zDimension Z方向上的顶点数,不能为负值。这个值相当于在Z方向上所取的坐标点数目。 zSpacing Z方向的顶点之间的距离,不能为负值。这个值相当于在Z方向上相邻的两个坐标点之间的间距。上面四个域值共同决定了在浏览器中

22、 XOZ 平面上的网格。显然,网格的数目等于(xDimension-1)和 (zDimension-1)的乘积。在建模的时候应该注意这一点。 4.4 创建复杂表面的方法 2域值说明 4.4 创建复杂表面的方法 height 定义对应于前面的顶点一系列的高度值(即Y坐标值)。需要注意的是,这是一个Y值的列表,按行排列,依次每个值对应xDimension的每个顶点值。在书写的时候是依次逗号或者空格隔开的一串数值。比如,X、Z方向各取3个点,意即xDimension 和zDimension均等于3,形成有四个格子的网格。height 应该对应为 9 个数值:h1、h2、h3、h4、h5、h6、h7、

23、h8、h9。则 h1、h2、h3对应第一行的x1、x2、x3。依次类推。4.4 创建复杂表面的方法 height 定义对应于前面4.4 创建复杂表面的方法 color 域值是一个 Color 节点,如果想为每个四边形或每个顶点添加颜色,可以使用这个节点设置一个颜色列表。 需要注意的是,如果 colorPerVertex 域是 TRUE,表明给网格即每个四边形着色,那就必须提供至少(xDimension-1)*(zDimension-1)种颜色。如果 colorPerVertex 域值是FALSE,是给每个顶点着色,而网格上的颜色是顶点之间颜色的过渡,那就需要列表提供xDimension*zDi

24、mension种颜色。 4.4 创建复杂表面的方法 color 域值是一个 Co4.4 创建复杂表面的方法 colorPerVertex 确定是否为每个顶点还是为每个四边形添加颜色。TRUE 表示是为每个顶点着色, 而FALSE则为每个四边形添加颜色。这个域值和 color域是相关的。如果color 域没有设置颜色,域是空的,则 colorPerVertex无论选取什么值均可以忽略。如果 color域指定了一个Color节点,设置了颜色列表,这个域值才起作用。 normal 表面法线向量是用来确定表面的朝向的,如果希望为网格定义法向量,可包含一个向量节点Normal,该节点包含一个vector

25、域,用来给定向量值。如果没有定义法向量,浏览器会自动生成。 4.4 创建复杂表面的方法 colorPerVertex4.4 创建复杂表面的方法 texCoord 包含一个TextureCoordinate节点,用来将一个纹理贴到网格上。注意同 IndexFaceSet 节点情况类似,在 TextureCoordinate节点的域 point 中,是一个二维坐标值(s,t),意味着是纹理坐标。 4.4 创建复杂表面的方法 texCoord 包含一个T例4 构造复杂造型例4 构造复杂造型4.5 构造空间挤出造型在VRML中,可以用挤出节点Extrusion来解决问题。挤出节点也称为“成型节点”,相

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

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

28、第二个数对应Z轴。在这里,X 和 Z依然应该同上面 crossSection 一样理解。尺度变换参数值必须大于零。一般该域值的个数与 spine 域一样,顺序对应着每个龙骨构造点处的二维折线的尺度变换。如果该域只指定了一个值,每一处的二维折线都使用这个值进行变换。这个域值改变 2D 图形的尺寸,使得在挤出过程中根据需要变化,得到所需要的造型。 4.5 构造空间挤出造型 scale 物体造型的轮廓在挤4.5 构造空间挤出造型 orientation 该域定义三维旋转变换参数。一般该域值的个数与 spine 域一样,顺序对应着每个龙骨构造点处的二维折线的旋转变换。如果该域只指定了一个值,每一处的二

29、维折线都使用这个值进行变换。注意这个旋转变换并不在节点的局部坐标系上定义,而是对应着 crossSection 的方位变换。 4.5 构造空间挤出造型 orientation 该域定4.5 构造空间挤出造型 beginCap 该域确定挤压成型的造型是否有起始端面(对应spine 的第一个值)。如果 beginCap设置为FALSE,则不产生起始端面,否则,起始端面是将 crossSection 域中的二维折线首尾相连构成的多边形表面。 endCap 该域确定挤压成型的造型是否有终止端面(对应 spine的最后一个值)。如果endCap设置为FALSE,则不产生终止端面,否则,终止端面是将 cr

30、ossSection 域中的二维折线首尾相连构成的多边形表面。 4.5 构造空间挤出造型 beginCap 该域确定挤压4.5 构造空间挤出造型 ccw Extrusion节点自动生成几何面的法线,该域决定法线方向与二维折线走向的关系。当ccw= TRUE 时,二维折线走向(由折点定义的顺序指定)、龙骨走向(由龙骨构造点定义的顺序指定)与法线方向应成右手螺旋关系;反之,当 ccwFALSE 时,二维折线走向、龙骨走向与 法线方向应成左手螺旋关系。如果域 solid 设置为 TRUE,只有逆着法线方向观察,才可以看到几何面。 solid 对于一个几何体的面,法线方向的表面被认为是“外”表面,与此相反的是“内”表面,当 solid 域为 TRUE 时,只显示“外”表面,“内”表面并不显示着色。当几何体是闭合的时候,该域用于浏览器实现优化,因为内表面不用生成,节省了浏览器的计算时间。如果 solid设置为FALSE,则意味着“内”、“外

温馨提示

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

评论

0/150

提交评论