Blender 2.x的游戏引擎有个很好的功能就是记录动画,可惜的是只有刚体、软体、静态属性的物体能被记录,而且有子物体也不会被记录。
在搜索了很多资料后终于找到了一个简单满足我要求的一个小脚本。(下载链接在文末)
文件包含两个脚本:object2text.py 、text_to_keyframe.py
- object2text.py 主要功能是记录动画数据到csv文件
主要变量:
- target_object:需要记录动画的物体名字
- rate:动画数据记录的速度
- 默认记录的csv文件位置是在Blender安装文件夹,想要改变保存位置需要修改 write_data()函数中的filename参数
- text_to_keyframe.py 主要功能是读取csv文件
主要变量:
- target_object:目标物体的名称
- framerate:读取动画的速率
- filename:csv文件的位置
使用方法
保存动画数据
- 添加Always(总是)传感器,并且命名为“recorder”
- 添加一个Python传感器,然后脚本选择 object2text.py
- 添加 游戏引擎 促动器,并且命名为“quit_game"
- 在文本编辑器中打开 object2text.py ,修改'target_object'和'rate'变量
- 运行游戏记录动画数据,退出游戏一定要用Q键退出,否则数据不会被写入
读取动画数据
需要注意的是当前该脚本只记录了位置和旋转数据
- 打开 'text_to_keyframe.py' 脚本并且修改其中的变量,要与 object2text.py 中的变量设置相对应
- 运行脚本,然后播放动画
错误解决
在测试过程中发现,记录的csv文件中会有空行导致读取失败,解决方法是将 object2text.py 文件中的
with open(filename, 'wt') as fout:
修改为:
with open(filename, 'wt', newline='') as fout:
下载地址:记录动画脚本文件