【问题标题】:Create animation videos from 3D joint positions从 3D 关节位置创建动画视频
【发布时间】:2019-04-07 21:47:24
【问题描述】:

很抱歉,如果问题的某些部分或我的后续请求可能看起来很愚蠢,但我在这个领域完全没有经验,很遗憾我在截止日期前。

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

不同之处在于我有逐帧的 3d 关节值,而不是动作捕捉数据。此外,我想为大量视频重复该过程,所以我想我不能为每个视频手动执行此操作(再次假设,如果我错了,请告诉我)。

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

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

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

【问题讨论】:

    标签: animation blender maya mo-cap


    【解决方案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 插件,该插件下载动作捕捉数据并将其分配给装备,它包括一种将动作捕捉数据传输到 MakeHuman 装备的方法,因此您可能可以使用或适应某些东西。

    【讨论】:

    • 感谢您的指导。我有几个后续问题。 1.你说创建一个'空'。空什么?我不明白那个术语 2. 在 mocap_data 字典中,键的名称是否需要与一些预定义的命名法相匹配,或者我可以简单地将它们命名为 l_elbow、r_elbow 等? 3.骨骼部分的命名,我不清楚我该怎么做。
    • 在搅拌机中,empty is an object 没有附加几何图形。动作捕捉数据中的键可以根据需要命名,如果它们匹配相应的骨骼名称会容易得多,因为您可以使用键来引用骨骼并匹配空。骨架中的每个骨骼都有一个名称,最初它们将是 Bone、Bone.001...您命名骨骼以轻松识别每个骨骼,并按照这样的步骤引用相应的骨骼。
    • bpy 模块是搅拌机应用程序的一部分。你tell blender to run the script,在运行搅拌机的情况下,你可以使用它的text editor 打开和运行脚本。
    • 是的,第一个循环创建标记,您可以将接下来的两行添加到同一个循环中以同时创建约束,然后第二个循环执行动画。创建标记和约束的循环会将每个标记与同名骨骼相关联。如果你需要遍历骨骼,你可以使用for bone in rig.pose.bones:
    • 如果您需要更多有关搅拌机的帮助,请联系blender.stackexchange
    猜你喜欢
    • 2022-10-14
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    相关资源
    最近更新 更多