从三维关节位置创建动画视频



如果问题的某些部分或我的后续请求看起来很愚蠢,我很抱歉,但我在这方面一点经验都没有,不幸的是,我已经到了最后期限。

这个想法解释起来很简单,我有人体25个关节的精确三维坐标(逐帧(。我需要的是周围一个人物的相应动画视频-https://www.youtube.com/watch?v=RPrdDlQXjEg

不同的是,我有逐帧的三维关节值,而不是mocap数据。此外,我想对大量视频重复这个过程,所以我想我不能对每个视频都手动执行(同样是我的假设,如果我错了,请告诉我(。

我在这方面没有任何经验。在问这个问题之前,我似乎没有做任何研究,但我确实做了。只是我真的很困惑我的选择是什么,以及它是否可行。

我不希望得到一个详细的答案(尽管如果我能得到一个,那就太棒了(。我只是想找个人给我指正确的教程。非常感谢。

编辑:讨论继续-https://blender.stackexchange.com/questions/122369/create-animation-videos-from-3d-joint-positions

Mocap数据只是随时间移动的点的集合,来自Mocap系统的数据的格式可能比您现有的数据更好,因此可以更容易地说这些点是左肘,这些是右脚踝。如果你不能指定这个点序列就是电枢中的这个关节,你可能会遇到麻烦。

让我们先说,你有一个位置序列,每个跟踪标记的名称都清楚地识别出来。首先创建一个空的,用于重新创建每个标记。

import bpy
scn = bpy.context.scene
objs = bpy.data.objects
rig = objs['myrig']
mocap_data = {
# each item in list is (x,y,z) at each frame
'elbow.l': [(0,-.5,0),(0,-1,0),(0,-.5,0)],
'elbow.r': [(0,.5,0), (0,1,0), (0,.5,0)],
}
for m in mocap_data.keys():
o = objs.new(m, None)
scn.objects.link(o)

装备中的每个骨骼都应进行命名,以匹配标记的命名。在同一循环中,还可以为每个骨骼创建ChildOf约束,这将使骨骼遵循其标记。

c = rig.pose.bones[m].constraints.new('CHILD_OF')
c.target = o

现在,您需要设置每个标记的动画,以跟随其运动。

for f in range(len(mocap_data['elbow.l'])):
for m in mocap_data.keys():
objs[m].location = mocap_data[m][f]
objs[m].keyframe_insert('location', frame=f+1)

如果需要,可以将动画烘焙到电枢中,以便移除空的。

Blender包括运动捕捉工具插件,该插件提供了在某些阶段可能有所帮助的工具。您可能还想查看卡内基梅隆大学Mocap库浏览器插件,该插件下载Mocap数据并将其分配给钻机,它包括一种将Mocap数据传输到MakeHuman钻机的方法,因此您可能可以使用或调整一些内容。

最新更新