您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第7章 VRML(虚拟现实建模语音)纹理映射
第七章纹理映射通过Material节点可以控制造型的外观材质,但其只是宏观效果,对一些细节并不能表现出来。而这些视觉细节就是通过纹理来实现的。本章将介绍纹理映射和添加纹理映射的方法。7.1纹理映射相关知识纹理映射是一种用来加入细节的技术,其通过将纹理图根据几何体的外形,按一定规则映射到物体的表面。使用纹理能使物体更具真实感,产生如木纹、大理石、水面等效果。纹理实际上就是一个位图。它并不改变造型的几何形状,而是带给浏览者一种视觉效果。纹理图的使用可以在不增加多边形的情况下提高渲染质量,它是在VRML等3D技术中广泛使用的一种方法。纹理映射可以应用在许多方面。例如,可以让一个简单的方块具有大理石表面的花纹,而给人一种大理石的感觉;也可以在三维地形图上添加合适的草地、泥土或雪地的纹理,形成一座具有真实感的山脉。7.1纹理映射相关知识从纹理上,我们可以清楚看到其细节,没必要为每一个木纹,每一块砖而定义复杂的造型。在VRML中,能用来作创建纹理图的格式有JPEG,GIF,PNG和MPEG。JPEG格式是一种有损压缩算法,文件较小,比较合适互联网传输;它只有全彩色(RGB)的规范,没有透明图和灰度图,适合自然图片,而对含有表格、文字的图片表现不好。GIF格式是互联网上流行的图像文件格式,支持透明图。PNG格式是创作VRML的工具软件必须具备的,相对于GIF有更高的图片质量,支持单元素、双元素、三元素和四元素图像,支持透明图和灰度图,适合包含有表格、文字的图片。MPEG格式是一种用来存储高质量的电影纹理,可用来播放动画。7.2纹理节点VRML提供有三种纹理节点,ImageTexture节点、PixelTexture节点和MovieTexture节点。针对纹理还可以利用TextureTransform进行平移、缩放和旋转等变换,对于复杂的几何体还可以使用TextureCoordinate进行精确的纹理映射。7.2.1ImageTexture节点ImageTexture是图像纹理,指定了纹理映射属性,通常作为Appearance节点的texture域的域值。7.2纹理节点其节点语法如下:Imagetexture{ExposedfieldMFStringurl[]FieldSFBoolrepeatsTRUEFieldSFBoolrepeattTRUE}字段说明:Url该图片用于粘贴图片的文件名及来源位置,图片的格式可以是JPEG、PNG或GIF等图片格式。7.2纹理节点Repeats该字段值是布尔值。说明是否采用回绕方式,如果是TRUE,粘贴图片会在水平方向(S)重复填满这个几何对象的表面,此为默认值。如果是FALSE,粘贴图片只会被限制在[0,1]的范围内,在水平方向重复纹理的最后一行像素点来填满几何对象的表面。Repeatt该字段值是布尔值。说明是否采用回绕方式,如果是TRUE,粘贴图片会在垂直方向(T)重复填满这个几何对象的表面,此为默认值。如果是FALSE,粘贴图片只会被限制在[0,1]的范围内,在水平方向重复纹理的最后一行像素点来填满几何对象的表面。7.2纹理节点7.2.2PixelTexture节点PixelTexture节点是像素纹理节点,指定了纹理映射的属性,通常作为Appearance节点的texture域的值。其节点语法如下:Pixeltexture{ExposedfieldSFImageimage000FieldSFBoolrepeatsTRUEFieldSFBoolrepeattTRUE}7.2纹理节点字段说明:Image该字段指定了用来对造型进行纹理映射的纹理映像的大小和像素值。该域值的前三个必需为整数,其中第一个数值表示以像素为单位的映像宽度,第二个数值表示以像素为单位的映像的高度,第三个数值表示每一个像素的字节数。第三个值可在0,1,2,3,4这几个数中取值,其中0表示静止造型纹理,1表示灰度,2表示alpha灰度,3表示RGB颜色,4表示alphaRGB。Alpha表示象素的透明度。Repeats该字段值是布尔值。说明是否采用回绕方式,如果是TRUE,粘贴图片会在水平方向(S)重复填满这个几何对象的表面,此为默认值。如果是FALSE,粘贴图片只会被限制在[0,1]的范围内,在水平方向重复纹理的最后一行像素点来填满几何对象的表面。7.2纹理节点Repeatt该字段值是布尔值。说明是否采用回绕方式,如果是TRUE,粘贴图片会在水平方向(T)重复填满这个几何对象的表面,此为默认值。如果是FALSE,粘贴图片只会被限制在[0,1]的范围内,在垂直方向重复纹理的最后一行像素点来填满几何对象的表面。7.2.3MovieTexture节点MovieTexture节点是电影纹理,用来指定纹理映射属性。通常作为Appearance节点的texture域的值。其语法定义如下:7.2纹理节点Movietexture{ExposedfieldSFBoolloopfalseExposedfieldSFFloatspeed1.0#(-∞,+∞)ExposedfieldSFTimestarttime0#(-∞,+∞)ExposedfieldSFTimestoptime0#(-∞,+∞)ExposedfieldMFStringurl[]FieldSFBoolrepeatsTRUEFieldSFBoolrepeattTRUEEventoutSFTimeduration_changedEventoutSFBoolisactive}7.2纹理节点字段说明:loop该字段是布尔值,TRUE表示电影一直重复播放,FALSE则反之,此为默认值。Speed该字段是浮点值。当字段值为1时,为影片的正常播放速度,当字段值大于1时,影片的播放速度比正常要快,例如,为2时,则为两倍速度播放。当字段值小于1大于0时,影片的播放速度比正常速度要慢。当值小于0时,则是反向播放。当电影正在播放时,set_speed事件将被忽略。Starttime指定电影开始播放的时间。当电影正在播放时,set_startTime事件将被忽略。Stoptime指定电影停止播放的时间。如果其值小于或等于startTime,set_stopTime事件将被忽略。7.2纹理节点url该字段的功能是引入影片的文件。而影片的文件的格式是MPEG1—System(具有声音和图象)或MPEG1—Video(只有图象)。Repeats和repeatt字段参见前面。事件说明:Duration_changed该事件是eventout事件,指明电影的持续时间,影片播放的时间是以秒为单位,被送出的播放时间值和影片载入的时间值相同。-1表明电影纹理文件还没被装载。Isactive该事件是eventout事件,输出的事件值为布尔值。当影片开始播放时,输出值为TRUE,当影片停止播放时,输出值为FALSE。7.3纹理坐标节点7.3.1Texturetransform——表面材质的转换节点Texturetransform节点是Appearance节点中的Texturetransform字段的字段值,且只在Appearance节点的textureTransform字段中使用。这个节点中的操作的顺序是缩放、旋转、平移。此节点用来改变粘贴在几何对象表面的图片或影片的位置,可以使其转动、平移或改变图片的尺寸7.3纹理坐标节点其节点语法定义如下:Texturetransform{ExposedfieldSFVec2fcenter00#(-∞,+∞)ExposedfieldSFFloatrotation0#(-∞,+∞)ExposedfieldSFVec2fscale11#(-∞,+∞)ExposedfieldSFVec2ftranslation00#(-∞,+∞)}字段说明:Center该字段是一个二维的浮点数向量值。它的功能是定义一个粘贴图片的任意几何中心点,作为旋转(rotation)或缩放尺寸(scale)的中心位置,默认值是(0,0),以粘贴图片的(S,T)坐标为坐标。7.3纹理坐标节点Rotation该字段是一个浮点数的字段值。它的功能是以粘贴图片的(S,T)坐标为坐标,依照所定义的几何中心点旋转,旋转的角度是弧度(radians),默认值是0。Scale该字段是一个二维的浮点数向量,它的功能是以粘贴图片的(S,T)坐标为坐标,依照所定义的几何中心点进行缩放,两个轴向的缩放程度可以不同,默认值是11,表示不进行任何的缩放;Translation该字段是一个二维的浮点数向量值,它可以重新定义欲粘贴图片的位置,默认值是00,以粘贴图片的(S,T)坐标为坐标。7.3纹理坐标节点7.3.2TextureCoordinate——表面材质定位节点TextureCoordinate节点指定了一组纹理坐标,通常同IndexedFaceSet节点和ElevationGrid节点中texCoord域的值。其语法定义如下:TextureCoordinate{ExposedFieldMFVec2fpoint[]}point域的值指定了纹理图象在纹理坐标系统中的位置。同造型坐标不同的是纹理坐标是由两个浮点数值来指定的,分别表示自坐标原点起S和T方向距离的值。该域值的缺省值为空。通过TextureCoordinate节点可以指定纹理图像中的一部分。
本文标题:第7章 VRML(虚拟现实建模语音)纹理映射
链接地址:https://www.777doc.com/doc-3797199 .html