坐标变换节点的语法定义
Transform{
#children设定受该节点变换影响的所有子节点。
exposedField MFNode children [ ]
#translation新旧坐标系的原点之间的距离。
exposedField SFVec3f translation 0.0 0.0 0.0
#rotation新坐标系相对于旧坐标系进行旋转的转动轴和旋转角度。
exposedField SFRotation rotation 0.0 0.0 1.0 0.0
#scale设定新坐标系在X、Y、Z方向的缩放系数
exposedField SFVec3f scale 1.0 1.0 1.0
#scaleOrientation用于设定旋转轴和旋转角度。具体为:先按照旋转后的新坐标系进行缩放操作,然后再坐标系将旋转回原方位。
exposedField SFRotation scaleOrientation 0 0 1 0
#center设定一个点,位于新坐标系的原点,坐标系的旋转和缩放均围绕该中心点进行。
exposedField SFVec3f center 0.0 0.0 0.0
#bboxCenter设定包围该变换所有子节点的区域的中心坐标点。
field SFVec3f bboxCenter 0.0 0.0 0.0
#bboxSize设定包围该变换所有子节点的区域X、Y、Z方向上的尺寸。
field SFVec3f bboxSize -1.0 -1.0 -1.0
#addChildren将指定的子节点增加到子节点列表中。
eventIn MFNode addChildren
#removeChildren将指定的子节点从子节点列表中删除。
eventIn MFNode removeChildren
}
坐标变换规则:
空间坐标的平移
#VRML V2.0 utf8
Shape{ #圆柱体造型
appearance Appearance{
material Material {
diffuseColor 0 0 1
}
}
geometry Cylinder{
radius 1
height 2
}
}
Transform{ #添加坐标变换节点
translation 0 1.5 0 #圆锥体沿Y轴向上平移1.5
children[
Shape{ #圆锥体造型
appearance Appearance{
material Material{
diffuseColor 0 1 0
}
}
geometry Cone{
bottomRadius 2
height 1
}
}
]
}
坐标的旋转
一些常用角度的弧度值(弧度=角度*π/180)
例子:
#VRML V2.0 utf8
Transform {
rotation 1 0 0 1.571
children [
Shape { #表壳造型
appearance Appearance {
material Material {
diffuseColor 0.7 0.2 0.2
}
}
geometry Cylinder {
radius 2.2
height 0.5
}
}
]
}
坐标的缩放
#VRML V2.0 utf8
Shape{ #白色圆球造型
appearance Appearance{
material Material{
diffuseColor 1 1 1
}
}
geometry Sphere{
radius 1.5
}
}
Transform{ #红色椭圆球造型
scale 2 1.1 1.1 #XYZ各个方向缩放系数
children[
Shape{
appearance Appearance {
material Material {
diffuseColor 1 0 0
transparency 0.4 #半透明设置
}
}
geometry Sphere{
radius 1.5
}
}
]
}
造型沿指定中心点缩放
#VRML V2.0 utf8
Shape { # 基准参考平面
appearance Appearance {
material Material {
diffuseColor 1 0.5 0.4
specularColor 0.7 0.4 0.4
ambientIntensity 0.15
shininess 0.9
}
}
geometry Box {
size 8 0.1 3
}
}
Shape { # 标准圆柱体
appearance Appearance {
material Material {
diffuseColor 0.3 0.09 0.21
specularColor 0.67 0.58 0.83
ambientIntensity 0.0467
shininess 0.07
}
}
geometry Cylinder {}
}
Transform { # 左边圆柱体
translation -3 0 0
scale 1 2 1
center 0 -1 0
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0.32 0.54 0.26
specularColor 0.46 0.46 0.46
ambientIntensity 0.0933
shininess 0.51
}
}
geometry Cylinder {}
}
]
}
Transform { # 右边圆柱体
translation 3 0 0
scale 1 2 1
center 0 2 0
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0.3 0.09 0.21
specularColor 0.67 0.58 0.83
ambientIntensity 0.0467
shininess 0.07
}
}
geometry Cylinder {}
}
]
}