搅拌机比例值未更新
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
当我运行这个脚本时:
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