本文介绍不同3D软件的世界坐标系之间的差异及其工作原理。
NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎
基本上,游戏引擎和3D软件包最重要的问题是根据软件的坐标轴系统创建资产,正确缩放它们并根据要完成的工作设置枢轴系统。
坐标系正确性的定义可能会根据模型导入的游戏引擎或 3D 软件而变化。 每个程序都有不同的坐标轴系统,导出与游戏引擎或其他 3D 软件包兼容的模型至关重要。 在不了解软件坐标系的情况下进行导出可能会导致奇怪的结果。
特别是如果在开发游戏时作为一个团队工作,你应该更加注意这个问题并正确导出。 如果游戏开发人员收到你提供的 3D 模型,该模型的坐标系与当前程序不同,则可能会浪费时间来理解该问题。 这是你必须要注意的情况。
既然我们已经充分讨论了该主题的重要性,那么让我们从了解坐标系开始本文。
1、什么是坐标系?
我们可以将坐标系定义为一种使用一个或多个数字或坐标来确定点或其他几何元素的位置的系统。 游戏引擎中坐标系的任务是定义每个对象的位置及其面向的方向。 这些数据可以帮助你计算物体之间的距离、旋转、速度和各种其他有用信息。
在本文中,我们将基于笛卡尔坐标系。 Unity默认使用笛卡尔坐标系。 但是可以使用脚本更改。
众所周知,Unity 场景内的空间由 X、Y 和 Z 轴决定。 这些代表左/右、上/下和前/后方向。 基本上,通过更改Unity中的坐标值,我们指定对象应放置在坐标系中的位置。
Unity坐标轴系统
由于坐标系可以是右手坐标系或左手坐标系,它们也可以根据代表深度变化的轴而不同。 首先让我们了解右手坐标系和左手坐标系之间的区别。
2、右手坐标系 vs. 左手坐标系
通常,3D 图形软件使用两种类型的笛卡尔坐标系:右手坐标系和左手坐标系。 这可能会改变应用程序的首选项,而 3ds Max 使用右手坐标系,虚幻引擎使用左手坐标系。 然而我们可以说大多数 3D 建模应用程序都使用右手坐标。
简单的右手坐标系使用右手法则来确定不同轴的方向,而左手坐标系则使用左手法则。 不同的轴可能代表“向上”方向,但我们稍后会提到。 这里的基本思想是关于旋转方向和地板轴方向(我在这里指的是x和z,它们在不同情况下可能会改变)。 在右手系统中旋转方向为正。 在使用 Y 轴作为上/下方向的右手系统中,Z 轴的 + 方向朝向屏幕外部,而左手系统则相反。
Y-Up 方案中右手和左手坐标系的差异
3、3D 软件中 Y-Up/Down vs. Z-Up/Down
Blender和3ds Max都使用90年代初期常见的坐标系。 这种约定在建筑中很典型。 你从使用 X/Y 坐标的平面图开始建模,然后向上拉伸(或向下拉伸,如果系统是右手或左手,可能会发生变化)。 这称为 Z-Up(或 -Z-Up)坐标系。
如果在 Blender 中以顶部正交视图查看场景,可以看到 x 轴和 y 轴位于地面
Cinema 4D、Maya、Houdini、图形 API 等 3D 应用程序和大多数游戏引擎都使用不同类型的方法。 屏幕变成一个 2D 平面,它使用 X/Y 坐标来定位平面图像,而 Z 坐标表示场景中的深度。
如果在 Cinema 4D 中以顶部正交视图查看场景,可以看到 z 轴显示向上方向,这意味着它代表前视图的页面深度
最后,你可以在下面找到一些使用不同系统的 3D 应用程序。 即使你是 3D 艺术家、游戏开发人员或游戏设计师,了解不同轴系统的逻辑也很重要。
原文链接:3D软件坐标系速查 - BimAnt