#-------------------------
# dominos
# jm soler 07-2003
#
# il peut etre necessaire de
# faire alt-p avant de lancer
# l'animation
#------------------------
import Blender
import math
rayon=310.30
name='domino'
dom=Blender.Object.Get()
dominos=0
for d in dom:
if d.name.find(name+'.')!=-1:
dominos+=1
print dominos
#dominos-=1
C=Blender.Object.Get(name) # get
original object
P=Blender.Object.Get('planete')
# get original object
#print P.LocX,P.LocY,P.LocZ
for o in range(dominos):
O_=name+'.%03d'%(o+1)
# order is important, ('.001','.002','.003',...)
decalage=4*(o+1)
# first contact with next object
O=Blender.Object.Get(O_)
# get this object : "Cube.0nn", nn=str(o)
I=Blender.Ipo.Get('ObIpo') # get the
lone ipo cirve of the file
Tf=Blender.Get('curframe') # get curframe
number
if Tf>=decalage+10:
# for this object eval ipo curve
O.RotX=I.curves[0].eval(float(Tf-decalage))/6.2832*1.155-(o*(math.pi*2)/dominos)
else:
try:
#print O.name
O.RotX=I.curves[0].eval(1.0)/(math.pi*2)*1.06-(o*(math.pi*2)/(dominos+1))
O.LocZ=math.cos(o*(math.pi*2)/(dominos+1))*rayon+P.LocZ
O.LocY=math.sin(o*(math.pi*2)/(dominos+1))*rayon+P.LocY
except:
pass
|