本文转自我的公众号——游戏开发那些事

在谈到游戏世界中的坐标轴时,我们经常会看到这样的争论。

“游戏中Y轴是向上的好么?这你都不知道?”
“不对,空间直角坐标系不就是Z轴向上的么?”
“拜托,请搞清楚坐标系再来讨论好么?”.....

对于长期接触Z轴向上的空间直角坐标系的我也存在着同样的困惑,左右手坐标系已经够让人头大了,为什么连哪个轴向上都不能统一一下?而后当我试图通过搜索引擎寻找答案时,发现这个问题确实有不少人在讨论,也终于搞清楚了其中的缘由。

故事可能要从著名的三维建模软件3DS Max说起。3DS Max是公司AutoDesk第一款建模软件,它于1990年发布,主要用于设计和建筑领域。

在建筑学中,通常要先从平面图开始设计,所以先在2D网格上绘制X轴和Y轴,随后在将其拉伸成3D模型。很自然的,他们将下一个轴设置向上,即在3DMAX里面向上的便是Z轴(Z-Up)。这种思路与我们在学校时第一次从平面几何踏入空间几何的想法完全契合。

而在1998年,另一款著名的建模软件——Maya诞生了。Maya一开始主要作为动画软件系统发行,广泛用于动画电影当中。

与建筑领域相似,当时的动画通常也是2D的,即正面看Y轴向上,X轴向右。不过早期的迪士尼和其他动画作品为了能在不改变2D画面效果的条件下增加维度(例如2D平台游戏),保留了X轴和Y轴的朝向,新增的Z轴便成为了深度。当然,这里也有一定程度的历史原因——由于Maya一开始为SGI的(硅谷图形公司Silicon Graphics, Inc.)硬件开发,SGI早期提供的渲染引擎就是Y轴向上的,所以Maya就跟随SGI的标准制定坐标系(Y-Up)。

其实,造成这种差异的根本原因在于你是在屏幕空间中思考还是在世界空间中进行思考。
在屏幕空间中,给定X和Y的屏幕坐标,将Z作为深度可以方便的处理遮挡问题(即Y-Up)。许多渲染技术(DX、OpenGL)都使用“ Z缓冲区”之类的名称的来处理屏幕空间渲染(三维空间的渲染最后还是会输出到屏幕空间)。很明显,在二维环境中,Y轴向上的坐标系更有意义一些。

然而在世界空间中,我们通常希望像现实一样构建三维的世界。正常的三维空间示意图都将第三个坐标视为垂直方向的(即Z-Up)。要在世界空间中定义一个矩形,则要给出其长、宽、高。如果将Y视为垂直方向,那么就会陷入了一种不符合常识的情况,与我们多年来接触的笛卡尔坐标系相悖。

当你仔细调查一下目前流行的软件时,你会发现不同的软件其坐标系默认都是不一样的。除了前面提到的两款三维建模软件,另外两款著名的游戏引擎Unity与Unreal也有着不同的坐标系。受到历史因素的影响,Unreal诞生时3DS Max是当时大多数开发人员选择的建模工具包(Maya还没有诞生),所以采用了Z轴向上的左手系坐标。而Unity3D在2000以后才正式发布,采用的则是Y轴朝上左手坐标系。

由于标准的不同,导致我们在使用不同游戏引擎以及不同建模软件交互时需要手动处理坐标系的转换。而对于那些只接触过部分软件的人往往会保留“Z轴向上”或者“Y轴的向上”的固有印象,从而造成了前面提到的争论现象。无论哪种坐标系,都有其一定的道理,我们理解其中的缘由并能灵活的运用即可。

最后,再帮大家复习一下左手坐标系和右手坐标系(挥动双手的同时不妨点个赞支持一下)。

