在Cesium官方示例中提供了一个控制火箭整流罩分离的例子,例子链接CZML Model Articulations。该例子展示了通过控制glb/gltf模型中的articulations
来控制模型部分关节的运动。前提条件是模型文件中有articulations属性,本文主要介绍如何在Blender等三维建模软件导出的gltf模型中添加articulations属性。
glTF Tools
和STK GMDF Tools
,分别用于gltf模型预览和注入articulations属性Blender中打开三维模型,以samples\VehicleTest\source\VehicleTest.blend为例,可以看到模型主要包括车身、前轮和后轮三部分,在导出gltf后可以在nodes
属性下找到对应的部分;
导出gltf格式的模型;
VS Code中预览gltf模型,可以看到gltf文件中的nodes包括上文提到的前轮、后轮,下面就可以通过添加属性来控制前后轮的运动;
在VehicleTest.gltf同级目录下创建VehicleTest.gmdf文件,文件内容如下:
{
"AGI_articulations": {
"articulations": [
{
"name": "Wheels",
"stages": [
{
"name": "Drive",
"type": "xRotate",
"minimumValue": -360,
"maximumValue": 360,
"initialValue": 0
}
],
"modelNodes": [
"FrontWheels",
"RearWheels"
]
}
]
}
}
AGI_articulations
和articulations
都是固定格式,主要关注modelNodes
和stages
。modelNodes
用来说明要控制的模型关节,就是上文中的前后轮;stages
用来说明关节如何运动,示例中的type
表示运动类型为沿x轴旋转,minimumValue
和maximumValue
用来控制范围。关于属性字段更加具体的含义可以参考https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/AGI_articulations/README.md#overview
将gmdf文件注入到gltf文件,首先在VS Code中选中VehicleTest.gltf
文件,按住快捷键Ctrl + Shift + P
,搜索GMDF
,选择命令inject GMDF into glTF
,然后就可以看到在gltf文件中有新的内容增加了,在保存后就可以在模型预览界面中看到控制关节运动的操作界面,通过拖动滑块就可以控制轮子的运动;
[1]. Cesium示例
[2]. GMDF工具与glTF模型示例