嗨,我有一个正在处理的脚本,它不能正常工作,我想要它 这是我到目前为止所得到的
import bpy
def Key_Frame_Points(): #Gets the key-frame values as an array.
fcurves = bpy.context.active_object.animation_data.action.fcurves
for curve in fcurves:
keyframePoints = fcurves[4].keyframe_points # selects Action channel's axis / attribute
for keyframe in keyframePoints:
print('KEY FRAME POINTS ARE @T ',keyframe.co[0])
KEYFRAME_POINTS_ARRAY = keyframe.co[0]
print(KEYFRAME_POINTS_ARRAY)
Key_Frame_Points()
当我运行它时,它打印出所选对象上的所有关键帧,如我所愿。但问题是我无法将某些值打印成变量。如果您运行它并检查系统concole。它的表现很奇怪。就像它打印出Keyframed对象的值一样。但是当我要求它将这些值作为一个数组时,它只是打印出最后一帧。
以下简要介绍
答案 0 :(得分:0)
我认为您要做的是将每个keyframe.co[1]
添加到数组中,这意味着您要使用KEYFRAME_POINTS_ARRAY.append(keyframe.co[1])
并为此工作,您需要将其定义为循环外的空数组与KEYFRAME_POINTS_ARRAY = []
请注意,keyframe.co[0]
是键控的帧,而keyframe.co[1]
是该帧的键控值。
另外值得注意的是,你是在循环fcurves而不是使用每条曲线。
for curve in fcurves:
keyframePoints = fcurves[4].keyframe_points
在这里使用fcurves[4]
,您每次都在阅读相同的曲线,您可能打算使用keyframePoints = curve.keyframe_points
所以我希望你想要 -
import bpy
def Key_Frame_Points(): #Gets the key-frame values as an array.
KEYFRAME_POINTS_ARRAY = []
fcurves = bpy.context.active_object.animation_data.action.fcurves
for curve in fcurves:
keyframePoints = curve.keyframe_points
for keyframe in keyframePoints:
print('KEY FRAME POINTS ARE frame:{} value:{}'.format(keyframe.co[0],keyframe.co[1]))
KEYFRAME_POINTS_ARRAY.append(keyframe.co[1])
return KEYFRAME_POINTS_ARRAY
print(Key_Frame_Points())
您可能也有兴趣使用fcurves.find(data_path)
按照其路径查找特定曲线。
还有fcurve.evaluate(frame)
可以为您提供任何帧的曲线值,而不仅仅是键控值。