转载 原文为 http://www.pan3d.me/tutorial 作者 Pan3d.Me
在这个程序中我们的镜头具备了绕X轴旋转的效果了, 而我们在之前的程序中镜头角度只有angle_y在改变,
也就是只在绕着Y轴在转而以,并不能绕X轴在转。 (简单我们可以理解 镜头一般都可以向上向下,向左向右)
我们是通过MOUSE 的x,y来修改镜头的 两个偏转角值的 angle_y,angle_x,到这一步我们其本上就可以做到3D
空间里镜头成像的效果了,
一、程序解释
在这个例子中,基本的数据模型跟上一个一样的,只有镜头计算映射过程中多加了一些程序来处理
①.设计一个固定的点,用来捆定镜头
private var _focus_3d:Object={ x:0, y:0, z:0, angle_x:0, angle_y:0, angle_z:0 } //
设定一个点 _focus_3d 用来记录这个点,然后会通过这个间来计算镜头的位置
②.计算出镜头的位置及角度(代入镜头)
private function _catch_cam(_Cam) { //设置镜头坐标 (可以对应左上角的镜红点(运行SWF))
var view_angle_x = _focus_3d.angle_x
var view_angle_y = _focus_3d.angle_y-180
var rx = 0;
var ry = 0;
//var rz = _Cam3D._distance
var rz =_d
var tmp_angle = view_angle_x * Math.PI / 180;
var tmp_ry = ry;
ry = (Math.cos(tmp_angle) * tmp_ry – Math.sin(tmp_angle) * rz);
rz = (Math.sin(tmp_angle) * tmp_ry + Math.cos(tmp_angle) * rz);
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 + _focus_3d.x;
_Cam.y = ry + _focus_3d.y;
_Cam.z = rz + _focus_3d.z;
_Cam.angle_x = _focus_3d.angle_x;
_Cam.angle_y = _focus_3d.angle_y;
}
在这个函数的用意,是跟据 focus_3D 来算出一个镜头的位置。
在这里,为了能直观的了解程序的功能,那就得先设计 其中一个偏转角为0(angle_y,angle_x)
慢的去改变另一个角度值的变化,没有直接能用语言可以表达的,只能慢慢的去领悟。或对比最后
处到的镜头坐标来比较
③.计算3D点映射到镜头上的2D位置
public function math_change_point(_3dpoint) {
var rx = _3dpoint.x -_Cam.x
var ry = _3dpoint.y -_Cam.y
var rz = _3dpoint.z -_Cam.z
var sin_y = Math.sin(_Cam.angle_y * Math.PI/180);
var cos_y = Math.cos(_Cam.angle_y * Math.PI / 180);
var sin_x = Math.sin(_Cam.angle_x * Math.PI/180);
var cos_x = Math.cos(_Cam.angle_x * Math.PI/180);
var tmp_rx = rx;
rx = cos_y * tmp_rx – sin_y * rz;
rz = sin_y * tmp_rx + cos_y * rz;
var tmp_ry = ry;
ry = cos_x * tmp_ry – sin_x * rz;
rz = sin_x * tmp_ry + cos_x * rz;
_3dpoint.bx = rx;
_3dpoint.by = ry;
_3dpoint.bz = rz;
}
这段程序,最好是先看上一节的例子,因为上一节只对angle_y进行运算,在这里只是多加了关于
angle_x的偏转。 没必要死记,只要知到这样计算出来的结果是正确的就可以了
- 大小: 80.2 KB
分享到:
相关推荐
### 光学镜头基础知识 #### 一、CCD与CMOS特性对比 在现代数字成像技术中,**电荷耦合器件(CCD)**和**互补金属氧化物半导体(CMOS)**是最常见的两种图像传感器技术。它们在性能、成本及应用场景等方面存在显著...
本篇文章将深入探讨光学镜头的基础知识,包括CCD与CMOS传感器的比较,相机成像质量的主要评测参数,以及测试方法和图像分析软件的运用。 首先,我们要了解光学镜头的基本结构。镜头如同人眼的晶状体,它负责汇聚...
本篇文章将深入探讨机器视觉的基础知识,主要包括CCD(Charge-Coupled Device)传感器、镜头、照明、视觉检测、测量检测、位置调节以及滤镜。 首先,我们来了解CCD,这是一种广泛用于图像捕捉的半导体设备。CCD能将...
摄像基础知识涵盖了构图、镜头角度、运动和用光技巧等多个方面,这些都是摄像人员在创作过程中必须掌握的关键技能。构图是摄像艺术的核心,它决定了画面的视觉效果和信息传达。在影视制作中,构图不仅仅是画面元素的...
本文旨在为读者提供安防工业相机镜头的基础知识,包括但不限于镜头的光圈、景深等关键概念及其在实际应用中的作用。对于安防领域来说,高质量的图像采集至关重要,而这一过程的核心组件之一就是相机镜头。一个合适的...
### 安防基础知识 #### 一、安防基础知识概述 安防基础知识是关于安全防范系统的理论与实践知识体系,涉及物理安全、网络安全、视频监控等多个方面。本文档将从安防产品的技术特点出发,详细介绍星光级产品的技术...
这篇文档主要涵盖的是摄影基础知识和相关软件应用的考试题库,包括Photoshop、Premiere、After Effects以及基础摄影课程的内容。这些知识点对于理解和掌握影视后期制作及摄影摄像技术至关重要。 1. 新闻摄影主要...
本培训教材主要聚焦于闭路监控系统的基础知识,帮助读者理解并掌握安防系统的核心组件。 **闭路监控系统** 闭路监控系统是安防领域的核心组成部分,用于实时监测、记录和分析特定区域的活动。系统通常由以下几个...
### 摄像头基础知识详解 #### 一、摄像头的结构组成 摄像头作为一个重要的视觉捕捉设备,其内部结构复杂而精密。一般来说,摄像头主要由以下几个部分组成: 1. **红外滤光片(IR Filter)**:用于过滤光线中的...
总的来说,"zemax镜头文件"是一份宝贵的学习资料,它涵盖了Zemax的基础知识和实际应用,对于想要进入光学设计领域的人员来说,是不容错过的资源。通过深入研究和实践这些镜头文件,你可以逐步掌握光学设计的技巧,...
本篇文章将深入探讨机器视觉的基础知识,包括光源选型、Cognex的相关知识以及工具的使用。 首先,我们来谈谈光源选型。光源在机器视觉系统中起着至关重要的作用,因为它直接影响到图像的质量和检测效果。光源的选择...
因此,掌握一些主流数码产品的基础知识和原理,不仅可以提高我们对这些产品的使用效率,还能让我们在日新月异的科技浪潮中立于不败之地。下面,我们就将从几个方面为您介绍目前最主流数码产品的相关知识,希望能够...
### 摄影基础知识——相机镜头知识入门 #### 一、镜头基础知识 **1.1 镜头定义** 在摄影领域中,镜头是指由多个透明光学元件(通常是玻璃)组成的装置,这些元件能改变光线的路径,从而使物体成像在相机的感光...
电视基础知识是视听觉媒体的重要组成部分,它涉及到电视信号的生成、传输和显示等多个环节。这份“视听觉媒体电视基础知识PPT学习教案”显然是一个详细的教学资料,旨在帮助学习者理解电视技术的基本概念和工作原理...
影视制作涉及多个方面,从团队组成到具体的技术术语,每一步都是创造影视作品不可或缺的环节。...通过理解这些基础知识,我们可以更好地欣赏和分析影视作品,同时也为潜在的创作者提供了入门指导。
* 变焦距镜头:通过安装在影机的变焦距镜头的焦距变化,使拍摄对象在不改变与摄影机的距离的条例下,加速或匀速的拉远或推近 摄法是电影摄影的一种基本技术,用于控制镜头的运动和角度,以达到不同的视觉效果。 ...
视频监控系统基础知识培训涉及了视频监控系统的各个关键组成部分,包括摄像机、镜头以及摄像机辅助装置等,这些都是构建有效监控系统不可或缺的要素。 首先,摄像机是视频监控系统的核心部分,它根据不同的特性进行...
为了使用这个压缩包中的代码,你需要具备一定的编程基础,尤其是Python语言和图像处理库如OpenCV的知识。代码可能包含一些关键函数和类,如`shot_detection()`用于镜头分割,`keyframe_extraction()`用于关键帧提取...
剧本创作艺术基础知识测试 剧本是戏剧艺术的核心,它既是舞台表演的基础,也是影视制作的蓝图。剧本创作涉及多个方面,包括故事构思、角色塑造、情节安排、对话设计以及视觉元素的考虑。 一、判断题中提到的知识点...