一、软件及插件准备
1、blender下载
blender.org - Home of the Blender project - Free and Open 3D Creation Software
2、插件下载及安装
https://support.rokoko.com/hc/en-us/articles/4410463492241-Install-the-Blender-plugin
3、fbx模型下载
mixamo网站随便下载一个模型就好,模型需要是Tpose,其他姿势映射出来动作不对。
或者自己找个Tpose模型丢去mixamo绑定骨骼后导出也行。
二、映射bvh动作到fbx模型
1、打开bvh文件及fbx模型
2、调节bvh骨架和fbx骨架
将bvh骨架和fbx骨架调成差不多大小,尽量是将大骨架调小,因为渲染很吃性能,模型太大可能渲染不动。
3、动作映射
在此,请确保已经参考1.2中的链接,安装好了rokoko插件,显示如下选项则说明已经安装好。如果第一次使用显示需要登陆,点击去官网注册并激活后续即可使用。
这一步时间轴需要选中在Tpose那一帧,否则映射出来结果不对。
在下面页面确保骨骼匹配且每个骨骼仅使用一次,确认无误后选择当前,点击Retarget Animation
等待进度走完后,拖动进度条就能看到fbx模型像我们希望的那样动起来了。
三、问题:bvh文件第一帧不是Tpose
思路:修改bvh的第一帧数据为Tpose
import logging
if __name__ == '__main__':
bvh_path = r"******.bvh"
file = open(bvh_path, 'r')
lines = file.readlines()
datas = []
start = 0
for line in lines:
if line.startswith("Time:") or line.startswith("Frame Time:"):
start = 1
elif start == 1:
data = line.split(" ")
if len(data) < 50:
logging.error('err len(data)<50', len(data))
add_data = ["0"] * (len(data) - 1)
datas.append(" ".join(add_data) + '\n')
start = 2
datas.append(line)
if start == 0:
logging.error('none find start')
with open(bvh_path, 'w') as file:
file.writelines(datas)