环境准备
-
Blender或者其他能查看模型节点的软件(ps:我平时直接用Babylon的沙盒环境在线查看,地址Babylon.js Sandbox - View glTF, glb, obj and babylon files (cnbabylon.com)
-
VS Code安装glTF Tools和STK GMDF Tools
-
最后就是目标模型,我们拿官方的火箭模型处理,模型放在附件里
模型处理
- 将模型拖入Babylon的沙盒环境中,如图
- 打开vscode将glb模型导出为gltf,如图发现官方模型已经处理好了,如图这是我们的目标模型.
- 先把他导入blender在导出gltf这样他就是平时拿到的模型了
- 在gltf同级目录下创建同名gmdf文件内容如下,我们可以在articulations里添加需要控制的node
- 比如我们想要控制火箭整流罩展开,整流罩抛出会先炸开在下落所以需要添加旋转和位移控制如图
- 最后把gmdf注入到gltf就可以了
- 做完这些就可以在比如收到某条指令触发什么动画,不同时刻不同模型姿态,后面讲怎么使用
附件
火箭模型 gmdf代码
js
{
"AGI_articulations": {
"articulations": [
{
"name": "fairing1",
"stages": [
{
"name": "Size",
"type": "uniformScale",
"minimumValue": 0,
"maximumValue": 100,
"initialValue": 1
},
{
"name": "TransX",
"type": "xTranslate",
"minimumValue": -2000,
"maximumValue": 2000,
"initialValue": 0
},
{
"name": "TransY",
"type": "yTranslate",
"minimumValue": -2000,
"maximumValue": 2000,
"initialValue": 0
},
{
"name": "TransZ",
"type": "zTranslate",
"minimumValue": -2000,
"maximumValue": 2000,
"initialValue": 0
},
{
"name": "RotX",
"type": "xRotate",
"minimumValue": -360,
"maximumValue": 360,
"initialValue": 0
},
{
"name": "RotY",
"type": "yRotate",
"minimumValue": -360,
"maximumValue": 360,
"initialValue": 0
},
{
"name": "RotZ",
"type": "zRotate",
"minimumValue": -360,
"maximumValue": 360,
"initialValue": 0
}
],
"modelNodes": [
"Fairing1"
]
}
]
}
}