基础知识09镜头位置变化[转]

转载 原文为 http://www.pan3d.me/tutorial 作者 Pan3d.Me

基础知识09镜头位置变化[转]
在这个例子中,我们观察右上角的小图,红色点为镜头的位置,两条细线相交的点就是 传说中的镜头焦点,

开口方向为为镜头方向(这是一个俯视图,所以只能表现对Y轴的偏转)

镜头的基本性属性, 一定有一个空间坐标, 一定会有焦距,也就有一个焦点,但大家应该也知道不同的镜头

的焦距是可变的,这章节我们先设计他的焦距为 br=500,暂时没必要太纠结这个,接下来我们会再接触到的

程序解释:

①. 在这里我用到了 _d 来设计镜头到(0,0,0)点的距离 初始值

private var _d:Number=500


②. 改变距离

private function _on_Mouse_Wheel(evt:MouseEvent) {
_d=_d+evt.delta*10
}


③.跟据 _d 和镜头的  _Cam.angle_y 以及 (0,0,0)点 计算出 镜头的坐标()

private function _catch_cam(_Cam) {  //设置镜头坐标  (可以对应左上角的镜红点(运行SWF))
var _focus_3d:Vector3D = new Vector3D(0, 0, 0)
var rx = 0;
var ry = 0;
var rz = _d;
var view_angle_y = _Cam.angle_y-180
var tmp_angle_y = view_angle_y * Math.PI / 180;
var tmp_rx = rx;
rx = (Math.cos(tmp_angle_y) * tmp_rx + Math.sin(tmp_angle_y) * rz);
rz = (Math.sin(tmp_angle_y) * tmp_rx + Math.cos(tmp_angle_y) * rz);
_Cam.x = rx;
_Cam.z = rz;
}
这个计算公式非常重要,总之就是 给个初始坐标,旋转 一个角度后 得到 一个新的坐标 (争对的是二维)

④如果观察仔细的同学会发现当改变镜头位置时,那红点穿过了房子,也就是到房子的另一边去但视窗

仍然能看到,房子还是变大的,(所以这里值得注意,因为是虚拟镜头,只要对象在焦点的前面都是能看得见的

焦点的前面,取绝于镜头的方向)

附: 对于3D的表述有点难,还是要自己多运行对比,观查参数变化

你可能感兴趣的:(ITeye)