OBJ to glTF

OBJ 转 glTF 在线转换

把散落的 OBJ+MTL+贴图收成一颗 GLB,网页才好缓存。缺 MTL 时颜色会灰。

OBJ 转 glTF 在线转换

一次该打包什么

.obj

网格本体。首行 mtllib 指向 MTL 文件名。

.mtl

材质名和颜色。map_Kd 路径要相对,不要用盘符和绝对路径。

贴图

mtl 里写到的图,缺一张就粉或黑。放在 MTL 同目录或它写的相对路径下。

为什么不继续用 OBJ 上线

多文件、路径易断、移动端不友好。OBJ 是文本,几十万面就几十 MB,浏览器解析慢;贴图靠外挂路径,部署时目录一变就粉。

GLB 一颗文件,几何二进制、贴图内嵌,CDN 好缓存,Three.js / Babylon / 小程序原生加载。

和 FBX 转 glTF

来源是 Max / Maya 用 FBX 转,能带骨骼动画和更完整的材质。

来源是老 OBJ 资源库、扫描仪、ZBrush 导出、或者对方只给了 OBJ,用本页。

MTL 字段到 glTF 材质的映射

MTLglTF说明
Kd / map_KdbaseColorFactor / baseColorTexture漫反射色直接作基色
d / TralphaMode BLEND + baseColor.a透明度
Ks / Ns(近似)roughness高光越锐粗糙度越低,仅近似
map_Bump / bumpnormalTexture若是高度图需先转法线图
Ke / map_KeemissiveFactor / emissiveTexture自发光
illum不映射光照模型由渲染器决定

上网页前检查

体积

手机端 GLB 建议 10 MB 内。转完过大去网格压缩做 Draco + KTX2。

贴图尺寸

4K 贴图在手机上吃显存。上线前降到 2048 或更小。

N 边面

OBJ 允许多边形,转 glTF 会三角化。凹多边形三角化可能出错,导出前在 DCC 里先三角化。

朝向

glTF Y 向上。Max 导出的 OBJ 是 Z 向上,转完模型躺倒就重导时勾 Y-up。

接着看这些页