Blender2.82a
Godot Engine 3.2.1stable
老王感觉目前来讲Blender到Godot的工作流中,还是glTF支持得最好


文章目录

  • 1. 导出
  • 2. 导入Godot
  • 3. 把glTF转换成tscn
  • 4. 清除继承(非常重要)
  • 5. 动画设置
  • 6. 关于Action丢失和网格丢失的处理办法
  • Action丢失
  • 网格丢失


1. 导出

导出选项中选择导出glTF2.0(.glb/.gltf) .glb是二进制格式
.gltf是文本格式

blender导出gltf动画分组 blender动画怎么导出_blender导出gltf动画分组

导出设置,注意要勾选仅导出形变骨骼

blender导出gltf动画分组 blender动画怎么导出_骨骼动画_02

导出的gltf文件中包含着导入Godot所需的所有信息(网格模型、骨骼动画以及材质)

blender导出gltf动画分组 blender动画怎么导出_骨骼动画_03

2. 导入Godot

直接拖拽到Godot中,材质文件会被自动解析出来

blender导出gltf动画分组 blender动画怎么导出_骨骼动画_04

3. 把glTF转换成tscn

双击gltf文件,然后点击新建继承,打开这个场景

blender导出gltf动画分组 blender动画怎么导出_继承关系_05


这时你会发现根节点以下的节点都是灰色不可编辑的

blender导出gltf动画分组 blender动画怎么导出_游戏开发_06


Ctrl + S把这个场景保存成tscn格式

blender导出gltf动画分组 blender动画怎么导出_可编辑_07

4. 清除继承(非常重要)

然后在这个场景的根节点右键,选择清除继承

blender导出gltf动画分组 blender动画怎么导出_骨骼动画_08


清除继承关系以后,子节点都可以编辑了

blender导出gltf动画分组 blender动画怎么导出_可编辑_09

5. 动画设置
  • 这时我们就可以为角色添加AnimationTree了(如果需要的话)
  • 并且此时再设置AnimationPlayer中的默认动画以及循环动画才会生效。

blender导出gltf动画分组 blender动画怎么导出_blender导出gltf动画分组_10

blender导出gltf动画分组 blender动画怎么导出_继承关系_11

6. 关于Action丢失和网格丢失的处理办法
Action丢失

有时候我们按照上述方法导出动画并导入引擎,发现Blender中的多组动画片段只导出了一个。

解决办法: 这是因为导出glTF格式时,光给Action添加一个伪用户还不行,能够导出的Action必须隶属于某一个NLA Stack,所以如果发现有动画丢失,点击存放,然后重新导出就可以了。

blender导出gltf动画分组 blender动画怎么导出_游戏开发_12

网格丢失

这也是老王偶然发现的,比如下面这个例子

blender导出gltf动画分组 blender动画怎么导出_可编辑_13

最初花盆部分不隶属于任何骨骼(顶点组),结果导出以后花盆是丢失的。

解决办法:

进入骨骼的编辑模式,新建一个独立的骨骼,本例中我将它命名为"pot"

blender导出gltf动画分组 blender动画怎么导出_blender导出gltf动画分组_14

然后进入网格的编辑模式,为它添加一个名为"pot"的顶点组,然后把花盆指定给"pot"顶点组。换句话说,当前Blender2.82a 的glTF导出插件在遍历导出对象的时候,貌似是从一个根节点开始遍历,这样当根节点为骨骼的时候,不隶属于任何骨骼的网格是遍历不到的,所以要给它一个骨头

blender导出gltf动画分组 blender动画怎么导出_blender导出gltf动画分组_15