在unity里 相机空间 与 相机gameObject的局部空间 不重合。

Camera.worldToCameraMatrix的文档中有这样一句话:

Note that camera space matches OpenGL convention: camera's forward is the negative Z axis. This is different from Unity's convention, where forward is the positive Z axis.

意思是说unity中相机gameObject的蓝轴是相机空间的-Z。

为了确认,做了如下实验:

如图,立方体的坐标是(0,0,0),相机的坐标是(0,0,-3),我们要计算并输出立方体在相机空间的坐标。

做法是为立方体添加如下脚本:

using UnityEngine;
using System.Collections;
public class printPosInCameraSpace : MonoBehaviour {
    public GameObject m_cameraRef;
    // Use this for initialization
    void Start () {
        Matrix4x4 worldToCameraMat = m_cameraRef.GetComponent<Camera>().worldToCameraMatrix;
        Vector3 thisPosInWorld = transform.position;
        Vector3 thisPosInCamera = worldToCameraMat.MultiplyPoint (thisPosInWorld);
        Debug.Log (thisPosInCamera);
    }
}

并在编辑器中将camera赋给m_cameraRef.

然后运行脚本,得到输出结果为:(0,0,-3)。

这说明相机gameObject的蓝轴确实是相机空间-Z轴。

进一步实验:

将脚本改为:

using UnityEngine;
using System.Collections;
public class printPosInCameraGameObjectLocalSpace : MonoBehaviour {
    public GameObject m_cameraRef;
    // Use this for initialization
    void Start () {
        Matrix4x4 worldToCameraMat = m_cameraRef.transform.worldToLocalMatrix;
        Vector3 thisPosInWorld = transform.position;
        Vector3 thisPosInCamera = worldToCameraMat.MultiplyPoint (thisPosInWorld);
        Debug.Log (thisPosInCamera);
    }
}

输出结果为:(0,0,3)。

--结论:

相机空间 和 相机gameObject的局部空间 是不重合的。图中这三个坐标轴表示的是 相机gameObject的局部空间。 而 相机空间 则Z轴方向与之相反。

Camera.worldToCameraMatrix是 世界空间to相机空间 矩阵。Camera.transform.worldToLocalMatrix是 世界空间to相机gameObject的局部空间 矩阵,两个矩阵是不一样的。

