一、前言

在从一个模型到,完成贴图,完成蒙皮(骨骼绑定)后,已经算是一阶段的任务完成了,因为这样既可以拿去做Mod,也可以直接导入动作源完成动画。但是对于独立游戏,为了差异化,有些动作还是要自己制作的,所以就有了下面的这个3D模型的动画制作过程,最后也会演示一下如何导入CocosCreator等游戏引擎中。

二、动画制作

1.打开时间线

记得是在姿势模式下,然后在Blender底部把 “时间线” 拉高一点,折叠的 “汇总” 也点击展开来。

image-20250508113742306

2.开始K帧

点亮 “自动插帧” 按钮,将关键帧放到0帧位置,开始对某个骨骼进行变换,旋转,移动等,然后再移动到指定关键帧位置再变换,播放一下就可以看到动画了。

image-20250508114350091

三、多组动画

在游戏引擎中导入模型时,一个模型往往会制作多组动画,比如待机、攻击、死亡、大招等不同的动作,开发只需要在开发时添加控制器,不同的时候播放对应的动画即可。

1.动画摄影表

从 “时间线” 切换到 “动画摄影表”,然后再选择 “动作编辑器”,点击 “新建动作”,然后还是和前面一样,在指定帧数位置做变换。

image-20250508131402641

2.切换动作

在编辑了多组动作后,大纲里只会显示一个动作,要想查看需要切换,为了好记,在新建动作时可以重命名,然后在 “浏览要关联的动作” 的地方进行切换。

image-20250508131737899

四、游戏引擎中使用

我这里为了方便,就没用这个机械臂了,直接拿之前已经导进去的Fbx做示例了。

1.导入CocosCreator

首先将有动画的模型导出为Fbx,然后将其复制到CocosCreator项目的assets下的某个位置。

2.拖入模型

在游戏场景下,先创建一个空节点,然后把已经放到项目资源目录下的Fbx,拖入在该节点下。

image-20250508134320920

3.创建脚本

给新建的空节点绑定一个脚本,脚本接收一个SkeletalAnimation属性,也就是带动画的Fbx,就是空节点下的整个目录拖入。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { _decorator, Component, SkeletalAnimation, input, Input, EventMouse, Vec3 } from 'cc';

const { ccclass, property } = _decorator;

@ccclass('MyPlayController')
export class PlayController extends Component {

@property({ type: SkeletalAnimation })
public CocosAnim: SkeletalAnimation | null = null;

start() {
this.CocosAnim.play();
}

onMouseMove(event: EventMouse) {
console.log(event);
}

update(deltaTime: number) {

}

onStartButtonClicked() {
this.CocosAnim.play();
}

onStopButtonClicked() {
this.CocosAnim.stop();
}

}

4.开始运行

这个只要是启动就自动播放,而且Fbx只有一个时间线的默认动画,没有多动作组,其实也差不多,就只是对指定动作进行播放。

image-20250508135414690

五、写在后面

如果只是制作游戏,到这里就完全够用了,但如果是影视后期的话,还有渲染部分,因为在制作完模型还要放到实拍场景中,目前这个我也还不会,等后面学习了我再总结一下了。

image-20250408192801332