I'm new to Blender and new to Python, on my Layer 1 I have a ball named "BallB". Now I want to make a simple bubbling-animation using Python in Blender but I'm unable to make a keyframe. This should happen on Layer 2. I tried many and got many Errors.... all the Snippets I found didn't work and my script allways crashed with Python-Errors like "RuntimeError: Operator bpy.ops.anim.change ... expected an timeline/animation area to be activated" and many more.
Has anybody some hints for me? I'd like to learn scripted animations in Blender so I'm very thankfull for every hint which advances me ;-)
My Code:
import bpy, math, random
d = 4
anz = 100
frameAnz = 10
scene = bpy.context.scene
scene.frame_start = 1
scene.frame_end = 100
for anz in range (0,anz):
ball = bpy.data.objects["ballB"]
tball = ball.copy()
xpos = -1 * (d/2) + random.randint(0,(d-1))
xpos += random.random()
ypos = -1 * (d/2) + random.randint(0,(d-1))
ypos += random.random()
zpos = random.randint(0,(d-1))
zpos += random.random()
bn = str(anz).zfill(5)
bn = "zz_Ball-" + bn
tball.name = bn
tball.location = (xpos, ypos, zpos)
sz = random.uniform(0.015,0.09)
tball.scale = (sz,sz,sz)
#tball.nodes["Emission"].inputs[1].default_value = 200
tball.select = False
scene.objects.link(tball)
#print ("done!")
obj = bpy.context
for actFrame in range(1,frameAnz):
# scene = bpy.context.scene
# scene.keyframe_insert(data_path="gravity", frame = actFrame)
for ob in scene.objects:
ploc = ob.location
#print (ploc)
xpos = ploc[0]
ypos = ploc[1]
zpos = ploc[2]
zpos = zpos + random.random()
ob.location = (xpos, ypos, zpos)
#ypos = ball.location[1]
#zpos = ball.location]2]
#zpos = zpos - random.random()
#ball.location = (xpoy, ypos, zpos)
#obj.keyframe_insert_menu('Location')
#bpy.context.scene.frame_set(0)
#scene = bpy.context.scene
#scene.keyframe_insert(data_path="Location", frame=actFrame)