Unity坐标系入门
一、坐标系的概念
Unity 世界坐标系采用左手坐标系,大拇指指向X轴(红色),食指指向Y轴(黄色),中指向手心方向歪曲90度表示Z轴(蓝色),同时Z轴也是物体前进方向,下图表示Unity的四种坐标系:


其中GUI和Screen的单位是像素单位,什么是像素单位呢,这里可以先了解一下像素相关知识:
像素:简单地来说,可以理解成一个方块,它是图像的最小单元,不能再分割,但它并没有固定的大小。
屏幕分辨率:指的是由像素组成的点阵,比如说一台电脑的屏幕分辨率为1920*1080,那么该电脑屏幕在横向有1920个像素,纵向有1080个像素。
谈及像素和分辨率,还有一个概念叫做PPI,什么是PPI呢?
PPI:每英寸像素数目,可以理解为屏幕像素密度
因为像素并没有固定的大小,所以,PPI 越高,像素大小越小,也就越清晰。具体的计算公式如下:

所以可以知道,在购买显示器的时候,同是2K屏,24寸的是要比27寸的更清晰一些,因为PPI更高。
回到正题,比如我的电脑的分辨率是1920*1080,那么其X轴最大单位就是1920,Y轴最大单位就是1080。
了解了GUI、世界和屏幕坐标系后,Viewport坐标系其实没什么好说的,只是进行了归一化。
二、Screen坐标系和World坐标系的换算
在进行换算前,需要知道Camera相机的概念,相机又分为正交视图(orthogonal)、透视视图(perspective)。
一般2D游戏采用正交视图,3D游戏采用透视视图。
1、正交视图

2、透视视图

1、2D坐标系换算(正交视图)
在上述示例中用到的天空背景图的分辨率是4096*2048,但是有个地方很奇怪,Unity显示该图分辨率是2048*1024,实际是4096*2048。


如果想要背景图填充满整个屏幕,可以将游戏视图分辨率设置为图片分辨率,然后还需要设置相机大小:
相机大小(size):采用世界坐标系单位,为屏幕半宽。(所以相机大小为2048/2/100=10.24)
Pixels Per Unit:每多少像素为一世界坐标系单位。


这里我们应该知道屏幕坐标系的范围是(0,0)到(4096,2048),那世界坐标系范围是什么呢?

世界坐标系的原点和范围受到相机的影响,若相机的位置为(0,0),并且没有发生旋转,那么世界坐标系的原点就在屏幕正中心,其范围是(-20.48,-10.24)到(20.48,10.24)。
2、3D坐标系换算(透视视图)
3D坐标系换算相对更复杂一点,如下实例:



相机位于(0,0,-16),且视野角度为60度,帽子位于(0,6,0),且都没有发生旋转,那么其在Y轴上的分辨率既可以推算出来。

