玩游戏时,你是否好奇过:角色在开放世界里奔跑、镜头跟随角色旋转、最终画面呈现在屏幕上 —— 这一系列流畅的画面背后,藏着多少 “看不见的计算”?
其实,支撑这一切的核心,正是游戏开发中那些 “各司其职” 的坐标系。
什么是坐标系?
在游戏开发中,坐标系(Coordinate) 是一个不可或缺的东西,它定义了游戏世界中物体的位置和旋转。不管是在 2D 平面还是在 3D 环境中,它都提供了特定的方式来定位游戏世界中的每一个点。
想想在现实世界中,有个人找你问路,你会如何给这个人指路?你可能会使用地标、街道名称或已知点的距离,对吧。比如他说:“请问你知道最近的麦当劳怎么走吗?”,那你知道的话,就会说:“从这里往前走 100 米左右看到一间蓝色店铺,左转走 50 米就是麦当劳了”。
游戏中的坐标系也有类似的作用,但使用的是精确的数值。
展开剩余83%游戏开发中最常见的坐标系是笛卡尔坐标系(Cartesian coordinate system),这是我们最熟悉的了,这种坐标系使用垂直轴来定义位置,在 2D 平面中使用 X 轴和 Y 轴来定义位置,在 3D 空间中使用 X、Y、Z 轴来定义位置。
每一个位置或者说每一个点都可以使用一组数字坐标来表示,在 2D 平面中使用 (x, y) 表示,在 3D 空间中使用 (x, y, z) 表示,这些坐标表示它从坐标系原点沿着每个轴移动的距离。
在 2D 游戏中,X 轴表示水平方向(左和右),Y 轴表示垂直方向(上和下),原点可能位于屏幕中心、左下角或者左上角,具体取决于所使用的游戏引擎。
在3D 游戏中,第 3 个轴——Z轴,表示深度/高度。不同的游戏引擎和 3D 建模软件对于这些轴线的定位都不太一样,因为这涉及到一个称为“旋转性”的东西。
在 3D 坐标系中,“旋向性”(handedness,又称手性)也是一个重要概念。它指的是坐标系各轴之间的相对朝向关系。虽然许多游戏引擎都使用笛卡尔坐标,但坐标轴的方向(例如,哪个坐标轴是“向上”的)以及是右手坐标轴还是左手坐标轴都可能不同。
你可以通过 “右手定则”(right-hand rule)或 “左手定则”(left-hand rule)来判断坐标系的旋向性。
在虚幻引擎中,采用的是Z轴向上的坐标体系,使用X,Y,Z表示物体的位置或者面向的方向。X轴用红色,表示前后,Y轴用绿色表示左右,Z轴用蓝色表示上下。
如果在 Maya, Houdini, ZBrush, Blender, 3ds Max中导入素材时,需要考虑不同的坐标系对于素材的影响。
坐标系中,坐标为(0,0,0)的位置定义为原点。也就是三个轴线交叉的点。
虚幻引擎使用的坐标系,成为左手坐标系,拇指是Z轴,食指是X轴,中指是Y轴,如图所示👇
如果脚本 point (2, 1, -3) ,则代表着x轴正方向移动2个单位,y轴移动1个单位,z轴负方向移动3个单位。(虚幻引擎默认的距离单位为 cm)
在第三人称模板中,中心原点位置在视图的中间,在左下角的位置显示坐标的正方向指示:👇
坐标的移动、旋转和缩放的坐标颜色与原始的指向一致。红色代表X轴,绿色代表Y轴,蓝色代表着Z轴。
核心坐标系:世界坐标系和本地坐标系
在游戏开发的过程中,最直观的坐标系就是游戏场景所在的世界空间坐标系(World Coordinate System)和本地空间坐标系(Local Coordinate System)。
世界坐标系是一个全局的参考坐标系,用于定义整个虚拟或物理世界中物体的位置。它是所有物体运动和位置的基准。
世界坐标系的原点通常固定在一个全局位置,比如虚拟场景的中心或物理空间中初始设备位置。所有的物体都以世界坐标系为参考描述其位置和旋转。
但如果只有世界坐标系,麻烦就大了 —— 比如你想让角色 “抬起左手”,总不能去计算 “左手在世界坐标系里要移动多少” 吧?
这时候就需要本地坐标系,每个物体都有自己的 “小坐标系”,原点通常在物体的中心,坐标轴方向和物体自身对齐。
它的核心作用是简化物体自身的操作,无论是物体旋转、部件移动,还是父子物体联动,用本地坐标系计算都会简单得多。
为什么需要更多坐标系?
世界和本地坐标系,只能解决物体在场景里的位置问题。但游戏最终要呈现在2D 屏幕上,把 3D 世界的立体信息转换成屏幕上的平面像素,这个过程极其复杂。
如果只用一个坐标系来完成所有计算,代码会变得极其复杂且难以维护。
比如你要计算 “远处的敌人在屏幕上的位置”,需要同时考虑 “敌人的世界坐标”“相机的位置”“屏幕分辨率”…… 运算量巨大,还容易出错。
而更多坐标系的存在,本质上是把 “3D 转 2D” 的复杂过程拆分成多个小步骤,每个步骤用专门的坐标系解决专门的问题。就像工厂流水线,每个工位只做一件事,最终高效完成整个生产。
所以,还需要了解多个不同空间类型的坐标系还是很重要的,比如视图空间-View Space/Camera Space、裁剪空间-Clip Space/Projection Space、屏幕空间-Screen Space/Viewport Space、UV Space、切线空间-Tangent Space,甚至是比较少见的极坐标-Polar Coordinate。
正是这些坐标系的分工合作,才有了游戏里流畅的画面。
发布于:上海市大圣配资-贵阳配资网-股票配资排名-配资正规网站提示:文章来自网络,不代表本站观点。