- 最后登录
- 2013-6-5
- 注册时间
- 2011-12-3
- 阅读权限
- 90
- 积分
- 6206
- 纳金币
- 6206
- 精华
- 0
|
当程序员在构建场景图的层次结构时,需要使用许多TransformGroup节点。如果把场景的层次结构看成是一棵树,程序员要描述的几何对象将定位于它的叶子上。将场景图树的根与该几何叶子连接的路径上通常会有几个 TransformGroup 节点。根和几何对象之间的所有变换都按这个顺序应用,并且这个顺序将会影响到几何对象的最终位置。
程序员应该将每一项逻辑操作放在一个单独的Transform3D对象中(例如,将旋转和平移操分别放在不同的对象中),Java 3D在遍历渲染整个场景图时,会将这些变换组合在一起。但是要注意变换之间是不可以互换的,先旋转再平移和先平移再旋转的结果不相同,虽然在很多情况下它们看上去是一样。
下面这几段代码示例是 TransformOrder.java 的简化程序块,前两段中各自包含了两个相同的 TransformGroup 节点和一个Cone节点,一个连接在另外一个下面,区别在于连接它们的次序和 Cone 的颜色。在红色Cone中,objRotate TransformGroup (旋转)位于 objTranslate(平移)之上;而对于黄色Cone,平移在顶部,旋转在下面。区别意味着根节点到圆锥(Cone)之间路径有不同的次序。
Void rotateOnTop(){
topNode.addChild(objRotate);
objRotate.addChild(objTranslate);
objTranslate.addChild(redCone);
}
void translateOnTop(){
topNode.addChild(objTranslate);
objTranslate.addChild(objRotate);
objRotate.addChild(yellowCone);
}
void noTransform(){
topNode.addChild(purpleCone);
}
|
|