Python API变化?动画附加组件不';自2.63版以来无法工作

Python API变化?动画附加组件不';自2.63版以来无法工作,python,blender,add-on,Python,Blender,Add On,我的FlipAnimation附加组件在2.62版之前可以正常工作,但拒绝在较新版本上工作。它的主要目的是获取当前活动动作的一系列关键帧,并在每个相关帧上执行复制姿势和粘贴X翻转姿势。因此,根据选择的模式,要么镜像整个动作,要么处理并附加指定的范围 现在从2.63开始,它“假装”起作用,但粘贴的姿势不是X翻转。我想应该归咎于以下代码片段: for frame_item in self.keyframe_bone_dict.items (): frame = frame_i

我的FlipAnimation附加组件在2.62版之前可以正常工作,但拒绝在较新版本上工作。它的主要目的是获取当前活动动作的一系列关键帧,并在每个相关帧上执行
复制姿势
粘贴X翻转姿势
。因此,根据选择的模式,要么镜像整个动作,要么处理并附加指定的范围

现在从2.63开始,它“假装”起作用,但粘贴的姿势不是X翻转。我想应该归咎于以下代码片段:

    for frame_item in self.keyframe_bone_dict.items ():
        frame = frame_item[0]
        bones = frame_item[1]
        context.scene.frame_set(frame)
        bpy.ops.pose.select_all(action='DESELECT')
        for bone_item in bones.items ():
            bone = bone_item[0]
            bpy.context.active_object.data.bones[bone].select = True
        bpy.ops.pose.copy()
        if self.append_mode:
            context.scene.frame_set(frame + self.append_frames_offset)
        bpy.ops.pose.paste(flipped=True) 
keyframe\u bone\u dict
包含用于接触所有受影响骨骼的每个帧的字典。因此,我迭代所有关键帧,选择在此处定义了关键帧的骨骼。然后复制姿势并在当前帧或另一个附加帧偏移的帧上粘贴X翻转姿势。在正确的位置有粘贴的关键帧,但其值不是X翻转的

我研究了API的变化,但没有发现任何可疑的东西。仅对键集进行一些小的更改,如name=>bl\u标签

还有什么变化吗?或者还有什么会导致行为的改变

我刚开始阅读如何向bf extensions Trackers提交代码,然后在使用不同版本进行测试时遇到了这个问题。现在我真的被卡住了,因为我是新的插件开发人员

非常感谢你的帮助

更新

我做了一些进一步的调查,发现在粘贴姿势操作符成功返回下面的调试语句之后

print (context.active_pose_bone, " (after): ", context.active_pose_bone.rotation_quaternion)
显示所考虑骨骼关键帧的合理值,即正确值。但在加载项完成后,相同的键要么保持不变,要么在其四元数成员(0-1%)中有可忽略的更改。有时受影响的骨骼有轻微变化。真奇怪:-(

更新2 附加运行被设计为仅在姿势模式下运行,面板在任何其他模式下隐藏。在开始复制和粘贴过程之前,执行一组语句以确保满足所有先决条件。这包括:活动对象是否包含定义了至少一个动作的电枢、是否选择了动作、是否自动仅使用活动关键帧集插入ic关键帧,并启用仅使用活动关键帧集自动插入关键帧

更多信息:

  • ,请随意参与该项目

如果您还没有,请在freenode.org上的#blenderpython IRC频道上询问。听起来像是一个模式问题,不会导致任何更新,但如果它在2.62上运行,则应该是相同的。@neomonkeus谢谢,我会在这样的情况下尝试,blender.org上的交叉发布不会得到提示。'mode issue'?听起来您遇到了类似的问题ms在过去?目前正在移植一个2.4x脚本。另一个开发人员正在进行电枢导入/导出,如果您的模式不正确,则可能无法进行更新。但这只是一个一般性的观察结果,因此如果这是问题的原因,您会感到惊讶。@neomonkeus我更新了这个问题,该加载项仅在pose模式下运行。@Kay you可能对