接触打飞机的游戏时都会碰见把摄像机绕 x 轴顺时针旋转 90°形成俯瞰的视角的去看飞船。也没有多想,就感觉是坐标系绕 x 轴旋转 90°完事了。但是昨天用手比划发一下发现不对。我就想这样的话绕 x 轴顺时间选择 90°坐标系旋转了,Game 视图中的平面还是 xy ,可实际为什么平面变成了 xz 呢?

摄像机不是其他的 gameobject 的 child 且 rotation 是 (0, 0, 0) 此时可以左手坐标系查看 Game 视图中的物体,Game 视图平面在 xy 平面,z 轴表示物体的远近。如下图所示。物体顺着蓝色箭头(z 轴)的方向移动,则会越来越远,此时物体的 z 轴坐标值越来越大。

此时然后我以 0 30 60 90 调节摄像机的 x 轴上的 rotation ,发现摄像机照射的区域也在旋转。当摄像机的 rotation 是 (90, 0, 0) 时如下图所示。图中蓝色箭头此时是 y 轴,虽然箭头向下,但并不表明顺着这个箭头移动 y 轴值的会越来越大,相反反而会越来越小,但是顺着蓝色箭头移动在 Game 视图中物体是越来越远的(注意:我是在 Unity 5.2.3 版本)。

经过思考后我理解了为什么摄像机绕 x 轴旋转 90°Game 视图中的平面就变成了 xz 平面。

  • 摄像机绕 x 轴旋转,仅仅是摄像机的照射区域发生了变化,从原来的基础上顺时针旋转了 90°。如果 gameobject 不是摄像机的 child ,此时不影响到 gameobject 。
  • 虽然非摄像机的 child 的 gameobject 不会受摄像机的旋转影响,但是 gameobject 移动在 Game 视图中显示发生了变化。因为可以理解摄像机本身的坐标系没有旋转,而是投射区域旋转,投射区域绕 x 轴顺时针旋转 90°时(假设以前的 rotation 是 (0, 0, 0) ),刚好投射平面(也就是 Game 视图)从 xy 平面变成了 xz 平面。
  • 我在 Scene 视图中被蓝色箭头的指向误导了,以为蓝色箭头就是 z 轴,顺着这个箭头移动 z 轴的坐标值就会增大,很显然不是这样。所以就不明白 Unity 这样显示箭头是为了什么目的。我印象中在 Unity4.6 中摄像机绕 x 轴旋转时,Scene 视图中的摄像机坐标系显示是没有变化的,看来不同版本也是有差别的。
  • 上图用 Game 视图表示摄像机的投射平面不是太准确,实际情况下很有可能多个摄像机在 Game 视图中显示内容呢。这里我们就一个摄像机,就这样表述了。

Unity 摄像机旋转初探的更多相关文章

  1. Unity摄像机围绕物体旋转两种实现方式

    第一种,使用Transform 函数 RotateAround. 代码如下: public Transform target;//获取旋转目标 private void camerarotate() ...

  2. Unity 摄像机组件

    今天看一下unity3d里面的摄像机是怎么调用和操作的. 打开unity3d新建一个工程.在我们打开工程的时候unity3d会主动添加一个Main Camera,在Hierartchy视图中.点击Ma ...

  3. Unity 摄像机Clear Flags和Culling Mask属性用途详解

    原文地址:http://blog.csdn.net/tanmengwen/article/details/8798231 1.简述两个属性 1.1 Clear Flags 清除标记 每个相机在渲染时会 ...

  4. Unity摄像机的正交视图与透视图

    Unity Camera的两种模式 Projection:投射,投影 Unity的MainCamera的Projection可选择Perspective[透视],Orthographic[正交],是指 ...

  5. unity的旋转

    绕着一个点旋转 : transform.RotateAround(Vector3.zero, Vector3.up, speed* Time.deltaTime ); 第一个参数,点的位置.第二个参数 ...

  6. [转]Unity 3D旋转矢量方向及二维平面基于一点选择另一点(Rotate a Vector3 direction & Rotate a point about another point in 2D )

    http://specialwolf.blog.163.com/blog/static/124466832201301332432766/ ****************************** ...

  7. unity 对象旋转,自转

    1.对象具体的围绕哪个轴旋转,对应的设置值: transform.Rotate(new Vector3(1,0,0));  //绕x轴旋转    //默认是物体围绕世界坐标的XYZ轴旋转,即物体绕着世 ...

  8. Creator4.2建模心得与技巧1——树的建立与跟随摄像机旋转

    Creator建模: 树一般在虚拟现实程序中都用面来实现,一种方法是通过两个面相互垂直成90度叠放在一起,另一种方法是让树面正对着视角一起旋转.这里主要说一下第二种方法. 主要思路:把树面一直正对着摄 ...

  9. Qt irrlicht(鬼火)3D引擎 摄像机旋转问题

    点击打开链接Irrlicht中的摄像有一个函数 setUpVector() if (m_device != 0 ) { core::vector3df rotation(y,x,0.f); m_cam ...

随机推荐

  1. 转python版本的curl工具pycurl学习

    一 pycurl介绍 pycurl模块为libcurl库提供了一个python接口.libcurl是一个开源免费且方便快捷的基于客户端的url传输库,支持FTP,HTTP,HTTPS,IMAP,IMA ...

  2. [技术讨论]关于前几天公布的京东bug上的问题分析

    1.  起因 前两天我公布了一个京东微信端截取到的三张图.并简单阐述了这三张图中的bug发现过程: 有朋友的评价是图中这种,可实际上.他应该是没有看出来这个bug代表的内容有多少.今天心血来潮决定具体 ...

  3. 有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值。

    // ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream& ...

  4. 1-3:CSS3课程入门之伪类和伪元素

    E:target 表示当前的URL片段的元素类型,这个元素必须是E E:disabled 表示不可点击的表单控件 E:enabled 表示可点击的表单控件 E:checked 表示已选中的checkb ...

  5. maven新建项目报错

    创建了一个maven项目,报错 Errors occurred during the build. Errors running builder 'Maven Project Builder' on ...

  6. Oracle学习第二篇—单行函数

    1字符函数 length  字符长度 lengthb 字节长度 lower 变为小写 upper 变为大写 initcap 首字母大写 select Lower('xun Ying') 小写,Uppe ...

  7. Mysql代码建外键问题

    用下面代码建外键 运行之后 没有提示错误 但是打开建好的表格 外键并没有建立上 打开外键栏 里面并没有外键 在从表设置了外键列里面输入东西没有任何限制 成功建立应该是下面这样 什么情况???????? ...

  8. iOS与H5交互及UIWebView缓存

    iOS原生App与H5页面交互笔记 最近在做一个项目用到了原生App与H5交互,之前有做过简单的H5页面直接调用原生方法的例子,就是利用UIWebView中的代理方法 //webview每次加载之前都 ...

  9. PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析(转)

    sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort() 函数用于对数组单元从低到高进行排序并保持索引关系. arsort() 函数用于 ...

  10. CUDA: 共享内存与同步

    CUDA C支持共享内存, 将CUDA C关键字__shared__添加到变量声明中,将使这个变量驻留在共享内存中.对在GPU上启动的每个线程块,CUDA C编译器都将创建该变量的一个副本.线程块中的 ...