`
ienown
  • 浏览: 6769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多
转载 原文为 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
分享到:
评论

相关推荐

    光电传感器基础知识及术语

    光电传感器是一种小型电子设备,它可以检测出其接收到的光强的变化。早期的用来检测物体有无的光电传感器是一种小的金属圆柱形设备,发射器带一个校准镜头,将光聚焦射向接收器,接收器出电缆将这套装置接到一个真空...

    视频监控系统基础知识培训教程.doc

    再有,随着居民 收入的提高,消费水平和结构发生了较大的变化,人们的自我保护意识也有所改变,大多 数人愿意通过安全产品保障自己的财产及生命安全,从而使安全产品的需求不断提高; 另一方面,"911事件"以后国际恐怖...

    福禄克热像仪基础知识

    红外的基本构造1)红外镜头: 接收和汇聚被测物体发射的红外辐射;2)红外探测器组件: 将热辐射型号变成电信号;3)电子组件: 对电信号进行处理;4)显示组件: 将电信号转变成可见光图像;5)软件: 处理采集到的温度...

    基于相对熵和ESD检测的视频关键帧抽取算法

    此基础上本文根据镜头内容变化的剧烈程度将镜头进行细分为不同类型的子镜 头,并在每个子镜头内部抽取关键帧。另外,本文还提出一种采用层次策略的视 频关键帧的多尺度摘要方案。通过大量视频数据的实验测试,将本文...

    光电传感器的基础知识以及术语

    光电传感器是一种小型电子设备,它可以检测出其接收到的光强的变化。早期的用来检测物体有无的光电传感器是一种小的金属圆柱形设备,发射器带一个校准镜头,将光聚焦射向接收器,接收器出电缆将这套装置接到一个真空...

    传感技术中的光电传感器基础知识

    光电传感器是一种小型电子设备,它可以检测出其接收到的光强的变化。早期的用来检测 物体有无的光电传感器是一种小的金属圆柱形设备,发射器带一个校准镜头,将光聚焦射向接收器,接收器出电缆将这套装置接到一个...

    传感技术中的光电传感器的基础知识以及专业术语

    光电传感器是一种小型电子设备,它可以检测出其接收到的光强的变化。早期的用来检测物体有无的光电传感器是一种小的金属圆柱形设备,发射器带一个校准镜头,将光聚焦射向接收器,接收器出电缆将这套装置接到一个真空...

    基于MATLAB的人脸动态追踪

    由于肤色信息具有对放大和缩小以及对微小变形不敏感的优点,加上人脸相对镜头的变化对肤色信息本身的影响不大,该类方法很容易在前一帧图象分析结果的基础上跟踪到后一帧图象的人脸区域,因此具有速度快、姿态不变性...

    跨国公司的知识体系方法:概念基础和研究意义-研究论文

    然而,尽管被称为“基于知识的观点”的见解集是一个有前途的理论镜头,但见解并没有组织成一个统一的框架,并且在理解如何将知识转变为竞争的来源方面存在很大的漏洞。跨国公司的优势。 为了推动跨国公司的基于知识...

    客户管理的相关概念和事例

    客户管理方面的知识,CRM的实施目标,实施阶段及CRM系统的构成。成功实施CRM的关键因素 项目实施组织结构的建立 软件供应商及实施伙伴的选择 CRM的定义 成功导入CRM的关键因素是什么?CRM的成功案例 在实施CRM的旅程...

Global site tag (gtag.js) - Google Analytics