你的模型为什么躺倒在一边
你从 Blender 导出,导入网页查看器,模型却是脸朝下的。其实什么都没坏——只是这两个程序对「哪个方向是上」的看法不一致。
世上没有统一的约定,从来也没有过。工具之间有两个彼此独立的属性会变化:
哪根轴朝上。 Blender、3ds Max、多数 CAD 软件以及几乎所有 GIS 数据都使用 Z-up,这继承自工程制图与测量,其中 Z 表示相对地平面的高度。glTF、USD、Maya、Unity 和 Three.js 使用 Y-up,继承自屏幕空间图形,其中 X 朝右、Y 朝上。
左手还是右手。 右手坐标系(glTF、Blender、Maya、OpenGL)与左手坐标系(Unity、Unreal、DirectX)的区别在于:当另外两根轴确定之后,第三根轴指向哪一边。
实际会遇到的组合
- Z-up 右手系 — Blender、3ds Max、CAD、GIS
- Y-up 右手系 — glTF、USD、Maya、Three.js
- Y-up 左手系 — Unity、DirectX
- Z-up 左手系 — Unreal Engine
选择模型来自哪里、又要去往哪里,旋转由工具自己算出来。
手性会把三角形翻过来
这是最容易让人栽跟头的一点,也是为什么天真地「旋转 90 度」并不能解决全部问题。
改变左右手性等于对空间做镜像。镜像会反转每个三角形的环绕顺序,而环绕顺序正是告诉渲染器一个面的哪一侧才是外侧的依据。在左右手系之间转换却不修正环绕顺序,模型就会里外翻转地渲染——你看到的是远侧的背面,近侧却什么也没有;若开启背面剔除,模型看上去干脆消失了。
本转换器会检测镜像变换,并反转每个三角形的索引顺序来抵消它。这个开关的存在是为了让你在串联多次转换时可以关掉它,但除非你非常清楚为什么要关,否则请保持开启。
烘焙进几何体,而不是节点
旋转应用在顶点的实际位置上,而不是设置在父节点的变换里。这一点很重要,因为 STL 没有节点,有些导出器会压平层级,有些导入器会忽略节点矩阵——任何一种情况都会悄无声息地丢掉节点级别的修正。
用坐标轴指示器来检查
预览中显示了原点坐标轴和地面网格。最快的判断方法很简单:看模型现在有没有按它应有的姿态立在网格上。
隐私
转换完全在你的浏览器中运行,不会上传任何内容。
Tiny Online Tools







