12 Blender → GLB → Three.js:数字孪生资产完整流程
Blender 模型最终如果要在网页数字孪生中运行,通常经历:
Python / Blender ↓ .blend ↓ GLB / glTF ↓ Three.js ↓ 数字孪生前端一、为什么使用 GLB / glTF
glTF 适合实时三维应用。GLB 可以把几何、材质、层级、节点和部分动画打包为二进制文件,适合作为 Blender 到 Web 3D 的交付格式。
二、Blender 中哪些信息会影响 Three.js
最重要的有:
Object Name Parent Transform Pivot Material LOD三、Object Name 是程序接口
Blender 中:
BOF_TiltPivot导出后 Three.js 可以:
constpivot=model.getObjectByName("BOF_TiltPivot");然后:
pivot.rotation.x=angle;所以名称必须稳定。
四、Parent 决定运动层级
如果 Blender 中:
BOF_TiltPivot └─ Converter导出后相应节点层级通常也会被保留。旋转 Pivot,Converter 跟随。
五、Transform 决定初始姿态
Location、Rotation、Scale 会影响 GLB 节点的初始状态,Three.js 加载后就从这个状态开始。
六、Pivot 决定实时运动质量
如果转炉 Pivot 在耳轴中心,Three.js 旋转会正确倾动;如果 Pivot 错,炉体就会漂移或公转。
七、材质如何传递
常见 PBR 参数:
Base Color Metallic Roughness Normal Alpha透明材质要特别验证 Alpha、Render/Blend 设置和双面显示。
八、LOD 两种交付方式
多 GLB
converter_LOD0.glb converter_LOD1.glb converter_LOD2.glb单 GLB 多节点
converter.glb ├─ BOF_LOD0 ├─ BOF_LOD1 └─ BOF_LOD2前端可根据距离切换visible,或使用THREE.LOD。
九、不要把预览对象全导出
例如:
BOF_KeyLight BOF_FillLight BOF_RimLight BOF_PreviewCamera CAL_AxisX_Trunnion这些可能只是 Blender 检查辅助,生产 GLB 不一定需要。因此建议将BOF_PREVIEW、BOF_HELPERS与生产几何分开。
十、实时数据如何驱动模型
后端可能给出:
{"tiltAngle":73,"lanceHeight":2.4}Three.js 再根据数据设置 Pivot Rotation 和 LanceRoot Position。实时运行阶段不是 Blender 在控制,而是前端程序在控制 GLB 节点。
十一、从转炉扩展到厂区
不要把整个厂区理解成一个超级大模型。更合理的是资产化:
assets/ ├─ bof/converter.glb ├─ crane/crane.glb ├─ ladle/ladle.glb ├─ ccm/ccm.glb └─ buildings/workshop.glbThree.js 再按厂区布局组装。
十二、完整工作流
参数与规范 ↓ Python 建模 ↓ Blender Scene ↓ 人工检查 ↓ 自动验证 ↓ GLB 导出 ↓ Three.js 加载 ↓ 实时数据绑定 ↓ 数字孪生运行一句话总结:Blender 负责把工业设备组织成可被程序理解的三维资产,GLB 负责交付,Three.js 负责实时运行。