GLTF模型添加关节控制

GLTF模型添加关节控制

1. 前言

在Cesium官方示例中提供了一个控制火箭整流罩分离的例子,例子链接CZML Model Articulations。该例子展示了通过控制glb/gltf模型中的articulations来控制模型部分关节的运动。前提条件是模型文件中有articulations属性,本文主要介绍如何在Blender等三维建模软件导出的gltf模型中添加articulations属性。

2. 环境准备

  • Blender或其他主流三维建模软件:用于导出gltf模型
  • VS Code:需要安装插件glTF ToolsSTK GMDF Tools,分别用于gltf模型预览和注入articulations属性
  • 三维模型:可以到 https://github.com/AnalyticalGraphicsInc/gmdf/tree/master/samples 下载

3. 操作步骤

  1. Blender中打开三维模型,以samples\VehicleTest\source\VehicleTest.blend为例,可以看到模型主要包括车身、前轮和后轮三部分,在导出gltf后可以在nodes属性下找到对应的部分;

    Blender.png

  2. 导出gltf格式的模型;

    Blender_Export_GLTF.png

  3. VS Code中预览gltf模型,可以看到gltf文件中的nodes包括上文提到的前轮、后轮,下面就可以通过添加属性来控制前后轮的运动;

    Blender_GLTF_Preview.png

  4. 在VehicleTest.gltf同级目录下创建VehicleTest.gmdf文件,文件内容如下:

{
    
    
    "AGI_articulations": {
    
    
        "articulations": [
            {
    
    
                "name": "Wheels",
                "stages": [
                    {
    
    
                        "name": "Drive",
                        "type": "xRotate",
                        "minimumValue": -360,
                        "maximumValue": 360,
                        "initialValue": 0
                    }
                ],
                "modelNodes": [
                    "FrontWheels",
                    "RearWheels"
                ]
            }
        ]
    }
}

AGI_articulationsarticulations都是固定格式,主要关注modelNodesstagesmodelNodes用来说明要控制的模型关节,就是上文中的前后轮;stages用来说明关节如何运动,示例中的type表示运动类型为沿x轴旋转,minimumValuemaximumValue用来控制范围。关于属性字段更加具体的含义可以参考https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/AGI_articulations/README.md#overview

  1. 将gmdf文件注入到gltf文件,首先在VS Code中选中VehicleTest.gltf文件,按住快捷键Ctrl + Shift + P,搜索GMDF,选择命令inject GMDF into glTF,然后就可以看到在gltf文件中有新的内容增加了,在保存后就可以在模型预览界面中看到控制关节运动的操作界面,通过拖动滑块就可以控制轮子的运动;

    GMDF_Inject.png

    GMDF_Injected.png

    GMDF_Articulations.png

4. 参考链接

[1]. Cesium示例

[2]. GMDF工具与glTF模型示例

[3]. AGI_articulations详细介绍

[4]. Converting Models To GlTF For STK

猜你喜欢

转载自blog.csdn.net/wml00000/article/details/126005124
今日推荐