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

标签 animation blender maya mo-cap

很抱歉,问题的某些部分或我的后续请求可能看起来很愚蠢,但我在这个领域完全没有经验,不幸的是我已经到了最后期限。

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

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

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

我不期望得到详细的答案(尽管如果我得到一个那就太棒了)。我只是在寻找有人向我指出正确的教程。谢谢。

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

最佳答案

动捕数据只是及时移动的点的集合,来自动捕系统的数据的格式可能比您拥有的数据更好,因此更容易说这些点是左肘,这些点是右脚踝。如果您无法指定该点序列是骨架中的该关节,那么您可能会遇到麻烦。

我们首先假设您有一系列按名称清晰标识每个跟踪标记的位置。首先创建一个空的来重新创建每个标记。

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插件,此插件下载 Action 捕捉数据并将其分配给装备,它包括一种将 Action 捕捉数据传输到 MakeHuman 装备的方法,因此可能有一些您可以使用或改编的东西。

关于animation - 从 3D 关节位置创建动画视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53139066/

相关文章:

android - Android 中从左到右的无缝 Activity 过渡动画

javascript - JQuery 改进 animation() 性能

blender - 在独立项目中使用 Blender 中的 mathutils 模块

c++ - 将 OpenGL 的 glRotated 转换为 Maya 的 cmds.rotate

python - 初始化顺序导致类实例问题

javascript - 幻灯片故障排除(计时器和动画)

android - Android中的帧动画?

python - 如何使用 Maya Python API 2.0 在网格中添加边

blender - 3DS max 或 blender 中的骨骼

c# - Unity 中的游戏逻辑编程