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);
三维空间里的移动
在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);
相关文章推荐
- Away3d 基础4 -操控三维物体
- Away3d 三维物体的操控
- Away3d 基础4 -操控三维物体
- Unity开发Hololens应用,自动生成包裹物体大小的三维旋转和缩放边框
- 鼠标经过三维物体时放大并旋转,离开时停止旋转,恢复到原来大小
- d3d中三维物体到屏幕的呈现
- 三维物体消隐算法
- OpenGL Object Mouse Trackball 三维物体的trackball旋转实现原理
- freeglut 和 opengl实现三维物体的旋转和缩放
- OpenGL中三维物体显示在二维屏幕上显示的变换过程
- 小白学opengl之三维物体绘制
- Away3D学习笔记1 - 戏说Flash 三维引擎
- VTK: 检测点是否在三维物体内部
- 分享一款Flash三维物体展示的播放器软件
- 旋转三维物体(加三维物体上)
- ArcBall坐标旋转三维物体原理
- Ogre中文字类的纹理贴到三维物体中
- windows8.1轻松创建和打印3D对象即三维物体
- 建立Win32工程,向三维物体贴纹理
- 三维物体AABB碰撞检测算法