第三章后续翻译【完结】

Managing the scene  场景的控制

 

 

3d对象要想在舞台上呈现  需要加入到场景scence

Scence. addChild (3dObject);

以及移出场景:

Scence.removeChild(3dObject);

 

注意  :尽管这里的  addChild  removeChild flash API一样 但是其内部机制不一样!所以不能对flash对象使用away3d   addChild  removeChild  方法

 

得到3d对象中的子对象

 

 

通过使用ObjectContainer3D对象的children属性 得到一个子对象的数组

使用ObjectContainer3D.children.length  得到ObjectContainer3D子对象的个数

假如你知道某个子对象的索引 就可以用ObjectContainer3D.children【索引】得到具体的子对象  也可以通过 getChildByName()得到子对象

ObjectContainer3D.getChildByName(“子对象名称”)

注意直接使用索引比使用getChildbyName的效率高些 !因为getChildByName函数的本质也是在循环中比对name得来的!使用索引一步得到!.

 

我们不能在指定的索引位置添加3d对象(消耗太大)!因而使用Z-sorting排序来显示对象而不是通过索引(pv3d一样) .flash是通过索引来排序的! 所以在away3d/pv3d中没有getChildIndex() and setChildIndex()这样关于索引的方法

 

 

子对象可以用  parent属性来得到父对象容器

 

当将一个3dObject对象从一个容器移到另一个时,需要先从前一个容器中移出来,在添加进另一个容器!而flash可以直接addChild 进行添加.

 

 

故切换父容器代码为:

previousContainer.removeChild(3dobject);

nowContainer.addChild(3dobject);

 

 

出于对性能计算的考虑!尽量的少嵌套也就是容器层数越少越好

 

 

Moving, rotating, and scaling in 3D

 

rotationX, rotationY, and rotationZ  属性  具体的旋转讲解在第十章

 

 

 

 

 

 

 

 

 

Camera

 

Camera的种类 全在away3d.cameras包里

 

默认的cameraCamera3D  它呈现的是一个正面显示的透视图

 

默认的z轴坐标值为-1000 pv3d里一样  x=0, y=0

 

 

随着view3d的创建 默认的camera也就是创建了 当然 我们也可以像场景那样从新付给其camera

 

var camera: Camera3D = new Camera3D()

camera.x=0

camera.y=0

camera.z=-1000

view.camera= camera

 

 

 

 

Moving the camera

 

Camera具有zoom focus属性

默认的zoom =10

focus=100     focus的值就相当于照相机的镜头

当值很大时是长镜头,镜头拉长了,导致视野很小!人物变大

值很小时就是广角镜头,视野很大,人物变小

 

 

lookAt()方法对准3d对象

//Use lookAt() to point the camera towards the center of the scene

//camera.lookAt(new Number3D(0, 0, 0));//表示camera对准 (0,0,0)这个点  (0,0,0)camera的坐标的连线与camera的镜头垂直  默认的camera的镜头是沿着 Z轴正方向

//对准某个对象

camera.lookAt(_cube2.position)//Assign the new camera to the view

// pv3d  一样  lookAt()Object3D的方法所以pv3d的任何对象都可以使用

 

 

TargetCamera3D

TargetCamera摄像机  pv3d 里的一样,

具有target 属性 使camera始终对准target 

 

Away3d里默认的camera是无目标的camera (也就是pv3d里的freeCamera)

我们也可以在更新Enterframce函数里使用 lookAt(3d.position) 来使camera对准3d对象  当然 我们可以直接使用TargetCamera3D 只需设置属性target即可

 

var camera : TargetCamera3D = new TargetCamera3D();

camera.z = -1000;

//Assign the camera target as cube2

camera.target = _cube2;

//Assign the new camera to the view

_view.camera = camera;

 

 

 

HoverCamera3D

 

HoverCamera3D继承TargetCamera3D,它绕目标target环绕旋转

 

// Create a new camera object

_hoverCamera = new HoverCamera3D();

_hoverCamera.distance = 2000;//旋转半径

_hoverCamera.tiltAngle = 10;// camera垂直旋转 tilt是以X为轴进行旋转的角度

//Assign the new camera to the view

_hoverCamera.steps = 16;//设置缓动 0表示其运动时没有缓动easing  默认值为8  值越大缓动越明显也就是达到指定的角度时用的时间相对较长

_view.camera = _hoverCamera;

 

protected override function _onEnterFrame(ev : Event) : void

{

_hoverCamera.panAngle = stage.mouseX - stage.stageWidth/2;//camera水平旋转 pan是以Y为轴进行旋转的角度

_hoverCamera.tiltAngle = stage.mouseY - stage.stageHeight/2;// camera垂直旋转 tilt是以X为轴进行旋转的角度

 

_hoverCamera.hover();

_view.render();

}

 

SpringCam 用法 和pv3d里的SpringCamera类似

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值