您的位置:首页 > 其它

Away3d 三维物体的操控

2011-05-01 16:05 176 查看
Away3d 三维物体的操控
三维空间里的移动

在Away3d所有三维物体都可以通过设置x/y属性产生移动,象二维里一样。当然三维里还可以设置z值。

obj.x = 100;obj.y = -100;obj.z = 100;

X/y/z的值可正可负,且是相对于三维世界、视口的中心。

你可以用moveTo()方法和position属性不费吹灰之力设置好x/y/z值。

obj.position = new Number3D(100,-100,300);obj.moveTo(100,-100,300);

同一效果。不同就是 position 要提供一个 Number3D,而moveTo()你只要提供简单数值就行。

如果你想让一个3D物体朝向另一3D物体或朝向场景中的一特定点时,你要用到lookAt方法:

obj.lookAt( new Number3D(0,0,0)); obj.lookAt( sphere.position );

Away3D 同时还提供一些特殊的移动三维物体的方法:

obj.moveForward(X);obj.moveBackward(X);obj.moveUp(X);obj.moveDown(X);

obj.moveLeft(X);obj.moveRight(X);

旋转

你可以用rotation属性让三维物体沿任一轴绕自已中心点转动:

obj.rotationX = 45;obj.rotationY = -10;obj.rotationZ = 200;

你还可以更方便设置rotation的值:

cube.rotateTo(45,45,0)

缩放

你可以让三维物体沿三个轴产生缩放。

obj.scaleX = 2;obj.scaleY = .5;obj.scaleZ = 1;

缩放值设为1时为原来大小、设为2时将是原来二倍、设为0.5则是原来的一半大小。更简单等比例缩放一三维物体要用到scale()方法:

obj.scale(2);

这样会将物放大为原来二倍。

组合三维物体

当我们要同时操控多个三维物体,我想这时你绝对会先将这些三维物体组合在一块。在Away3d里组合三维物体会用到"ObjectContainer3D",将3D物体添加"ObjectContainer3D"里面如同将其添加到场景里上一样。

组合三维物体,先创建一个ObjectContainer3D然后将其加到场景中。

高级移动

偶尔,当从别的三维应用软件中加载一个其旋转方式不是你所希望那样的模型时,你会尝试做一些改变。那么你这样做吧:重新设置旋转值。然后应用于3D物体。

obj.rotationY = 45;obj.applyRotations();

有时你也想尝试改变一个物体的中心,这样就可以让物体绕着另一点进行旋转。在flash的二维世界里,你可以通过改变注册点。在三维里这个注册点会被说成是"轴心点",改变三维物体的轴心点你要这么做:

obj.movePivot(0,0,-120);

Roll, Pitch 和 Yaw

Roll、Pitch和yaw也是旋转3D物体,它们与前面的 cube.moveForward那六个方法异曲同工, 都是针对自身坐标。rotationX/Y/Z旋转相对是世界坐标。

obj.roll(15);obj.pitch(5);obj.yaw(5);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: