《第五讲VRML模型节点的高级应用PPT课件》由会员分享,可在线阅读,更多相关《第五讲VRML模型节点的高级应用PPT课件(68页珍藏版)》请在金锄头文库上搜索。
1、第五讲 VRML模型节点的高级应用1回顾:nShapen appearance Appearance #外观节点n material Material #材质n texture #纹理包装n textureTransform #纹理坐标转换n n geometry Box #几何节点n2回顾:n外观节点(Appearance)中的材质节点(Material)nMaterial材质节点:设置有关材质的属性,可以创建出金属、玻璃、石头等属性。nMaterial节点n语法nMaterial n diffuseColor 0.8 0.8 0.8 #exposedField SFColorn ambie
2、ntIntensify 0.2 #exposedField SFFlotn specularColor 0 0 0 # exposedField SFColorn emissiveColor 0 0 0 # exposedField SFColorn shininess 0.2 #exposedField SFFlostn transparency 0 #exposedField SFFlot n3回顾:ngeometry域 n四种简单的几何造型节点:nBox立方体节点;nSphere球体节点;nCone圆锥体节点;nCylinder圆柱体节点;n五种复杂几何造型节点:nPointSet点集节
3、点nIndexedLineSet线集节点nIndexedFaceSet面集节点nExtrusion挤出造型节点nElevationGrid网格标高造型节点n一种文本造型节点:nText文本造型节点4geometry域的四种简单的造型节点n1.Box立方体节点n用来创建以坐标原点为中心的正方体、长方体几何造型。n格式:n节点名称 域名称 域值 #域值类型nBoxn size 2.0 2.0 2.0 #SFVce3fn nsize域的域值设定了三维立方体几何造型的尺寸大小,默认值为2.0 2.0 2.0,是一个以坐标原点为中心,长、宽、高为2.0单位的立方几何造型。5n2.Sphere球体节点n创
4、建以坐标原点为中心的球体几何造型;n格式:n节点名称 域名称 域值 #域值类型nSpheren radius 2.0 #SFFloatn nradius域的域值表示球体的半径,默认值为1.0单位;geometry域的四种简单的造型节点6n3.Cone立方体节点n创建以原点为中心,以Y轴为对称轴的圆锥体几何造型n格式:n节点名称 域名称 域值 #域值类型nConen bottomRadius 1.0 # SFFloatn height 2.0 # SFFloatn side TRUE # SFBooln bottom TRUE # SFBooln n bottomRadius设置了圆锥体底面半径
5、尺寸,默认值为1.0nheight设定圆锥体的高度,默认值为2.0nside是否创建圆锥体的锥面,默认值为TRUEnbottom是否创建圆锥体的底面,默认值为TRUEgeometry域的四种简单的造型节点7n4.Cylinder圆柱体节点n创建以坐标原点为中心,以Y轴为对称轴的圆柱体几何造型n格式:n节点名称 域名称 域值 #域值类型nCylindern radius 1.0 #SFFloatn height 2.0 #SFFloatn side TRUE # SFBooln bottom TRUE # SFBooln top TRUE # SFBooln ntop是否创建圆柱体的顶面,默认值
6、为TRUEgeometry域的四种简单的造型节点8回顾:n复杂的几何造型nPointSet点集造型节点nIndexedLineSet线集造型节点nIndexedFaceSet面集造型节点nExtrusion挤出造型节点nElevationGrid网格标高造型节点9复杂几何造型节点nPointSet点集节点n用途:n模拟天上闪烁的繁星和远处点点的灯光;n语法:nPointSet n coord Coordinate n point #exposedField MFVec3fn n color Colorn color #exposedField MFColorn nncoord 域设定离散点的三
7、维坐标位置;ncolor 域设定空间点的颜色;10复杂几何造型节点nIndexedLineSet线集节点n用途:nIndexedLineSet节点用于在三维空间创建由线段组合成的各种开放或封闭的立体几何造型。11复杂几何造型节点n语法:nIndexedLineSetn coord NULL #exposedField SFNoden coordIndex #MFint32n color NULL #exposedField SFNoden colorIndex #MFint32n colorPerVertex TRUE #SFBooln set_coordIndex #eventIn n se
8、t_colorIndex #eventInnn其中coord 与coordIndex 设定线集;n其中color、colorIndex与colorPerVertex 设定线集的颜色;n其中set_coordIndex与set_colorIndex是两个入事件。 12复杂几何造型节点ncoord域设定线段连接点的三维坐标位置。当为NULL,表示为空的坐标列表。当为Coordinate坐标节点时,包含线集所有连接点的定位坐标。与PointSet同样,为每个空间点按照出现的顺序,设立了默认的索引号,从索引号0开始。nCoordIndex域值设定一条或多条线段的索引列表。每一个索引号对应一个连接点的坐
9、标;索引号之间用逗号或空格分隔;索引号为-1,表示本线段结束;列表中最后一条线段结束时,可以不标索引号-1;默认值为空,表示不创建任何造型。13复杂几何造型节点ncolor域见点集节点ncolorPerVertex域n指明着色方式是基于端点还是基于线段,默认为TRUE(基于端点)。n当为FALSE时,着色方式基于整条线段。ncolorIndex域不为NULL或缺省时,为每一个线段设定相应的颜色索引表;把Color节点中的颜色依顺序编为索引0号,1号,有多少线段就要有多少个颜色索引号当colorIndex域的域值为空列表或缺省时n基于端点的着色方式将color域中的颜色按照顺序一一赋予point
10、域中的坐标点(线造型的端点),两个端点之间的线段将产生颜色渐变的效果。颜色列表中的颜色数至少与坐标点的个数相等。n基于线段的着色方式将color域中的颜色按照顺序一一赋予coordIndex域中指定的线段,每条线段上的颜色不变化。颜色列表中的颜色数至少与折线数相等。n例3-20 3-2114复杂几何造型节点nIndexedFaceSet面集节点n面集节点是一个应用非常广泛的造型节点,几乎可以用来创建任意立体几何造型。15复杂几何造型节点n语法格式:nIndexedFaceSetn coord NULL #exposedField SFNode 点坐标集合n coordIndex #MFint3
11、2 点坐标索引n color NULL #exposedField SFNode 颜色列表n colorIndex #MFint32 颜色索引n colorPerVertex TRUE #SFBool 着色方式n texCoord NULL #exposedField SFNode 贴图坐标集合n texCoordIndex #MFint32 贴图坐标集合索引n normal NULL #exposedField SFNode 法向量列表n normalIndex #MFint32 法向量索引n normalPerVertex TRUE #SFBool 着色方式n ccw TRUE #SFBo
12、ol 边界线的时针方向n convex TRUE #SFBool 凸平面标志 n solid TRUE #SFBool 构建平面的背面n creaseAngle 0.0 #SFFlot 平面间过渡的平滑处理n set_coordIndex #eventIn MFInt32 入事件(用于域值的动态设置,n set_clolorIndex #eventIn MFInt32 入事件 (后面介绍)n set_texCoorIndex #eventIn MFInt32 入事件n set_normalIndex #eventIn MFInt32 入事件n16复杂几何造型节点ncoord域n设定平面边界线连
13、接点的三维坐标位置;n域值为NULL或Coordinate坐标节点;n当取值为NULL时,表示空的坐标列表。ncoordIndex域 (每一个面至少有3个点组成)n设定一条或多条平面边界线连接路径的索引列表。n索引号与coord域中point域的域值相对应;n同理,索引号-1表示当前连接的平面结束,下一个平面的连接即将开始,并会自动将最后一个坐标与第一个坐标连接起来,形成一个封闭的平面边界线;n列表中最后一个平面,可以不以-1表示结束。17复杂几何造型节点ncolor、colorIndex和colorPerVertex应用于平面着色ncolor域中的Color节点的color域用于设定一系列的
14、颜色列表;ncolorPerVertex的域值用于设定着色方式:nTRUE(缺省)着色方式为基于顶点;nFALSE表示着色方式为基于平面。l colorIndex域colorIndex域的域值用于设定颜色索引列表,对于color域的值相对应,并且是从0开始编号,并赋予着色的平面或构成平面的顶点;(注意:基于顶点的着色和基于平面的着色colorIndex域的写法,基于顶点的,每个顶点都要赋予一个颜色索引,而基于面的,一个面赋予一个颜色索引即可)(例3-24 例3-26)当colorIndex域值为空列表或缺省时 (例3-23 例3-25)n基于顶点的着色方式n先将color域中的颜色按照顺序一一
15、赋予point域中的坐标点(平面造型的顶点)n顶点之间的平面将产生渐变的特殊效果,color域中的颜色个数至少与point域中的坐标点的个数相等;n基于平面的着色方式n将color域中的颜色按照顺序一一赋予coordIndex域中指定的平面,每个平面上的颜色不发生变化, color域中的颜色个数至少与平面的个数相等。18复杂几何造型节点nsolid域n设定是否构建面集平面的背面,也即平面组成的立体几何造型是否为实体;n当为TRUE时,表明构成的是立体造型,不需要构建面集的背面;n当为FALSE时,表明构成的不是实体,面集的表面和背面都能看见。ncreaseAngle域n设定以弧度表示的转折角,
16、可以使相邻两个平面的边界看上去有平滑过渡;n该域的默认值为0,表示不进行平滑处理。n例3-24 3-2519复杂几何造型节点nExtrusion挤出造型节点n相当于生活中制作模型边框,然后一条轨迹牵引形成的一个图形。n方便创建各种各样的柱体、环柱体、曲面、环状曲面等立体几何造型。n在建模中,Extrusion节点具有使用率高,在造型中有重要位置的节点。n方法:n在XOZ平面设定造型的二维截面轮廓线;n在三维空间设定挤出造型的牵引轨迹(放样曲线或者龙骨线)n设定的轨迹可以是:直线、曲线、折线、开放的或封闭的线段。20复杂几何造型节点ncrossSection域举例n正方形1 1,1 -1,-1
17、-1 ,-1 1,1 1n三角形1 1, 0 -1 ,-1 1, 1 1n十字形2 1,2 -1,1 -1, 1 -2,-1 -2, -1 -1 ,-2 -1,-2 1,-1 1, -1 2,1 2, 1 1,2 1 n工字形2 2,2 1,1 1 ,1 -1, 2 -1, 2 -2 ,-2 -2 ,-2 -1 ,-1 -1, -1 1, -2 1, -2 2, 2 2 21复杂几何造型节点nExtrusion语法nExtrusionn crossSection 1 1,1 -1,-1 -1,-1 1,1 1 #MFVec2fn spine 0 0 0, 0 1 0 #MFVec3fn sca
18、le 1 1 #MFVec2fn orientation 0 0 1 0 #MFRotationn beginCap TRUE #SFBooln endCap TRUE #SFBooln ccw TRUE #SFBooln convex TRUE #SFBooln solid TRUE #SFBooln creaseAngle 0.0 #SFFlotn set_crossSection #eventIn MFVec2fn set_spine #eventIn MFVec3fn set_scale #eventIn MFvec2fn set_orientation #eventIn MFRota
19、tionn22复杂几何造型节点ncrossSection域n在XOZ平面上设定一系列的二维坐标点,依次连接这些坐标点得到一条封闭或开放的折线,作为放样的截面轮廓线;n默认值为一个边长为2的正方形轮廓;nspine域n设一定一系列的三维点坐标,依次连接这些坐标点得到一条封闭或开放的折线,作为放样的轨迹线(也称龙骨线);n默认值是一条沿Y轴指向上方的直线轨迹;23复杂几何造型节点nscale域n设定一系列截面轮廓线的缩放比例系数对;n每对比例系数的第一个值对应指定X方向的缩放比例,第二个值对应指定Z方向的缩放比例;n缩放比例系数对应与spine域中的龙骨线坐标点一一顺序对应,缩放比例对的数目与龙骨
20、线坐标点的数目相同。n如果只有一对比例系数对,则所有龙骨线的坐标点对应的比例系数对相同。n默认值为(1.0 1.0),表示不缩放。24复杂几何造型节点norientation域n设定沿放样曲线坐标点的挤出造型的旋转参数;n每一组参数的前三个参数值指定一个旋转轴,第四个值指定沿旋转轴旋转的角度,角度为弧度值;n旋转参数组的数目与放样曲线坐标点的数目相同,每组参数与放样曲线坐标点一一对应;n如果只有一组参数,则表示所有坐标点对应的旋转参数相同;n默认值为(0.0 0.0 1.0 0.0) ,表示没有旋转。nbeginCap和endCap域n表示挤出造型是否创建起始端面或终止端面。25复杂几何造型节
21、点nccw域n设定挤出造型节点自动生成的几何面法线与截面轮廓线走向关系。n当为TRUE时,轮廓法线走向与法线方向成右手关系,即按照逆时针的方向;当为FALSE时,则成左手关系,即按照顺时针的方向。n默认为TRUEnconvex域n挤出造型的截面轮廓是否为凸面;n默认值为TRUE,表示凸面;nsolid域n挤出造型生成的几何造型是否为实体造型。ncreaseAngle域n设定作相邻表面作平滑处理的弧度阈值,当相邻表面的夹角小于这个阈值时作平滑处理。n例3-1226复杂几何造型节点nElevationGrid网格标高造型nVRML专门为构造地形、山脉等凹凸不平的造型提供的节点造型。n与Indexe
22、dFaceSet相对,可以节省大量的数据量。n构建方法:n将造型区域XOZ面上划分为很多大小相同的网格;n根据需要设定网格的个数和尺寸;n设定每个网格交点的高度;n网格之间自动形成高度不同的平滑过渡的表面;27复杂几何造型节点n语法:nElevationGridn xDimension 0 #SFIntn xSpacing 0 #SFFlotn zDimension 0 #SFIntn zSpacing 0 #SFFloatn height #MFFloatn color NULL #exposedField SFNoden colorPerVertex TRUE #SFBooln norma
23、l NULL #exposedField SFNoden normalPerVertex TRUE #SFBooln texCoord NULL #exposedField SFNoden ccw TRUE #SFBool n solid TRUE #SFBooln creaseAngle 0 #SFFlotn set_height #eventIn MFFlotn28复杂几何造型节点nxDimension与zDimensionn表示x方向和z方向网格点的数量;n网格点总数为xDimemsion*zDimemsionn网格总数为(xDimension-1)*(zDimension-1)n默认值
24、为0,表示无网格。nxSpacing与zSpacingn用于设定X方向的列间距和Z方向的行间距;n默认值为0,不能为负。29复杂几何造型节点nheight域n用于设定每个网格点Y方向上的高度。n域值为两维数列,按行排列,每一个高度heightI,J赋予对应的网格点;n默认值为 ,表示不创建网格。ncolor域和colorPerVertex域nColor域为网格表面着色;ncolorPerVertex域表示着色方式基于网格顶点还是基于网格表面。ncreaseAnglen例3-27 3-2830回顾nTransform坐标变换结点的语法nTransformn children #exposedFi
25、eld MFNode 参与变换的造型节点集n translation 0 0 0 #exposedField SFVec3f新坐标系的原点与原始 坐标系原点在XYZ方向上的距离n rotation 0 0 1 0 #exposedField SFRotation 旋转n scale 1 1 1 #exposedField SFVec3f 缩放系数n scaleOrientation 0 0 1 0 #exposedField SFRotation n bboxCenter 0 0 0 #SFVec3f 设定该变换全部子节点的区域的中心坐标点n bboxSize -1 -1 -1 #SFVec3
26、f设定该变换全部子节点的区域在XYZ方向上 的尺寸,一般不人为设置,由浏览器自动设置n center 0 0 0 #exposedField SFVec3f 该坐标点位于新坐标系的原点上,坐标系的旋转和缩放均围绕该中心点进行n addChildren #eventIn MFNode 将指定的节点增加到子节点列表中n removeChildren #eventIn MFNodenn浏览器默认执行顺序:n先缩放先缩放 再旋转再旋转 后平移后平移 例例4-231大纲n几何节点:Text文本造型节点n纹理包装(texture域)ImageTexture图像纹理节点PixelTexture像素纹理节点M
27、ovieTexture电影纹理节点ntextureTransform域TextureTransform纹理坐标转换节点32Text文本造型33Text文本造型n文本(Text)是场景中的一种造型,但不是几何造型。nVRML的文本对场景进行说明、信息提示和超链接。n性质:n与几何造型一样,可以有不同的外观和材质属性;n也可以进行纹理包装;n但它是一个没有厚度的平面造型,不具备三维立体特征。nText语法nTextn string #exposedField MFStringn length #exposedField MFFlotn maxExtent 0.0 #exposed SFFLotn
28、fontStyle NULL #exposed SFNoden34创建文本造型nstring域n设定要创建的文本内容。n域值可以是一行文本,也可以是多行文本。n每一行的文本都要包含在双引号内,多行文本要用逗号或空格分隔,或者分行书写,在引号内的回车符、换行符依然有效。n行间距由FontStyle文本外观节点的Spacing域的域值设定。n默认值为空列表,不创建任何文本。n例:“Hello”,”I am a Student”n “Welcom To ” “Xiamen Univ.” 35创建文本造型nlength域(例3-40)n域值为每一行文本造型设定长度。n长度以VRML长度单位计算。n根据
29、设定的长度,系统自动改变字符的尺寸或字符间距来满足设定的长度。n默认值为空列表,由系统自动设定。nmaxExtent域 (例3-41)n域值设定任意行或列文本的最大有效长度(即文本造型最大范围的设定)。n当某一行文本造型的长度大于它的域值时,系统将通过改变字符尺寸和字符间距将其压缩到其域值所设定的最大有效长度内。n默认值为0.0,不对长度进行最大限制。n注意:其他没被压缩行的字符间距与被压缩行的字符间距相同。36创建文本造型nfontStyle域n设定文本造型的外观特征。n域值为NULL或一个FontStyle结点。n当域值NULL时,表示使用默认的外观特征:n左对齐;n水平从左到右排列;n垂
30、直方面从上到下排列;n文本高度为1.0;n文本间距为1.0;n字体为Serif。37创建文本造型nFontStyle节点n用于设定文本的语种、字符的大小和形状、字体的风格以及文本的对齐方式、排列方式,行间距或列间距等。n语法:nFontStylen family “SERIF” #SFStringn size 1.0 #SFFloatn spacing 1.0 #SFFloatn style “PLAIN” #SFStringn Horizontal TRUE #SFBooln justify “BEGIN” #MFStringn leftToRight TRUE #SFBooln topTo
31、Bottom TRUE #SFBooln language “” #SFStringn38创建文本造型nfamily域n设定文本造型的字符集。n字符集有三种:n“SERIF”,它是一种细线变宽字体,系统选用Times New Roman字体;n“SANS”,它是一种简单变宽字体,系统选用Helvertica字体;n“TYPEWRITER”,它是一种等宽字体,系统选用Coutier字体。n默认值为”SERIF”。nsize域n设定文本字符的尺寸;n水平排列时,设定文本高度;垂直排列时,设定文本宽度;n默认时为1.0。39创建文本造型nspacing域n设定文本字符的行间距。n当水平排列时,为行间
32、距;n当垂直排列时,为列间距;n默认值为1.0。nstyle域n设定文本造型的字体风格;n有四种:“PLAIN” 普通体;“BOLD”粗体; “ITALIC”斜体; “BOLDITALIC” 加粗斜体。n默认值为 “PLAIN”。40创建文本造型nHorizontal域n设置文本造型的主排列方向:水平或垂直;n默认值为TRUE,表示水平方向是主排列方向、垂直方向是次排列方向。nJustify域n表示文本造型中字符块的对齐方式;n域值为含有一个或两个域值的列表;n有两个域值时,用空格或逗号分隔;n第一个为主对齐方式;第二个为次对齐方式;n当水平排列时,主对齐方式为水平方向,次对齐方式为垂直方向;
33、n当垂直排列时,主对齐方式为垂直方向,次对齐方式为水平方向。n有四种类型:“BEGIN”左对齐;“MIDDLE”居中对齐;“END”右对齐;“FIRST”;n默认值为 “BEGIN”,“FIRST” 。41创建文本造型nleftToRight域n设定文本造型的字符是否从左到右排列;n默认值TRUE,从左到右。ntopToBottom域n设定文本造型中的文本是否从上到下排列;n默认值为TRUE,从上到下。nLanguage域 (BS Contact是不支持汉字)n设定文本造型使用的语言;n以两个字母表示,有不同语言编码的地区在语言代码后加连字符和地区编码:nar(阿拉伯);de(德语);de_D
34、E(德语德国);de_CH(德语瑞士);en(英语);en_US(英语美国);en_GB(英语英国);hi(印度);jp(日语);ru(俄语);sa(梵语);zh(中文);zh_TW(中文繁体);zh_CN(中文简体);42创建文本造型n举例:例3-39、3-40、3-41、3-42、3-4343Appearance节点的纹理节点44造型的纹理设计n纹理的概念纹理是一种位图,即二维图像。把纹理图像按照一定的规则粘贴到造型的表面,称纹理贴图。目的:造型更有真实感。nVRML有三种纹理贴图:ImageTexture图像纹理节点PixelTexture像素纹理节点MovieTexture电影纹理节点
35、n对于同一个造型,在同一个Appearance节点内,只能选择一种纹理节点。45图像纹理节点46造型的纹理设计n纹理坐标n一个二维的平面坐标系(ST),S代表横轴,T代表纵轴。如图由(0,0)(1,0)(1,1)(0,1)所围成的矩形就是纹理默认的原始区域。n纹理坐标系与造型的空间坐标系不同,是两个完全不同的概念。n造型的大小不同则空间坐标值不同,当造型移动时,空间坐标值也会发生变化。n纹理坐标测量的是纹理图的重复,无论纹理图的尺寸大小,无论纹理图如何缩放,纹理图的左下角总是位于纹理坐标系的(0,0),纹理图的右上角总是位于纹理坐标系的(1,1)点。n若重复使用纹理,即相当于把原始区域的纹理进
36、行拷贝并逐次拼接在一起,每一个拷贝使S轴或T轴的纹理坐标值加1,若在负方向,则减1。47造型的纹理设计nVRML支持的图像格式有:nJPEG:是一种适合于网格传输、图像质量较高的图像格式,扩展名为.jpg,文件较小,但没有透视度和灰度模式,只有全彩色(RGB);nGIF:适合网格传输,图像质量较低,支持透视度存储,文件较小,扩展名为.gif;nPNG:改进GIF格式而开发的网络图像文件格式,相对GIF,有更高的图像质量,支持单元素、双元素、三元素及四元素图像纹理,支持透明度和灰度存储,适合包含表格和文字的图片应用;nMPEG:一种流行的音像文件格式,采用高效率的图像和声音压缩技术,电影文件的图
37、像质量相当高,但不支持透明度存储。48造型的纹理设计n图像纹理(ImageTexture)n用于设置图像纹理的参数并将该纹理粘贴(映射)到造型表面,支持的文件格式:JPEG,PNG,GIF文件。n语法:nImageTexturen url #exposedField MFStringn repeatS TRUE #SFBooln repeatT TRUE #SFBooln49造型的纹理设计nurl域n指定一个由高优先级至低优先级的图像纹理文件url地址的排序表;n系统从第一个文件找起,如果没找到,则继续下一个,直到找到为止;n若找不到或url域为空,则不进行纹理映射。n如:url “./ima
38、ges/water.jpg” , “water1.jpg”nrepeatS域repeatT域n设定图像纹理是否沿S方向或T方向重复粘贴;n默认值都为TRUE。n注意:n如果不使用textureTransform纹理变换对纹理进行缩放处理,系统会自动对纹理的大小进行调整使其恰好填满造型表面。n只有人为对纹理进行了调整,才要设置repeatS域和repeatT域的域值,选择是否重复使用纹理图像。n举例:例3-32、3-3350像素纹理节点51造型的纹理设计n像素纹理(PixelTexture)n没有url域,而是将纹理直接存放在VRML文件中,可以节约网络下载时间。n它以显示像素数组的形式定义一个
39、二维像素纹理,并且设定将该纹理映射到造型表面时所需的参数。n由于像素纹理包装需要知道各点的颜色值,使用起来不方便。因此一般只用于比较简单的纹理。n语法:nPixelTexturen image 0 0 0 #exposedField SFImagen repeatS TRUE #SFBooln repeatT TRUE #SFBooln52造型的纹理设计nimage域(域值为SFImage类型)nimage域含有非压缩的二维彩色图像或灰度值,表示像素纹理的大小、类型和像素值。nimage域首先列出三个整数值,前两个表示像素纹理的横向像素个数(纹理宽度)和纵向像素个数(纹理高度),第三个整数表示
40、像素纹理类型(可以在0、1、2、3、4中选择一个数值),随后列出一组十六进制数,数与数之间用空格分开。n第三个整数的意义n0,无图像。n1,单元像素纹理,每个十六进制含一个字节,表示灰度的强度。n2,双元像素纹理,每个十六进制含二个字节,表示灰度、透明度。n3,三元像素纹理,每个十六进制含三个字节,表示RGB。n4,四元像素纹理,每个十六进制含四个字节,表示RGB、透明度。其中灰度数从0x000xFF,表示从黑到白。其中透明度从0x000xFF,表示从不透明到透明。53造型的纹理设计n如:nImage 2 2 3 0xFF0000 0x00FF00 0x0000FF 0xFFFF00n数值与图
41、像的对应关系:n从下到上n从左到右0xFF00000x00FF000x0000FF0xFFFF0054造型的纹理设计nrepeatS域repeatT域n设定像素纹理是否沿S方向或T方向重复粘贴;n默认值都为TRUE;n如果使用像素纹理时,又使用了Material节点设置材质,则Material中的diffuseColor和transparency可能影响像素纹理的渲染效果。相应的处理方法:n单元纹理:diffuseColor*像素纹理的强度值;n双元纹理:diffuseColor*像素纹理的强度值; transparency*像素纹理的透视度;n三元纹理:像素纹理的RGB值代替材料的diffu
42、seColor;n四元纹理:像素纹理的RGB值代替材料的diffuseColor;transparency*像素纹理的透视度;n在使用像素纹理时,不设置Material节点,可以忽略对光源的计算,从而能提高性能,增加运算速度。n例3-3455造型的纹理设计n电影纹理(MovieTexture)n将一段影片以纹理的形式映射到造型的表面,产生动态纹理的特殊效果。n节点含两部分:设置电影纹理的映射参数与电影的播放控制。n电影文件支持:MPEG1-sysytem(含声音与图像)或MPEG1-Video(只含图像)的文件格式。n如果电影文件包括伴音,则当播放时,节点会为Sound节点的source域指定
43、所需的声音文件,后面chap5中介绍。n语法:nMovieTexturen url #exposedField MFString 电影文件名n loop FALSE #exposedField SFBool 循环播放设定n speed 1.0 #exposedField SFFLoat 播放速度n startTime 0.0 #exposedField SFTime 开始时间 n stopTime 0.0 #exposedField SFTime 结束时间n repeatS TRUE #SFBool S方向重复贴图n repeatT TRUE #SFBool T方向重复贴图n duration
44、_changed #eventOut SFTime 电影持续时间n isActive #eventOut SFBool 正在播放n 56造型的纹理设计nurl域n指定一个由高优先级至低优先级的电影纹理文件url地址的排序表;n系统优先从第一个文件找起,如果没找到,则继续下一个,直到找到为止;n若找不到或url域为空,则不进行电影纹理映射;n如:url “./images/1.MPG”, “1.MPG”nrepeatS域repeatT域n设定电影纹理是否沿S方向或T方向重复粘贴;n默认值都为TRUE。nLoop域n设定电影是否进行循环播放,默认值为FALSE,只播放一次。57造型的纹理设计nSp
45、eed域n设置播放速度,默认值为1,表示正常播放;n当speed1.0时,表示加速播放;n当speed在0.0,1.0之间表示减速播放;n当speed0时,表示倒放。nstartTime 域和 stopTime域n设定电影播放的开始时间和结束时间。nDuration_changed出事件n表示电影持续时间,以秒计。-1表示电影文件还没有调入。nisActive出事件n指明电影是否在播放。n当开始播放时,该事件以TRUE送出n当播放结束时,该事件以FALSE送出。n例3-3558纹理坐标变换节点59造型的纹理设计n纹理坐标变换TextureTransformn用于相对已有原始纹理坐标系创建一个新
46、的纹理坐标系,通过对纹理坐标系的平移、旋转、缩放等操作,改变粘贴在造型表面的纹理位置、角度和缩放比例。n语法:nTextureTransformn translation 0.0 0.0 #exposedField SFVec2f n rotation 0.0 #exposedField SFFloatn scale 1.0 1.0 #exposedField SFVec2fn center 0.0 0.0 #exposedField SFVec2fn60造型的纹理设计ntranslation域 (例3-36)n设定变换后纹理坐标系的原点与原始坐标系在S、T方向上的距离。nrotation域(
47、例3-37)n设定变换后纹理坐标系相对原始坐标系进行旋转的角度;n以Z轴为旋转轴,角度以弧度为单,符合右手法则,即其值为正时,纹理图象逆时针方向旋转,负则顺时针方向旋转。nscale域 (例3-38)n设定新的纹理坐标系在S、T方向上的缩放系数。ncenter域n设定一个中心点作为缩放、旋转围绕的中心。n注意:所有的操作是针对纹理坐标进行的,不是作用于纹理图像。例scale 0.5 0.5,表示将纹理坐标缩小一半,相当于在S、T方向均为原来的两倍,而scale 2 2 表示将纹理坐标放大一倍,相当于在S、T方向均为原来的一半。61纹理映射控制62纹理映射控制n如何理解纹理的映射控制n纹理映射是
48、多阶段的过程。一般认为可分为四步:n采用一个ImageTexture、PixelTexture或MovieTexture节点选择一个纹理图像;n采用二维纹理坐标描述纹理映射切割器;n抽取一块映射图像;n在造型表面上扩展纹理图像,并与造型的表面吻合,使纹理图像的每一个角与面上的相应坐标对应。63纹理映射控制n几何形状的缺省纹理映射nBoxn每个面上都有一个纹理。nConen沿着底面进行包裹,接缝在圆锥后面,在顶部所有的点压缩成为一点,底面上有一个纹理。nCylindern沿着水平方向对图像进行包裹,接缝在圆柱体后面,圆柱的上、下两面各有一个纹理。nSpheren沿水平方向包裹一次,接缝在球体后面
49、,在球体的顶部和底部对图像进行压缩,最后成为一点。nTextn纹理图像被切开,以适应整个文本块的每一个字符(每个字符上包裹一个纹理)。n例:text_sam0、text_sam164纹理映射控制nElevationGridn纹理的一个备份放在网格上;自动调整与网格的大小一样;nS方向对应X方向,T方向对应Z方向。nExtrusionn在水平方向上沿横截面直径包裹一次;在垂直方向上沿脊柱放置一次。nIndexedLineSet /IndexedPointSetn不提供纹理映射n例:text_sam265纹理映射控制nIndexedFaceSetn缺省映射是通过测量主要坐标轴的空间大小决定的(即它
50、的外包盒的尺寸,bboxSize域的 X 、Y、 Z值)。最长的一维决定水平方向的映像(S),次长的一维决定垂直方向(T)。n其中S方向总是从0映射到1;n T方向总是从0映射到小于1的某一位置tmax;n tmax =次长维的长度/最长维的长度n它生成的是一个正方形的纹理映像,与图像的比例无关,先把引入的纹理图像变形成正方形的纹理再进行纹理映射。n投影方法是平面投影法,不是立体投影,所以在与投影平面垂直的部分会出现条纹状。n例:text_sam366作业1.制作如右图所示的文本造型(提示:welcome右对齐、color居中、red clock左对齐)67n2.创建三种不同的几何造型,分别为造型粘贴图像纹理、像素纹理和电影纹理。68