资源描述
第四讲 VRML高级三维模型,大纲,造型的编组与素材调用 Group DEF/USE 造型的外观设计 Material节点 创建文本造型 高级三维模型 点集造型节点 线集造型节点 面集造型节点 挤出造型节点 网格标高造型节点 作业,造型的编组与素材调用,造型的编组和素材调用 VRML提供了一类具有编组功能的节点,可以将多个造型作为自己的子节点组合成一个整体,一起进行平移、旋转、缩放等操作: Group编组节点 Transform变换节点 Inline内联结点 Anchor超级链接节点 Switch选择开关结点 Billboard布告牌节点 LOD层次细节控制节点,造型的编组与素材调用,Group编组节点 编组节点可以包含任意数目的子节点,将多个简单造型组合成一组复杂造型,作为一个整体进行设计、命名和调用。 语法: Group children #exposedField MFNode bboxCenter 0.0 0.0 0.0 #SFVec3f bboxsize - 1 -1 -1 #SFVec3f addChildren #eventIn MFNode removeChildren #eventIn MFNode ,造型的编组与素材调用,children域 用于设定包含在该组结点中的所有子节点,通常为Shape造型节点、Transform坐标变换节点及下一层的Group结点,组节点的数目无限制。 默认为空列表。 bboxCenter域 用于设定包围该组节点所有造型的包围盒的中心点坐标。 默认值为 (0 0 0),中心点在原点。 bboxSize域 设定包围在当前包围盒的尺寸。 默认值为(-1 -1 -1),由系统设置。 addChildren入事件用于将指定节点加入到该组节点列表中。 removeChildren入事件用于将指定节点从该组节点列表中删除。,造型的编组与素材调用,节点名的定义与重用 在虚拟空间的场景中,为了减少源代码的编写量,提高效率,对重复的造型,通过可以先定义,后重复使用该定义。 编写简练; 减少程序代码; 层次清晰; 结构合理; DEF 节点名 节点类型 USE 节点名 节点名可以由任何字母和数字开头;不能包括单引号、双引号、数字运算或英镑符号。 定义的节点只在本文件范围内调用有效,一旦对被定义的源节点的域值进行修改,所有引用节点的域值都随之改变。 举例:desk.wrl,造型的外观设计,Appearance节点 立体几何造型的外观设计 为造型添加颜色; 设置有关材质的属性,创建出金属、玻璃、石头等属性: 透明度 反光度 发光度 为造型添加纹理贴图,增强造型的真实感。,造型的外观设计,语法: Appearance material NULL #exposedField SFNode texture NULL #exposedField SFNode textureTransform NULL #exposedField SFNode 域值说明: material域用于设定立体造型外观的材质属性。 texture域用于设定立体造型表面静态或动态的纹理贴图。 textureTransform域用于对使用的纹理贴图进行坐标变换。,造型的外观设计,Material材质节点 当节点为NULL时, 即apperance Appearance material NULL或 apperance Appearance 表示相关的几何体本身为发白光的材质,忽略周围的所有光照,造型为纯白色,无任何亮度对比,无立体感。 当节点为空时, 即appearance Appearancematrial Material 表示一个默认材质结点,采取默认的光照,呈现浅灰色,有亮度对比和立体感。 举例,造型的外观设计,Material节点 语法 Material diffuseColor 0.8 0.8 0.8 #exposedField SFColor ambientIntensify 0.2 #exposedField SFFlot specularColor 0 0 0 # exposedField SFColor emissiveColor 0 0 0 # exposedField SFColor shininess 0.2 #exposedField SFFlot transparency 0 #exposedField SFFlot ,造型的外观设计,diffuseColor域 设定物体的漫反射颜色:当光照射在物体表面时,物体表面向各个方向反射的基本色彩。 域值由三个浮点值组成,分别代表红、绿、蓝三原色(RGB)。 默认值为0.8 0.8 0.8,浅灰色。 ambientIntensify域 设定有多少环境光线被物体表面反射。 环境光各向同性,以diffuseColor*ambientIntensify来计算。 默认值为0.2。,造型的外观设计,specularColor域 设定镜面反射光的颜色。 入射角等于反射角是镜面反射的基本原理。 设置了镜面反射,会因观察角度变化感受到强弱不同的反射效果。 默认值为0 0 0 ,反射光为黑色。 emmisiveColor域 设定发光物体产生光的颜色。 默认值为0 0 0,表示不发光。,造型的外观设计,shininess域 设定物体表面的亮度。 取值范围从漫反射表面的0到高度抛光表面的1; 较小的取值表示像纤维材质; 较大的取值表示像金属材质。 默认值为 0.2。 Transparency域 设定物体的透明度。 取值范围从不透明的0到完全透明的1。 默认值为0.0,表示不透明。,造型的外观设计,创建文本造型,文本(Text)是场景中的一种造型,但不是几何造型。 VRML的文本对场景进行说明、信息提示和超级链接。 性质: 有不同的外观和材质属性; 可以进行纹理包装; 它是一个没有厚度的平面造型,不具备三维立体特征。 Text语法 Text string #exposedField MFString length #exposedField MFFlot maxExtent 0.0 #exposed SFFLot fontStyle NULL #exposed SFNode ,创建文本造型,string域 设定要创建的文本内容。 域值可以是一行文本,也可以是多行文本。 每一行的文本都要包含在双引号内,多行文本要用逗号或空格分隔,或者分行书写,在引号内的回车符、换行符无效。 行间距由FontStyle文本外观节点的Spacing域的域值设定。 默认值为空列表,不创建任何文本。 例:“Hello”,”I am a Student” “Welcom To ”,“Xiamen Univ.” ,创建文本造型,length域 域值为每一行文本造型设定长度。 长度以VRML长度单位计算。 根据设定的长度,系统自动改变字符的尺寸或字符间距来满足设定的长度。 默认值为空列表,由系统自动设定。 maxExtent域 域值设定任意行或列文本的最大有效长度。 当某一行文本造型的长度大于它的域值时,系统将通过改变字符尺寸和字符间距将其压缩到其域值所设定的最大有效长度内。 默认值为0.0,不对长度进行最大限制。 注意:其他没被压缩行的字符间距与被压缩行的字符间距相同。,创建文本造型,fontStyle域 设定文本造型的外观特征。 域值为NULL或一个FontStyle结点。 当域值NULL时,表示使用默认的外观特征: 左对齐; 水平从左到右排列; 垂直方面从上到下排列; 文本高度为1.0; 文本间距为1.0; 字体为Serif。,创建文本造型,FontStyle节点 用于设定文本的语种、字符的大小和形状、字体的风格以及文本的对齐方式、排列方式,行间距或列间距等。 语法: FontStyle family “SERIF” #SFString size 1.0 #SFFloat spacing 1.0 #SFFloat style “PLAIN” #SFString Horizontal TRUE #SFBool justify “BEGIN” #MFString leftToRight TRUE #SFBool topToBottom TRUE #SFBool language “” #SFString ,创建文本造型,family域 设定文本造型的字符集。 字符集有三种: “SERIF”,它是一种细线变宽字体,系统选用Times New Roman字体; “SANS”,它是一种简单变宽字体,系统选用Helvertica字体; “TYPEWRITER”,它是一种等宽字体,系统选用Coutier字体。 默认值为”SERIF”。 size域 设定文本字符的尺寸; 水平排列时,设定文本高度;垂直排列时,设定文本宽度; 默认时为1.0。,创建文本造型,spacing域 设定文本字符的行间距。 当水平排列时,为行间距; 当垂直排列时,为列间距; 默认值为1.0。 style域 设定文本造型的字体风格; 有四种:“PLAIN” 普通体;“BOLD”粗体; “ITALIC”斜体; “BOLDITALIC” 加粗斜体。 默认值为 “PLAIN”。,创建文本造型,Horizontal域 设置文本造型的主排列方向:水平或垂直; 默认值为TRUE,表示水平方向是主排列方向、垂直方向是次排列方向。 Justify域 表示文本造型中字符块的对齐方式; 域值为含有一个或两个域值的列表; 有两个域值时,用空格或逗号分隔; 第一个为主对齐方式;第二个为次对齐方式; 当水平排列时,主对齐方式为水平方向,次对齐方式为垂直方向; 当垂直排列时,主对齐方式为垂直方向,次对齐方式为水平方向。 有四种类型:“BEGIN”左对齐;“MIDDLE”居中对齐;“END”右对齐;“FIRST”; 默认值为 “BEGIN”,“FIRST” 。,创建文本造型,leftToRight域 设定文本造型的字符是否从左到右排列; 默认值TRUE,从左到右。 topToBottom域 设定文本造型中的文本是否从上到下排列; 默认值为TRUE,从上到下。 Language域 设定文本造型使用的语言; 以两个字母表示,有不同语言编码的地区在语言代码后加连字符和地区编码: ar(阿拉伯);de(德语);de_DE(德语德国);de_CH(德语瑞士);en(英语);en_US(英语美国);en_GB(英语英国);hi(印度);jp(日语);ru(俄语);sa(梵语);zh(中文);zh_TW(中文繁体);zh_CN(中文简体);,创建文本造型,举例:例3-39、3-40、3-41、3-42、3-43,高级三维模型,PointSet点集节点 VRML中点的造型是用X、Y、Z三维坐标定位,大小为一个像素的空间点。 点集就是不同位置空间点的集合。 用途: 模拟天上闪烁的繁星和远处点点的灯光; 特性: 不受光源影响; 不能粘贴纹理; 不能进行碰撞检测;,高级三维模型,语法: PointSet coord NULL #exposedField SFNode color NULL #exposedField SFNode coord 域设定离散点的三维坐标位置; color 域设定空间点的颜色;,高级三维模型,当域coord 可取值NULL,表示无任何点造型。 当域coord取值Coordinate坐标节点时,表示对点的坐标进行定位。 Coordinate坐标节点语法 Coordinate point #exposedField MFVec3f Point域的域值提供了一张三维坐标列表,用来设定一个或一组空间点的XYZ坐标。 三个数一组,用空格分隔;组与组之间用逗号分隔。 如 point 1 1 1, 1 2 0, 3 4 5 ,高级三维模型,如图: 垂直三角锥体有4个顶点 geometry Pointset coord Coordinate point 0 0 0 2 0 0 0 2 0 0 0 2 ,高级三维模型,当color域取值NULL,表示不对空间点着色; 当color域取值Color节点时,表示设定每个空间点的颜色; Color节点语法: Color color #exposedField MFColor Color域的域值设定了一系列的颜色列表。 例3-18,作业1,自由练习: 编组节点、文本造型、点集节点 作业:设计一个文本造型如图所示。,作业提交注意:,上传到:学院教学FTP:/上传作业-夏侯建兵-虚拟现实作业文件夹中。 作业提交的文件夹命名规则:学号_姓名_作业序号。 例:30920078102589_白旋旋_第xx讲01(作业一)/02(作业二) 说明:请大家上传作业时统一用压缩文件打包上传。,
展开阅读全文