注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mississippi的博客

学习使人进步

 
 
 

日志

 
 

CameraObject3D 和Camera3D  

2009-07-07 00:10:45|  分类: FLEX学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

CameraObject3D 和Camera3D

CameraOcject3D是所有相机的基类,它继承自DisplayObject3D类,

几个术语解释:

焦距(focus)与视角(fov)(其概念来源于真实相机的镜头):

焦距:观察者视点到成像平面的距离(正值),通常镜头使用mm为单位,PV3D中焦距单位是象素。视角:观察者视点与成像平面形成的夹角,有垂直,水平和对角线视角之分,PV3D里是指垂直视角(人眼的视角约54度)。焦距与视角有密切的信赖关系,在成像平面固定且相机位置固定的情况下,焦距越小,视角越大,成像的物体越小同时也更变形(相当于广角镜头),反之,焦距越大,视角越小,成像的物体越大也更接近正交视图(相当于长焦镜头)——焦距与视角可按公式计算:视角=atan(成像平面高/2倍焦距)* 2。 

PV3D相机的成像平面到底有多大?它是相机viewport属性值再除以相机zoom值。——默认,BasicView的系统相机zoom值为40,因此,如viewport=(0,0,800,400)的话,则该相机的成像平面只有20*10象素。

near和far:

与其他三维软件相比如MAYA,感觉PV3D中没有真正意义上的near——它被设成与focus同值。near和far意即近平面和远平面,在此区间内的物体才能成像。

Camera的旋转

相机旋转是最容易搞乱方向(坐标)的操作。需要把自己想象并置身于虚拟的三维空间中才能细细体会。旋转规则:与大部分三维软件一样,遵循右手法则(以确定旋转的正向)。正确理解和确定旋转的三个要素:1、旋转中心,2、旋转轴,3、正方向(按右手法则,逆时针为正)。

 PV3D中相机有两组旋转属性:localRotation(XYZ)——相对于本地坐标系旋转,旋转中心为视点,rotation(XYZ)——相对于全局世界坐标系旋转,旋转中心为坐标原点。

例如有一台初始相机(target=null,lookAt未设置,旋转XYZ值均为0)。如果localRotationX=50,则类似于在现实生活中照相时将相机从平视角度旋转对着天空。在PV3D场景中,视图上的物体看起来象是往向下移。——需要注意的是,相机的rotationX值却等于-50,,这是因为相机逆时针旋转时,相对于世界坐标而言,却是顺时针旋转(想象一下两个啮合的齿轮),故值为负。

 如果把自己的头比做一台相机,则localRotation旋转可简单理解为相似的动作:X旋转:上、下点头;Y旋转:左、右摇头;Z旋转:右、左歪头。

有两个会影响到相机旋转的属性或方法:

target 和 lookAt():

target和lookAt()都是由系统自动地旋转相机转向目标(过程中,会在不改变相机位置的情况下自动修正了XYZ旋转值,使其能对准目标)。它们之间的区别是:target设置目标后,相机就永远朝着这个它,除非解除限制(larget=null),而lookAt()仅仅是做一次转向目标的动作(修正旋转值),随即解除限制。

所有DisplayObject3D对象(包括另一相机或灯光)均可成为target和lookAt()目标。

一旦使用了terget限制了相机方向,则localRotation和rotation旋转均失效不再响应。

Camera的移动

 移动相对旋转要容易理解一些,但也要搞清楚移动时参考的坐标系。

PV3D中相机有两种移动:xyz属性(相对于世界坐标系)、move系列(moveForward、moveBackward等上下左右前后六个方向,它们是相对于相机自身的坐标系,此坐标系取决于相向的朝向)。

需要说明的是target和lookAt()对移动的影响:

1、任何情况下,target和lookAt()都不会改变相机位置,但可能会改变相机的旋转值。

2、一旦设置了target,不论是使用xyz属性还是使用move系列,移动的同时还会自动改变其旋转值(除非解除了target限制)——系统的执行过程是这样的,首先把相机移动到预定位置,然后再根据target自动地旋转。比如,当相机设置了目标为A物体后,如果不断地使用moveLeft(),结果是相机围绕A画出一条螺旋线(离A越来越远)。

Camera的组合动作

1、pitch:相机位置不变,以视觉上的水平轴为旋转轴上下旋转,设置了target时无效;

2、

  评论这张
 
阅读(1351)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017