【问题标题】:Vertex animation exporter for Blender?Blender的顶点动画导出器?
【发布时间】:2012-02-26 15:50:57
【问题描述】:

我真的很想为 Blender 编写一个导出矢量动画(如 md2)的导出脚本,但我似乎无法抓取由骨骼修改的顶点...我已经编写了静态导出器,但是得到了转换的顶点积分有点超出我...

有没有一种方法可以轻松地获取某个顶点的位置,该顶点在某些帧上被骨骼动画化了?目前我正在制作搅拌机动画,将每一帧导出到 *.obj,将每一帧导入一个新场景并使用我的静态模型脚本导出每个新模型以导出新的矢量位置......必须有一个更简单(更快) 方式!

有没有人知道任何教程或指出任何可能有帮助的命令/方法?

我对 python 真的不是很好,所以我当前的导出器写得有点糟糕......我希望在代码框中显示代码,但我不知道如何在其中显示 python 代码这里有一个代码块......对此感到抱歉。

【问题讨论】:

    标签: python blender


    【解决方案1】:

    首先,来源。它假定您的骨骼动画对象称为“立方体”。

    import bpy
    
    o = bpy.data.objects['Cube']
    
    frame_start = bpy.context.scene.frame_start
    frame_end = bpy.context.scene.frame_end
    
    for i in range(frame_start, frame_end):
        bpy.context.scene.frame_set(i)
        bpy.context.scene.update()
    
        m = o.to_mesh(bpy.context.scene, True, 'PREVIEW')
    
        print("Frame %d:" % i)
    
        for v in m.vertices:
            print("    (%f %f %f)" % (v.co.x, v.co.y, v.co.z))
    
        print("\n")
    

    然后我们将遍历每一行。我们首先导入 Blender Python 模块。

    import bpy
    

    我们检索要导出其顶点的对象。

    o = bpy.data.objects['Cube']
    

    我们检索动画的开始和结束帧;这两个值显示在屏幕底部,默认为“开始:1”和“结束:250”。

    frame_start = bpy.context.scene.frame_start
    frame_end = bpy.context.scene.frame_end
    

    然后我们遍历第一帧和最后一帧之间的每一帧。

    for i in range(frame_start, frame_end):
    

    我们设置当前帧;请注意,看似等效的调用 (*bpy.ops.anim.change_frame(frame = i)* 将 not 正常工作。如果有人对此有解释,请随时分享:-)) .

        bpy.context.scene.frame_set(i)
    

    update 的调用似乎没有必要,但最好有它,因为它会强制所有更新依赖于帧位置(即动画)。

        bpy.context.scene.update()
    

    我们将对象转换为网格,根据其预览设置应用所有修改器(包括骨架)。

        m = o.to_mesh(bpy.context.scene, True, 'PREVIEW')
    

    我们打印当前帧号。

        print("Frame %d:" % i)
    

    我们打印该帧的所有顶点,每行一个。

        for v in m.vertices:
            print("    (%f %f %f)" % (v.co.x, v.co.y, v.co.z))
    

    我们用换行符分隔不同帧的顶点。

        print("\n")
    

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 2019-03-30
      • 2017-11-30
      • 2017-07-12
      • 2022-08-19
      • 2013-11-21
      • 2015-04-29
      • 1970-01-01
      • 2014-06-12
      相关资源
      最近更新 更多