同理,其在X轴上的分辨率也可以算出来。
Unity坐标系入门的更多相关文章
- Unity Shader入门精要读书笔记(一)序章
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...
- Unity Shader入门精要学习笔记 - 第7章 基础纹理
转自 冯乐乐的 <Unity Shader 入门精要> 纹理最初的目的就是使用一张图片来控制模型的外观.使用纹理映射技术,我们可以把一张图“黏”在模型表面,逐纹素地控制模型的颜色. 在美术 ...
- Unity Shader入门精要学习笔记 - 第6章 开始 Unity 中的基础光照
转自冯乐乐的<Unity Shader入门精要> 通常来讲,我们要模拟真实的光照环境来生成一张图像,需要考虑3种物理现象. 首先,光线从光源中被发射出来. 然后,光线和场景中的一些物体相交 ...
- Unity Shader入门精要学习笔记 - 第4章 学习 Shader 所需的数学基础
摘录自 冯乐乐的<Unity Shader入门精要> 笛卡尔坐标系 1)二维笛卡尔坐标系 在游戏制作中,我们使用的数学绝大部分都是计算位置.距离.角度等变量.而这些计算大部分都是在笛卡尔坐 ...
- Unity Shader入门
Unity Shader入门 http://www.cnblogs.com/lixiang-share/p/5025662.html http://www.manew.com/blog-30559-1 ...
- (二)Hololens Unity 开发入门 之 Hello HoloLens~
学习源于官方文档 微软官文~ 笔记一部分是直接翻译官方文档,部分各人理解不一致的和一些比较浅显的保留英文原文 (二)Hololens Unity 开发入门 之 Hello HoloLens~ 本文主要 ...
- 【我的书】《Unity Shader入门精要》出版上市
重要的事 先说重要的事,就是我的书籍<Unity Shader入门精要>在经过无数次跳票后,终于出版上市了(泪目-)! 购买传送门: 亚马逊 当当 京东 截止到我写这篇文章的时候,京东是没 ...
- 3D数学基础(一)Unity坐标系
Unity引擎时非常成熟的,引擎内部运用了很多的数学知识,他对开发者来说是不可见的,而且他已经封装好的算法也不是很全面.此外,要是使用引擎封装好的算法也要明白其实现的原理. 写过一些代码,也参考了一些 ...
- Unity 3D入门简介
最近在刚开始学习Unity 3D,在这里记录一下学习心得和学习笔记,边学边写,可能会比较零散.好了,废话不多说,今天从Unity 3D入门写起,主要简要介绍一下Unity 3D的和一些学习资料.以下如 ...
随机推荐
- python包合集-shutil
一.简介 shutil是 python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查看等方法,还提供了对文件以及目录的路径操作.shutil模块提供了移动 ...
- PerfView专题 (第七篇):如何洞察触发 GC 的 C# 代码?
一:背景 上一篇我们聊到了如何用 PerfView 洞察 GC 的变化,但总感觉还缺了点什么? 对,就是要跟踪到底是什么代码触发了 GC,这对我们分析由于 GC 导致的 CPU 爆高有非常大的参考价值 ...
- React报错之You provided a `checked` prop to a form field
正文从这开始~ 总览 当我们在多选框上设置了checked 属性,却没有onChange 处理函数时,会产生"You provided a checked prop to a form fi ...
- HandInDevil 的头发 (分 块)
题面 H a n d I n D e v i l \rm HandInDevil HandInDevil 的头发很油,因此随时有跳蚤跳上 H a n d I n D e v i l \rm HandI ...
- 基于开源方案构建统一的文件在线预览与office协同编辑平台的架构与实现历程
大家好,又见面了. 在构建业务系统的时候,经常会涉及到对附件的支持,继而又会引申出对附件在线预览.在线编辑.多人协同编辑等种种能力的诉求. 对于人力不是特别充裕.或者项目投入预期规划不是特别大的公司或 ...
- 第四十三篇:Git知识(基本理论)
好家伙,最近准备考试,有点忙 首先从版本控制开始 1.版本控制(版本迭代,新的版本) 如果一个项目由多个人去开发,那么总会需要去管理版本 你更一点,我更一点,一冲突,这个项目就炸了 所以需要版本控制. ...
- Nginx超时问题解决
在 nginx.conf 中配置以下内容 ... http { ... server { # 这里表示upstream 的连接.读取.发送超时时间都是300秒 proxy_connect_timeou ...
- git merge和git rebase总结
dev分支 * da349ef (dev) e * 75350bc d * 63cbbb8 c * c6509a5 b * 13405af a 文件可能会发生冲突,需要解决一下 aaaaaaaaa b ...
- 洛谷P7112 行列式求值
行列式求值 这是一个让你掉头发的模板题 行列式的定义 行列式 (\(\texttt{Determinant}\)) 是一个函数定义,取值是一个标量. 对一个 \(n\times n\) 的矩阵 \(A ...
- SSTI服务端模板注入漏洞原理详解及利用姿势集锦
目录 基本概念 模板引擎 SSTI Jinja2 Python基础 漏洞原理 代码复现 Payload解析 常规绕过姿势 其他Payload 过滤关键字 过滤中括号 过滤下划线 过滤点.(适用于Fla ...