VRML提供了TextureCoordinate节点和TextureTransFrom节点来控制纹理坐标及纹理坐标变换。
纹理坐标节点
语法
TextureCoordinate{
#该域的域值设定纹理图像在纹理坐标系统中的位置。
exposedField MFVec2f point[]
}
纹理坐标变换节点
TextureTransform通常作为Appearance造型节点中textureTransform的域值。
语法:
TextureTransform{
#Translation的域值用于设定变换后新的纹理坐标系的原点与原始坐标系中的原点在S、T方向上的距离。
exposedField SFVec2f translation 0.0 0.0
#rotation的域值用于设定新的纹理坐标系相对于原始坐标系进行旋转(沿Z轴)的角度。
exposedField SFFloat rotation 0.0
#scale的域值用于设定新的纹理坐标系在S、T方向上的缩放系数。
exposedField SFVec2f scale 1.0 1.0
#center的域值设定了一个二维坐标点,它位于新坐标系的原点上,纹理坐标系的旋转和缩放均围绕该中心点进行。
exposedField SFVec2f center 0.0 0.0
}
例子:
#VRML V2.0 utf8
Transform {
translation -2 0 0
children [
Shape{
appearance Appearance {
texture ImageTexture {
url "Water lily1.jpg"
} #荷花图像纹理
}
geometry DEF a Box {
size 3 3 3
}
}
]
}
Transform {
translation 2 0 0
children [
Shape {
appearance Appearance {
texture ImageTexture {
url "Water lily1.jpg"
}
textureTransform TextureTransform {
translation 0.2 1 #在S方向位移0.5个单位
rotation 1.571 #沿Z轴旋转90度
scale 1.5 2 #在S、T方向进行压缩
}
}
geometry USE a
}
]
}