Timeline Keyframes per Python generieren - moevenbaer - 16.10.2023
Hallo und guten Tag.
Ich versuche für ein markiertes Object die Keyframes für die Animation per Phyton zu generieren:
Code: import bpy
bpy.context.scene.frame_start = 1
bpy.context.scene.frame_end = 201
for f in range(2,12,2):
bpy.context.scene.frame_current = 20*f
bpy.ops.anim.keyframe_delete_v3d()
for f in range(2,12,2):
bpy.context.scene.frame_current = 20*f
px=0.0
py=f
pz=0.0
bpy.context.object.location = (px,py,pz)
bpy.ops.anim.keyframe_insert_by_name(type="Location")
Ich erwarte eigentlich, dass die einzelnen Keyframes mit unterschiedlichen Locations (y=2,4,6,...) versehen sind, aber im Ergebnis haben sie alle nur den ersten Positionswert.
Was denke ich falsch?
Ekkehard
Blender 6.4.0
RE: Timeline Keyframes per Python generieren - moevenbaer - 16.10.2023
Zwar weiß ich noch nicht, was ich falsch gedacht habe, aber ich habe einen Weg für das aktive Objekt gefunden (Positionierung, Drehung und Skalierung):
Code: import bpy, math
obj=bpy.context.active_object
# Alte Keyframes löschen
for f in range(2,12,2):
bpy.context.scene.frame_current = 20*f
bpy.ops.anim.keyframe_delete_v3d()
bpy.context.scene.frame_start = 1
bpy.context.scene.frame_end = 201
bpy.context.scene.frame_current = 1
for f in range(2,12,2):
#+++++++++++++++++++++++++++++++++++++++++++++++++++++#
px=0.0
py=f*1.0
pz=0.0
obj.location = (px,py,pz)
obj.keyframe_insert(data_path="location", frame=f*20)
#+++++++++++++++++++++++++++++++++++++++++++++++++++++#
rdx=0.0
rdy=0.0
rdz=f*10.0
rex=rdx*math.pi/180
rey=rdy*math.pi/180
rez=rdz*math.pi/180
obj.rotation_euler = (rex,rey,rez)
obj.keyframe_insert(data_path="rotation_euler", frame=f*20)
#+++++++++++++++++++++++++++++++++++++++++++++++++++++#
sx=1.0
sy=f*1.0
sz=1.0
obj.scale = (sx,sy,sz)
obj.keyframe_insert(data_path="scale", frame=f*20)
#+++++++++++++++++++++++++++++++++++++++++++++++++++++#
Ekkehard
|