4个版本 (破坏性更新)
0.5.0 | 2024年7月21日 |
---|---|
0.4.0 | 2024年6月30日 |
0.3.0 | 2024年3月17日 |
0.2.0 | 2024年2月1日 |
在 游戏开发 中排名 331
每月下载量 158
605KB
15K SLoC
Bevy Animation Graph
动机
动画图是管理现代3D游戏动画管道中复杂性的基本工具。当你的游戏有数十个动画,具有复杂的混合和过渡,或者你想从非常少的键帧中程序化生成动画时,简单的动画剪辑回放就不够了。
这个crate可以作为大多数 bevy_animation
的替代品,旨在提供一个完整的动画系统和发展工作流程,包括动画图、动画状态机(即动画控制器)以及用于创建你的动画图和状态机的图形编辑器。
注意:此项目与 bevy_animation
版本0.14中引入的动画图是分开的。
当前功能
- 动画图是资产。它们可以从资产文件加载,或者使用直观的API在代码中创建。
- 可视图编辑器。
- 动画状态机
- 动画状态机作为动画图中的节点嵌入。
- 状态机中的每个状态都会根据需要回放其自己的动画图。
- 过渡也有自己的动画图,并且可以查询源状态和目标状态的动画图。
- 可用节点
- 动画链(即按顺序播放一个节点后再播放另一个节点)。
- 两骨骼逆运动学。
- 循环。
- 线性混合(在骨骼空间中)。
- 关于YZ平面的镜像动画。
- 动画剪辑回放。
- 使用骨骼掩码将给定的旋转应用于姿态中的某些骨骼。
- 算术节点
- F32: 加、减、乘、除、Clamp。
- Vec3: 旋转弧。
- 加快或减慢动画回放速度。
- 动画图节点。
- 动画状态机节点。
- 将动画图嵌套为其他图中的节点。
- 图节点的输出被缓存,以避免不必要的计算。
- 支持用Rust编写的自定义节点(但请注意,自定义节点不能作为资产进行序列化和反序列化)。
计划功能
正在开发中
- 同步轨道。
愿望清单
- 布娃娃和物理集成(最初为
bevy_xpbd
,可能以后为rapier)- 使用骨骼蒙版来指定哪些骨骼是运动驱动的,哪些骨骼是模拟的(即ragdolled)
- 使用关节马达进行姿态匹配(待在
bevy_xpbd
中实现,目前处于WIP状态)
- FABRIK节点(?)。
安装
本项目分为两个crate
-
bevy_animation_graph是这个项目的库部分。您需要将其添加到项目中以使用动画图。要从crates.io安装最新发布的版本,请运行
cargo add bevy_animation_graph
或者手动将最新版本添加到您的
Cargo.toml
。要安装最新版本的git master,请将以下内容添加到
Cargo.toml
# ... [dependencies] # ... bevy_animation_graph = { git = "https://github.com/mbrea-c/bevy_animation_graph.git" } # ...
-
bevy_animation_graph_editor是编辑器。您可以通过安装任何其他rust二进制文件的方式安装它
# for the latest crates.io version cargo install bevy_animation_graph_editor # for the latest master cargo install --git https://github.com/mbrea-c/bevy_animation_graph bevy_animation_graph_editor # for the version from a local workspace cargo install --path <PATH_TO_WORKSPACE> bevy_animation_graph_editor # use the --force flag to force reinstall
版本表
bevy |
bevy_animation_graph |
bevy_animation_graph_editor |
---|---|---|
0.14 | 0.5 | 0.5 |
0.13 | 0.4 | 0.4 |
0.13 | 0.3 | 0.3 |
0.12 | 0.2 | 0.2 |
使用方法和示例
docs.rs中的文档包含对库和编辑器的介绍以及对简单动画图示例的解释。还可以参考下面的视频来演示编辑器的使用。
示例包含在examples目录中。
截图
编辑器使用演示视频
注意:这个视频是用crate的最后一个版本拍摄的。从那时起,已经发生了很大的变化!
在YouTube上
贡献或寻求帮助
如果您遇到错误或想要讨论潜在的新功能,请随时提交问题、打开PR或在Discord(Bevy discord中的@mbreac)上联系我(有一个针对bevy_animation_graph
的crate-help帖子:链接)。
常见问题解答
这个是否已经准备好用于生产?
视情况而定。
它已经可以对小型项目很有用,但我无法保证在不同0.x
版本之间的API稳定性(这是一个大型库,它相对较新,我没有动画编程的先前经验,所以我仍在寻找做事的最佳方式)。这意味着您可能需要手动进入您的动画图资产并在版本之间迁移它们,至少直到我找到更好的处理迁移的方法。
此外,可能会有错误和其他问题。我会尽力在问题出现时修复它们。
您会实现功能X吗?
如果这是一个小型功能(例如一些额外的向量或浮点运算节点),那么很可能我只是没有时间去实现它。如果您打开一个问题,我可能会很快实现它。PR也是受欢迎的。
对于更大的功能,最好先打开一个用于讨论的问题或在Bevy discord中ping我。
致谢
非常感谢Bobby Anguelov在他的动画编程讲座。
依赖关系
~41–78MB
~1.5M SLoC