Blender给一个对象添加多个动画

最近在做一个类似元宇宙的项目,需要使用3D建模软件来给3D模型添加动画,3D建模软件选择Blender(因为开源免费...),版本: V3.5

遇到的需求是同一个对象要添加多个动画,然后在代码里根据需要调取动画来执行。本人讲述在Blender里如何操作。


操作步骤

添加第一个动画

打开Blender,这里以默认的立方体为例,

把底部窗口网上拉一点,然后选择Dope Sheet,

变成如下这样,

接着点击右侧的下拉菜单,选择Action Editor,

此时就变成了动作编辑的窗口,然后选中立方体,接着点击New来创建新的动作,

点击后会默认给个名字叫"Action",这里改成"Action1",改完后要按下回车,

此刻处于第一帧,立方体位置是(x:0, y:0, z:0),然后把鼠标放在立方体所在的窗口里,接着按下"i"键,在弹出窗口里选择Location,这样帧1位置插入了一帧,

接着把帧拖到第60帧,

然后在右侧窗口把立方体的位置改为(x:3, y:0, z:0),

此时再按下"i"来插入一帧,这样第一个动画就做好了,

拖动时间线可以看到动画效果,

添加第二个动画

首先观察一下对象和动画的关系,如下图,2者联系在一起了,

在Action1右侧有三个按钮,第一个像盾牌,叫Fake User,第二个叫New Action,第三个叫Unlink Action

三个按钮的意思是:

  • Faker User: 给动画添加一个虚假用户,Blender里如果动画没有和任何对象连接,那么重启后该动画就会被删除,虚假用户可以保证动画在重启Blender后不会被删除掉
  • New Action: 创建新动画
  • Unlink Action: 断开动画和对象的连接

点击第二个按钮来给立方体创建第二个动画,取名Action2,

Action2创建后,会默认使用Action1的帧,这里可以自行修改。

此时观察Cube的动画关系图,如下,

Action2处于当前动画位置,Action1则是被放到NLA Tracks里暂存起来了。此时如果导出立方体模型,然后在网页里使用threejs来解析,可以看到有2个动画,

但是如果把Action1选为当前动画,然后再次检查,发现只有一个动画Action1,

导入到网页里也只打印出一个动画。

那么该咋办呢?

首先把Action2选为当前动画(因为Action1已结暂存好了),然后在左侧发现有2个按钮Push Down和Stash,

含义如下:

  • Push Down: Push action down on to the NLA track as a new strip
  • Stash: Store this action in the NLA track as a non-contributing strip for later use

这里使用Push Down,点击之后再观察,可以看到立方体的NLA Tracks里包含了2个动画,

然后用threejs打印,可以看到也是有2个动画,

经过测试,Stash也可以达到同样效果,

这样就实现了在一个对象里添加多个动画的效果。

简单优化

可以在创建完第一个动画后,直接点击Push Down,然后再新建第二个动画,弄好帧之后再点击Push Down,以此类推...

相关推荐
linux修理工11 小时前
n1 Armbian OS 24.11.0 noble 安装suricata
linux·运维·服务器
荣光波比11 小时前
Nginx 实战系列(六)—— Nginx 性能优化与防盗链配置指南
运维·nginx·性能优化·云计算
萧鼎12 小时前
深入解析 Python 的 pytun 库:虚拟网络接口与隧道技术实战指南
服务器·网络·python
Re_Yang0912 小时前
2025年统计与数据分析领域专业认证发展指南
服务器·人工智能·数据分析
对你无可奈何13 小时前
关于Ubuntu的 update造成的内核升级
运维·服务器·ubuntu
qq_3129201114 小时前
Nginx限流与防爬虫与安全配置方案
运维·爬虫·nginx·安全
GanGuaGua14 小时前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
lsnm14 小时前
【LINUX网络】IP——网络层
linux·服务器·网络·c++·网络协议·tcp/ip
努力学习的小廉15 小时前
深入了解linux系统—— POSIX信号量
linux·运维·服务器
从零开始的ops生活15 小时前
【Day 50 】Linux-nginx反向代理与负载均衡
linux·nginx