从3D关节位置创建动画视频

时间:2018-11-04 08:37:49

标签: animation blender maya mo-cap

很抱歉,问题的某些部分或我的后续请求看似很愚蠢,但我对此领域没有任何经验,很遗憾,我快要截止日期了。

这个想法很容易解释,我(逐帧)具有人体25个关节的精确3D坐标。我需要的是周围有人类角色的相应动画视频。这个想法与此类似- https://www.youtube.com/watch?v=RPrdDlQXjEg

区别在于我具有逐帧3d联合值,而不是mocap数据。另外,我想对大量视频重复此过程,所以我想我不能为每个视频手动进行此操作(再次假设,如果我记错了,请告诉我)。

我在该领域没有任何经验。在提出这个问题之前,我似乎没有做任何研究,但我确实做到了。只是我对我的选择是什么以及它是否可行感到困惑。

我不希望得到详细的答案(尽管如果我得到的答案会很棒)。我只是在寻找可以向我指出正确教程的人。谢谢。

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

1 个答案:

答案 0 :(得分:1)

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)

如果愿意,您可以bake the animation进入电枢,以便删除容器。

Blender包含Motion Capture Tools插件,该插件提供了在某些阶段可能会有用的工具。您可能还需要查看Carnegie Mellon University Mocap Library Browser插件,此插件下载mocap数据并将其分配给装备,它包括一种将mocap数据传输到MakeHuman装备的方法,因此可能会有一些您可以使用或适应的东西