基础知识09画面位置变化[转]
基础知识09镜头位置变化[转]
转载 原文为 http://www.pan3d.me/tutorial 作者 Pan3d.Me
![基础知识09画面位置变化[转] 基础知识09画面位置变化[转]](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDEyLzExLzA5LzEzNDgwODI4MjcuanBn)
在这个例子中,我们观察右上角的小图,红色点为镜头的位置,两条细线相交的点就是 传说中的镜头焦点,
开口方向为为镜头方向(这是一个俯视图,所以只能表现对Y轴的偏转)
镜头的基本性属性, 一定有一个空间坐标, 一定会有焦距,也就有一个焦点,但大家应该也知道不同的镜头
的焦距是可变的,这章节我们先设计他的焦距为 br=500,暂时没必要太纠结这个,接下来我们会再接触到的
程序解释:
①. 在这里我用到了 _d 来设计镜头到(0,0,0)点的距离 初始值
②. 改变距离
③.跟据 _d 和镜头的 _Cam.angle_y 以及 (0,0,0)点 计算出 镜头的坐标()
④如果观察仔细的同学会发现当改变镜头位置时,那红点穿过了房子,也就是到房子的另一边去但视窗
仍然能看到,房子还是变大的,(所以这里值得注意,因为是虚拟镜头,只要对象在焦点的前面都是能看得见的
焦点的前面,取绝于镜头的方向)
附: 对于3D的表述有点难,还是要自己多运行对比,观查参数变化
转载 原文为 http://www.pan3d.me/tutorial 作者 Pan3d.Me
在这个例子中,我们观察右上角的小图,红色点为镜头的位置,两条细线相交的点就是 传说中的镜头焦点,
开口方向为为镜头方向(这是一个俯视图,所以只能表现对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的表述有点难,还是要自己多运行对比,观查参数变化