首页 > 其他分享 >Unity坐标系入门

Unity坐标系入门

时间:2022-11-02 09:47:38浏览次数:52  
标签:入门 分辨率 视图 像素 相机 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,屏幕,坐标系
From: https://www.cnblogs.com/M-Anonymous/p/16849391.html

相关文章

  • Unity Processing Basic
    写在前面:本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。由于本人水平有限难免出现错误,还请评论区指出,多多指教。部分图元和素材来源于网络,如有侵权请联系本......
  • Flutter官方推荐的状态管理库-Provider简单入门
    最近几年崛起的新一代的GUI开发方式,几乎都是组件式开发。代表就是VueReactFlutter等。组件开发一时爽,状态传递就很蛋疼了。比如A和B组件没有上下级关系,也不是层级相近......
  • Azure DevOps Server 入门实践与安装部署
    一,引言最近一段时间,公司希望在自己的服务器上安装本地版的AzureDevOpsService(AzureDevOpsServer),用于项目内的测试,学习。本着学习的目的,我也就开始学习在测试服务......
  • 在Unity中制作一个时钟
    一、创建时钟准备工作:新建一个Unity工程项目,这里我使用的是2021.3.4f1c1的版本,以前一直使用的是2020.1.3f1c1的版本,这次用新的版本也是为了熟悉新版本的交互界面,从2021......
  • C# Linq学习笔记(一)-基础语法入门
    一、简介:Linq(语言集成查询):为C#和VisualBasic提供语言级查询功能和高阶函数API,让你能够编写具有很高表达力度的声明性代码。二、优点:1、LINQ具有语言级查询语法,切......
  • Mac新手必看Mac入门基本知识图文教程
    你已经是Mac的用户了吗?还是准备入手的新手呢?赶快看看“Mac入门基本知识”吧!macbook系统基础内容简介Mac入门基本知识1、主界面结构图基本知识介绍(如图所示)2、Ma......
  • Docker如何与外界互通(chrono《kubernetes入门实战课》笔记整理)
    Docker与外界互通的三种方式1、拷贝文件dockercp命令,可以直接在主机和容器之间互相拷贝(容器间不可以),格式和cp是一样的,就是注意要标明容器ID,例如:docker cp a.txt 062:......
  • Bootstrap栅格系统_入门和Bootstrap栅格系统_注意事项
    Bootstrap栅格系统_入门响应式布局同一套页面可以兼容不同分辨率的设备。实现:依赖于栅格系统:将一行平均分为12个格子,可以指定元素占几个格子步骤:1.......
  • Lombok的极速入门
    Lombok是什么?一般封装类时有大量的Get、Set方法,不利于我们进行日常工作。Lombok(小辣椒)就是用于节约封装类时的代码,便于代码的阅读与使用。下载maven的依赖这里没有使......
  • 关于Markdown语法的入门学习与使用
    Markdown介绍(百度扒的)Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(JohnGruber)。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文......