动画制作规范
动画制作规范
本篇教程内容作者: LesRaisins-伯爵
为方便动画制作与程序读取,在 开始制作动画之前 应提前将模型分好组。
本章节提供了一些模型分组建议
分组
硬性要求
重要
无论您如何分组,以下分组名是 不可更改 的!
root
根组,除摄像机动画分组、各个定位组以外所有内容都应当在根组下。如果没有 root 组,默认动画将无法使用。
magazine
弹匣组,这包括默认弹匣和1-3级扩容弹匣,程序在渲染时会自动识别 magazine
组下的内容并根据情况调用对应模型。
如果你的枪械不允许扩容,那么扩容弹匣分组可以不放。
注意
如果枪械允许扩容,无论3个级别的扩容弹匣模型是否相同,都需放置全部3个扩容弹匣的分组
即使不同级别的扩容弹匣模型完全相同,你需要也拷贝三份相同的模型
以下是各级弹匣对应的组名
- 默认弹匣:
mag_standard
- 1级扩容弹匣:
mag_extended_1
- 2级扩容弹匣:
mag_extended_2
- 3级扩容弹匣:
mag_extended_3
additional_magazine
额外弹匣组,用于制作使用旧弹匣替换新弹匣(即画面同时出现两个弹匣)的动画。
包含该分组时,程序会在渲染此处额外渲染一份 magazine
组的内容。
警告
此分组的 枢纽点 应与弹匣组 magazine
完全相同
当您 导出动画 时请务必 确保此分组内容为空
此外,您 绝对不应该 把 additional_magazine
分组放在 magazine
分组下,否则会导致程序循环调用而使得游戏崩溃!
constraint
约束组,制作约束动画时所使用的分组,参见 动画约束ICA。
camera
摄像机动画分组,若要创建摄像机动画,则需在该分组下使用摄像机插件添加一个摄像机,当您k帧的时候请对摄像机分组 camera
进行。
分组建议
- right_hand_and_gun 右手及枪械,可以自由命名。动画中大多数情况右手和枪械一起运动,因此可以置于同一分组便于 k 帧。
- left_hand_and_mag 左手及弹匣,可以自由命名。动画中换弹时左手和弹匣有很长时间需要一起运动,因此可以置于同一分组便于 k 帧。
- left_hand 左手组,可以自由命名。它应该套在
lefthand_pos
(左手手臂定位组)的外层。更改它的枢纽点相对于手臂模型的位置,并用它 k 帧,更加方便。 - right_hand 与左手组同理。
- default 名字任意。枪械内所有不可运动的部件的集合(不参与动画的所有东西丢进去)
- 其他所有运动件和
main
组同级,如弹匣magazine
,枪栓handle
等,这些运动件可以自由命名。
你可以在下面下载分好组的包含手部模型的示例bb工程文件,以便参考。
分好组的手部模型下载
枢轴点设置
枢轴点设置是为了方便动画的制作,除lefthand_pos和righthand_pos组外其他组的枢轴点皆以自己舒适的方式进行设置。以下内容为参考建议。
**枢轴点:**枢轴点是零件/模型将围绕其旋转的点。
**需要设置枢轴点的内容:**通常来说所有参与k帧的分组都要设定枢轴点,如果你想偷懒的话则可以只设置会旋转的分组
如何设置枢轴点: 快捷键:P 工具栏的圆形按钮 枢轴点居中:右侧枢轴点数值的旁边
**推荐枢轴点位置:**此内容仅为编者建议不具任何权威,一切以顺手为主。
- right_hand_and_gun:置于右手手心
- left_hand & right_hand组:置于手心
- 特别地,推荐 root 组将枢纽点置于枪械模型的后握把处,以使枪械默认动画得到最好的观感。
动画类型与规范
为了程序能正确读取,动画命名请严格参照以下内容!
必备动画
以下为不可或缺的动画类型,若缺少该类型的动画则会导致画面出现严重问题
static_idle
默认持枪动画,该动画只需用设置左右手的位置,约束组的参数,以及特殊定位组
- 动画类型:静止动画
reload_tactical
战术换弹动画,如枪内还有剩余弹药的战术换弹方式。如您的枪没有战术换弹和空仓换弹之分,则可复制该动画到空仓换弹。
- 动画起始状态和终止状态应该与 static_idle 完全相同
reload_empty
空仓换弹动画,弹药耗尽后的换弹动画。
- 动画起始状态和终止状态应该与 static_idle 完全相同
inspect
检视动画:武器检视动画。
- 动画起始状态和终止状态应该与 static_idle 完全相同
shoot
射击动画,武器开火时的视觉后坐力动画
- 动画起始状态和终止状态应该与 static_idle 完全相同
- 动画类型:混合型。此动画将和其他类型动画混合播放
- 注意事项:因为是混合动画,可以互相叠加,所以不需要包含手部关键帧
可选动画类型
可选动画为非所有枪都需要制作的动画,可根据需求自行选择是否制作
static_bolt_caught
空仓动画,当武器处于空仓状态时的静止动画
- 动画类型:静止动画
draw
掏枪动画,当玩家拿出武器时播放的动画
- 默认动画中包含此动画
- 动画终止状态应与static_idle完全相同
put_away
收枪动画,当玩家切换物品栏,丢弃武器..时播放的动画
- 默认动画中包含此动画
- 动画起始状态应与static_idle完全相同
inspect_empty
空仓检视动画,当武器处于空仓状态时播放的检视动画。 如果缺少inspect_empty动画则空仓时无法触发检视
- 动画起始状态和终止状态应该与 static_idle 完全相同
bolt
拉栓动画,手动武器在开火后播放的动画
- 动画起始状态和终止状态应该与 static_idle 完全相同
- 约束组动画:制作约束组动画后可以使拉栓时枪械始终围绕约束点范围内运动。
运动类动画
跑步类
run_start 进入奔跑状态时的动画
- 默认动画中包含此动画
- 动画起始状态应与static_idle完全相同
run 奔跑时的动画
- 默认动画中包含此动画
- 动画类型:循环
- 动画起时/终止状态与run_start相同
run_hold 奔跑时跳跃的动画
- 默认动画中包含此动画
- 动画类型:静止
run_end 奔跑结束时的动画
- 默认动画中包含此动画
- 动画起始状态应与run相同
- 动画终止状态应与static_idle完全相同
走路类
walk_aiming 走路时瞄准的动画
- 默认动画中包含此动画
- 动画类型:循环
- 动画起始/终止状态应与static_idle完全相同
walk_forward 【向前】走路时的动画
- 默认动画中包含此动画
- 动画类型:循环
- 动画起始/终止状态应与static_idle完全相同
walk_sideway 【横向】走路时的动画
- 默认动画中包含此动画
- 动画类型:循环
- 动画起始/终止状态应与static_idle完全相同
walk_backward 【向后】走路时的动画
- 默认动画中包含此动画
- 动画类型:循环
- 动画起始/终止状态应与static_idle完全相同
动画制作
下文仅为作者对blockbench软件制作动画的说明
一、通道设置
将通道中的旋转、移动、缩放勾选
二、关键帧
添加关键帧 动画的原理便是一个物件从一个关键帧运动到另一个关键帧的过程 在blockbench软件中可以通过组下的+号添加关键帧,也可以使用旋转(R),移动(V),缩放(S)工具对物体的状态进行变化添加关键帧 关键帧类型 关键帧有1.线性 2.平滑 3.贝塞尔 4.步 四种类型。当您选中关键帧后可以在屏幕左下角进行更改
三、曲线
为了更精细的制作动画,可以在时间窗口切换曲线模式编辑
烘焙动画
如果你的动画带有贝塞尔,需要烘焙成线性动画以保证其在游戏内的正确渲染
提示
烘培动画仅应当在导出动画前进行。如果你希望动画能够二次修改,你应当将原始的动画文件拷贝并保存,然后再进行烘培。
**需用插件:**Bakery, https://github.com/JannisX11/blockbench-plugins/tree/master/plugins/bakery.js **烘焙方法:**载入动画,选中贝塞尔曲线插值的关键帧,点击菜单栏 动画-烘焙动画
导出动画
动画支持 gltf 与 Bedrock 两种动画格式
导出 gltf 动画格式(后缀名 .gltf)
导出 Bedrock 动画格式(后缀名 .animation.json)
填写枪械效果文件
只有填写完枪械效果文件,才会在游戏内正确加载动画。
添加以下代码:
// 调用的动画名,会在包目录下的 animations 文件夹中寻找,不建议为空
"animation": "tacz:ak47",
// 指定使用缺省动画,可为空。如果上文指定的动画文件里缺少某个动画,如 draw 动画,则会从缺省动画拷贝。
// 值可为 rifle、pistol
"use_default_animation": "rifle",