unity, 相机空间 与 相机gameObject的局部空间的更多相关文章

  1. 【Unity】2.8 相机(Camera)

    分类:Unity.C#.VS2015 创建日期:2016-03-31 一.简介 Unity的相机用来向玩家呈现游戏世界.你在场景中始终至少有一个相机,但也可以有多个.多个相机可以带给您双人分屏效果或创 ...

  2. Android调用系统相机、自定义相机、处理大图片

    Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理 ...

  3. 有关默认相机转VR相机

    呃...15年开篇~ 去年想写一个有关默认相机转VR相机的脚本,当时没写完,今天不小心翻到并写完了,而且思路也和原来完全不一样了,增加了是否删除原相机与是否转换所选相机的选项. 由于国内VR版本比较混 ...

  4. 干货 | LIDAR、ToF相机、双目相机如何科学选择?

    点击"计算机视觉life"关注,置顶更快接收消息! 本文阅读时间约5分钟 本文翻译自卡内基梅隆大学 Chris asteroid 三维视觉技术的选择 传感器参数及定义 LIDAR ...

  5. 3dmax 物体的真正局部空间原点

    假设在3dmax中创建一个 长x宽x高=1cm x 1cm x 1cm 的单位立方体,则默认局部坐标系原点在底面中心,进入 “层次”面板->轴->调整轴,按下“仅影响轴”,再点“居中到对象 ...

  6. cocos2dx 3.3将坐标由父空间转化到局部空间

    设在node的父空间内有一点p,要求其转化到node局部空间后的坐标p_local,代码如下: node->getNodeToParentTransform();//in order node- ...

  7. OpenGL 的空间变换(下):空间变换

    通过本文的上篇 OpenGL 的空间变换(上):矩阵在空间几何中的应用 ,我们了解到矩阵的基础概念.并且掌握了矩阵在空间几何中的应用.接下来,我们将结合矩阵来了解 OpenGL 的空间变换. 在使用 ...

  8. 有一台机器,上面有m个储存空间。然后有n个请求,第i个请求计算时需要占 R[i]个空间,储存计算结果则需要占据O[i]个空间(据O[i]个空间(其中O[i]<R[i])。问怎么安排这n个请求的顺序,使

    有一台机器,上面有m个储存空间.然后有n个请求,第i个请求计算时需要占 R[i]个空间,储存计算结果则需要占据O[i]个空间(据O[i]个空间(其中O[i]<R[i]).问怎么安排这n个请求的顺 ...

  9. [原][数学][C++][osg]空间向量OA到转到空间向量OB、以及四元素Q1转到Q2的函数

    注意:Oa其实在OK的延长线上,上图只是为了好看才把Oa和OK分开了 算法需求如图所示: 已知空间向量OA和空间向量OB 我想算出OA向OB按某角度或者某时间移动 变成空间向量Oa的算法 先说废话:我 ...

随机推荐

  1. 任务驱动,Winform VS WEB对比式学习.NET开发系列第一篇------身份证解析(不断更新的WEB版本及Winform版本源码)

    一 本系列培训随笔适用人群 1. 软件开发初学者 2. 有志于转向Web开发的Winform程序员 3. 想了解桌面应用开发的Web程序员 二 高效学习编程的办法 1 任务驱动方式学习软件开发 大部分 ...

  2. Google Chrome 39.0.2171.71 正式发布

    Google Chrome,又称Google浏览器,是一个由Google(谷歌)公司开发的网页浏览器.该浏览器是基于其他开源软件所撰写,包括WebKit,目标是提升稳定性.速度和安全性,并创造出简单且 ...

  3. 固定的价格就意味着背叛——《practices of an agile developper》

    “对这个项目,我们必须要有固定的报价.虽然我们还不清楚项目的具体情况,但仍要有一个报价.到星期一,我需要整个团队的评估,并且我们必须要在年末交付整个项目.” Venkat & Andy 提出了 ...

  4. Linux命令大全----系统管理相关命令

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka       摘要:本文主要讲了Linux命令大全----系统管理相关命令,并附有实例 一.安装 ...

  5. Pydoc 本地 HTML 形式查看

    Pydoc 本地 HTML 形式查看 我们在编写Python代码时,常常会去查询某些模块及函数的使用,会选择 dir() 及 help() 函数.或查看 CHM 格式的Python帮助文档.或查看Py ...

  6. Perl &amp; Python编写CGI

    近期偶然玩了一下CGI,收集点资料写篇在这里留档. 如今想做HTTP Cache回归測试了,为了模拟不同的响应头及数据大小.就须要一个CGI按须要传回指定的响应头和内容.这是从老外的測试页面学习到的经 ...

  7. MANIFEST.MF文件Class-Path:节点需要引入的jar太多解决方案

    每行开头结尾都要有一个空格(半角的) 例子如下: Manifest-Version: 1.0 Class-Path: lib/mongo-java-driver-2.11.4.jar lib/guav ...

  8. MySQL数据类型varchar详解

    1.varchar(N)的逻辑意义从MySQL 4.1开始,varchar(N)中的N指的是该字段最多能存储多少个字符(characters),不是字节数.不管是一个中英文字符或者数字.或者一个汉字, ...

  9. SMTP用户枚举原理简介及相关工具

    前言 SMTP是安全测试中比较常见的服务类型,其不安全的配置(未禁用某些命令)会导致用户枚举的问题,这主要是通过SMTP命令进行的.本文将介绍SMTP用户枚举原理以及相关工具. SMTP SMTP命令 ...

  10. IP数字,数字IP

    DECLARE @ip VARCHAR(60)='113.118.138.159'DECLARE @ip_int BIGINT=[dbo].[f_IP2Int](@ip) SELECT [IPstar ...