x轴z轴代表的方向图片_游戏中到底是Z轴朝上还是Y轴朝上?相关推荐

  1. x轴z轴代表的方向图片_数控机床的X,Y,Z轴分别指什么方向的运动

    展开全部 标准坐标系的规定 标准坐标系是一个直角坐标系,如图所示,按右手e69da5e887aa3231313335323631343130323136353331333366303836直角坐标系规 ...

  2. x轴z轴代表的方向图片_数控车床980T系统对刀分X轴、Z轴两个方向

    一.数控车床 980T 系统对刀分 X 轴. Z 轴两个方向 1 . X 轴对刀步骤 把坐标系原点设在零件端面上 ( 1 ).启动机床,用手轮方式将刀具移动至靠近工件外圆面位置, " 注 & ...

  3. CAFFE-SSD中loss、accuracy曲线可视化(双Y轴)

    CAFFE-SSD中loss.accuracy曲线可视化(双Y轴) 1.利用输出的.log文件(应该在caffe/jobs/VGGNet/VOC0712/SSD_300x300目录下)生成.test ...

  4. x轴z轴代表的方向图片_x y z三个轴的方向 x轴、y轴和z轴分别代表的是什么?

    1, x轴.y轴和z轴分别代表的是什么? 空间任意选定一点O,过点O作三条互相垂直的数轴Ox,Oy,Oz,它们都以O为原点且具有相同的长度单位.这三条轴分别称作x轴(横轴),y轴(纵轴),z轴(竖轴) ...

  5. Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限

    场景 Winforn中实现ZedGraph自定义添加右键菜单项(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  6. 向量的方向余弦公式_定位中方向余弦矩阵(DCM)简介

    1   前言 这篇文章是翻译Starlino_DCM_Tutorial.pdf而来, 链接为:http://www.starlino.com/dcm_tutorial.html 这篇文章主要是介绍无人 ...

  7. 二叉树 奇偶行输出方向相反_二叉树中的奇偶级差

    二叉树 奇偶行输出方向相反 Problem statement: 问题陈述: Given a Binary Tree, write a function getLevelDiff which retu ...

  8. 游戏里的角色都什么格式图片_游戏里性感的女角色那么多 为什么我们偏偏对春丽念念不忘?...

    1992年日本CAPCOM公司出品了<街头霸王2>,这款格斗游戏迅速风靡全球,成为格斗游戏史的一座里程碑意义的作品.这款游戏之所以能够取得成功,其中很重要的一个原因在于这一版<街霸& ...

  9. 萌萌机器人布娃娃图片_你家中的新成员 养一只萌萌的小机器人

    提起机器人你能想到谁?是酷酷的终结者,还是萌萌的瓦力?如果你对瓦力情有独钟的话,这里有一个好消息.一款名为Jibo的家用机器人正在Indiegogo众筹平台上筹款,目前已筹得超过28万美元,售价大约4 ...

最新文章

  1. java hashmap存取效率_HashMap为什么存取效率那么高?
  2. 数据库:MYSQL相关设计规范梳理,值得收藏!
  3. python的序列包括字符串列表和什么_Python基础:03序列:字符串、列表和元组
  4. php里面的 n算是,用PHP中的bcmath计算第N个根
  5. littlevgl抗锯齿_littlevgl架构浅析
  6. Windows 生成ffmpeg安卓全平台so
  7. 中国能源互联网行业十四五前景规划与发展战略格局分析报告2022-2028年版
  8. PLM基础概述(解决方案架构师认证:PLM基础) | 达索系统百世慧
  9. JAVA 经纬度转换成直角坐标系,以及直角坐标系转换成经纬度算法
  10. 直播热潮之下的图片社交洼地
  11. 基础才是王道——TCP/IP详解学习笔记 这位仁兄写得太好了
  12. 巴比特 | 元宇宙每日必读:HTC 宣布推出首款元宇宙手机,售价约2700元人民币,都有哪些新玩法?...
  13. 罗技无线鼠标响应缓慢
  14. python class函数报错_24 【python入门指南】class
  15. 跟我做WinForm开发(2)-后台逻辑操作
  16. 哈工大软件过程与工具复习1——第1-2讲 概论与核心思想
  17. hive正则表达式反向引用
  18. 水果怎么画?橘子怎么画?橙子怎么画?
  19. 马化腾2018中国“互联网+”数字经济峰会演讲《互联网+助力数字中国建设》全文...
  20. 一、java运行环境配置

热门文章

  1. python电脑版软件下载_Python for windows
  2. npoi 导入 winform excel_勤哲Excel服务器做影视制作企业管理系统 - 科技
  3. [ZJOI2007]棋盘制作 悬线法dp 求限制下的最大子矩阵
  4. 面试的问题 及回答
  5. Hibernate【inverse和cascade属性】知识要点
  6. 清除掉AD的相关属性!
  7. WebSocket 是什么原理?为什么可以实现持久连接?什么情况使用WebSocket
  8. 《HTTP权威指南》 – 11.验证码和新鲜度
  9. 微信公众平台的服务号和订阅号
  10. wpf page 界面渲染完成后执行自动操作_Vue项目骨架屏自动生成方案(dps)