搅拌机比例值未更新

Blender scale value not updating

当我运行这个脚本时:

import bpy
import math

s = bpy.context.scene.frame_start 
e = bpy.context.scene.frame_end

values = []
print(s)
print(e)

for i in range(s,e):
    bpy.context.scene.frame_current = i
    print(i)
    v = (bpy.context.object.scale[1])
    bpy.context.object.scale[0] = i
    print('At frame ',str(i), ' value ' ,str(v))
    values.extend([bpy.context.object.scale[1]])

它给了我正确的帧数,但值总是相同的,即使对象的比例 [1] 被烘焙成声音,所以它总是在帧之间变化。

看起来 Blender 没有更新值,它总是采用文本 运行.

期间的帧的值

有什么方法可以在 运行 期间实时更新代码的值?

您查看的值有误。

您有 v = scale[1] 然后设置 scale[0] = i 然后 print(v) 所以您阅读 scale.y 并更改 scale.x 然后查看 scale.y

最好使用scene.frame_set()通过python换帧。

获取键值的另一种方法是使用 fcurve.evaluate(frame)

import bpy

s = bpy.context.scene.frame_start 
e = bpy.context.scene.frame_end

values = []
f = bpy.context.object.animation_data.action.fcurves.find('scale', index=1)

for i in range(s,e):
    v = f.evaluate(i)
    print('At frame ',str(i), ' value ' ,str(v))
    values.extend([v])

如果您打算对值设置关键帧,则无需更改帧,因为您可以在 keyframe_insert(data_path, frame=f)

中指定帧
obj.keyframe_insert('scale', frame=2)
obj.keyframe_insert('scale', index=1, frame=5) # key only scale.y