# Statistics

Viewed 771 times
Favorited by 0 user(s)

# Simple animation in C4D (R13) via Python Programming Language

/ Published in: Python

Simple animation in C4D (R13) consisting of moving a cube from state 1 to state 2 with Python.

Copy this code and paste it in your HTML
`# CGTalk Example...# By: Ricardo Prada. """State at frame 0:+ Position: (0,0,0) # in cm+ Rotation: (0,0,0) # in XYZ-degrees format+ Size: (100,200,200) # in cm+ Segments: (10,20,20)+ Material: Blue+ Bend (Deformer): 	- Position: (0,0,0) # in cm	- Rotation: (0,0,0) # in XYZ-degrees format	- Size: (100,200,200) # in cm	- Mode: "Limited"	- Strength: 45 # in degrees	- Angle: 30 # in degrees State at frame 120:+ Position: (900,1200,2500) # in cm+ Rotation: (45,80,120) # in XYZ-degrees format+ Size: (200,300,700) # in cm+ Segments: (20,30,70)+ Material: Red+ Bend (Deformer):	- Position: (900,1200,2500) # in cm	- Rotation: (45,80,120) # in XYZ-degrees format	- Size: (200,300,700) # in cm	- Mode: "Limited"	- Strength: 120 # in degrees	- Angle: 60 # in degrees""" import c4dimport math def CreateKey(op,id,value,frame):	if not op.GetDocument(): raise Exception, "object must be in a document" 	# First check if the track type already exists, otherwise create it...	track=op.FindCTrack(id)	if not track:		track=c4d.CTrack(op,id)		op.InsertTrackSorted(track) 	curve=track.GetCurve()	key=curve.AddKey(c4d.BaseTime(frame,doc.GetFps())) 	if type(value)==int or type(value)==float:		key["key"].SetValue(curve,value)	else:		key["key"].SetGeData(curve,value)  def main():	# Initial Parameters:	fps=30	minFrame=0	maxFrame=150 	doc.SetFps(fps)	doc.SetMinTime(c4d.BaseTime(minFrame,fps))	doc.SetMaxTime(c4d.BaseTime(maxFrame,fps))	doc.SetTime(c4d.BaseTime(maxFrame,fps)) 	# Materials:	mat1=c4d.BaseMaterial(c4d.Mmaterial)	mat1.SetName("Blue")	mat1[c4d.MATERIAL_COLOR_COLOR]=c4d.Vector(0,0,1)	doc.InsertMaterial(mat1) 	mat2=c4d.BaseMaterial(c4d.Mmaterial)	mat2.SetName("Red")	mat2[c4d.MATERIAL_COLOR_COLOR]=c4d.Vector(1,0,0)	doc.InsertMaterial(mat2) 	# Texture:	mtag=c4d.TextureTag() # Create a new texture tag... 	# Cube:	cube=c4d.BaseObject(c4d.Ocube)	cube.SetName("MyCube")	cube.InsertTag(mtag)	doc.InsertObject(cube) 	doc.SetActiveObject(cube) # The record command needs an active object...	cube.Message(c4d.MSG_UPDATE) 	# Deformer:	bend=c4d.BaseObject(c4d.Obend)	bend.SetName("MyBend")	bend[c4d.BENDOBJECT_MODE]=1 # 0=Within Box, 1=Limited, 2=Unlimited...	doc.InsertObject(bend,cube) # Add it to the Object Manager as a child of the cube... 	doc.SetActiveObject(bend) # The record command needs an active object	bend.Message(c4d.MSG_UPDATE) 	# ID Definitions:	# + Position:	ID_IDBASEOBJECTGLOBALPOSITION_X=c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_GLOBAL_POSITION,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_X,c4d.DTYPE_REAL,0))	ID_IDBASEOBJECTGLOBALPOSITION_Y=c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_GLOBAL_POSITION,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_Y,c4d.DTYPE_REAL,0))	ID_IDBASEOBJECTGLOBALPOSITION_Z=c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_GLOBAL_POSITION,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_Z,c4d.DTYPE_REAL,0)) 	# + Rotation:	ID_IDBASEOBJECTGLOBALROTATION_X=c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_GLOBAL_ROTATION,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_X,c4d.DTYPE_REAL,0))	ID_IDBASEOBJECTGLOBALROTATION_Y=c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_GLOBAL_ROTATION,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_Y,c4d.DTYPE_REAL,0))	ID_IDBASEOBJECTGLOBALROTATION_Z=c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_GLOBAL_ROTATION,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_Z,c4d.DTYPE_REAL,0)) 	# + Size:	ID_PRIMCUBELEN_X=c4d.DescID(c4d.DescLevel(c4d.PRIM_CUBE_LEN,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_X,c4d.DTYPE_REAL,0))	ID_PRIMCUBELEN_Y=c4d.DescID(c4d.DescLevel(c4d.PRIM_CUBE_LEN,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_Y,c4d.DTYPE_REAL,0))	ID_PRIMCUBELEN_Z=c4d.DescID(c4d.DescLevel(c4d.PRIM_CUBE_LEN,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_Z,c4d.DTYPE_REAL,0)) 	# + Segments:	ID_PRIMCUBESUBX=c4d.DescID(c4d.DescLevel(c4d.PRIM_CUBE_SUBX,c4d.DTYPE_LONG,0))	ID_PRIMCUBESUBY=c4d.DescID(c4d.DescLevel(c4d.PRIM_CUBE_SUBY,c4d.DTYPE_LONG,0))	ID_PRIMCUBESUBZ=c4d.DescID(c4d.DescLevel(c4d.PRIM_CUBE_SUBZ,c4d.DTYPE_LONG,0)) 	# + Material:	ID_TEXTURETAGMATERIAL=c4d.DescID(c4d.DescLevel(c4d.TEXTURETAG_MATERIAL,c4d.DTYPE_BASELISTLINK,0)) 	# + Bend:	#   - Position: Defined above.	#   - Rotation: Defined above.	#   - Size:	ID_DEFORMOBJECTSIZE_X=c4d.DescID(c4d.DescLevel(c4d.DEFORMOBJECT_SIZE,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_X,c4d.DTYPE_REAL,0))	ID_DEFORMOBJECTSIZE_Y=c4d.DescID(c4d.DescLevel(c4d.DEFORMOBJECT_SIZE,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_Y,c4d.DTYPE_REAL,0))	ID_DEFORMOBJECTSIZE_Z=c4d.DescID(c4d.DescLevel(c4d.DEFORMOBJECT_SIZE,c4d.DTYPE_VECTOR,0),c4d.DescLevel(c4d.VECTOR_Z,c4d.DTYPE_REAL,0))	#   - Mode: Constant over time, so not defined...	#   - Strength:	ID_DEFORMOBJECTSTRENGTH=c4d.DescID(c4d.DescLevel(c4d.DEFORMOBJECT_STRENGTH,c4d.DTYPE_REAL,0))	#   - Angle:	ID_DEFORMOBJECTANGLE=c4d.DescID(c4d.DescLevel(c4d.DEFORMOBJECT_ANGLE,c4d.DTYPE_REAL,0))  	# Keys:	# At frame = 0:	frame=0 	# + Position:	CreateKey(cube,ID_IDBASEOBJECTGLOBALPOSITION_X,value=0,frame=frame)	CreateKey(cube,ID_IDBASEOBJECTGLOBALPOSITION_Y,value=0,frame=frame)	CreateKey(cube,ID_IDBASEOBJECTGLOBALPOSITION_Z,value=0,frame=frame) 	# + Rotation:	CreateKey(cube,ID_IDBASEOBJECTGLOBALROTATION_X,value=0,frame=frame)	CreateKey(cube,ID_IDBASEOBJECTGLOBALROTATION_Y,value=0,frame=frame)	CreateKey(cube,ID_IDBASEOBJECTGLOBALROTATION_Z,value=0,frame=frame) 	# + Size:	CreateKey(cube,ID_PRIMCUBELEN_X,value=100,frame=frame)	CreateKey(cube,ID_PRIMCUBELEN_Y,value=200,frame=frame)	CreateKey(cube,ID_PRIMCUBELEN_Z,value=200,frame=frame) 	# + Segments:	CreateKey(cube,ID_PRIMCUBESUBX,value=10,frame=frame)	CreateKey(cube,ID_PRIMCUBESUBY,value=20,frame=frame)	CreateKey(cube,ID_PRIMCUBESUBZ,value=20,frame=frame) 	# + Material:	CreateKey(mtag,ID_TEXTURETAGMATERIAL,value=mat1,frame=frame) 	# + Bend:	#   - Position:	CreateKey(bend,ID_IDBASEOBJECTGLOBALPOSITION_X,value=0,frame=frame)	CreateKey(bend,ID_IDBASEOBJECTGLOBALPOSITION_Y,value=0,frame=frame)	CreateKey(bend,ID_IDBASEOBJECTGLOBALPOSITION_Z,value=0,frame=frame) 	#   - Rotation:	CreateKey(bend,ID_IDBASEOBJECTGLOBALROTATION_X,value=0,frame=frame)	CreateKey(bend,ID_IDBASEOBJECTGLOBALROTATION_Y,value=0,frame=frame)	CreateKey(bend,ID_IDBASEOBJECTGLOBALROTATION_Z,value=0,frame=frame) 	#   - Size:	CreateKey(bend,ID_DEFORMOBJECTSIZE_X,value=100,frame=frame)	CreateKey(bend,ID_DEFORMOBJECTSIZE_Y,value=200,frame=frame)	CreateKey(bend,ID_DEFORMOBJECTSIZE_Z,value=200,frame=frame) 	#   - Strength:	CreateKey(bend,ID_DEFORMOBJECTSTRENGTH,value=math.radians(45),frame=frame) 	#   - Angle:	CreateKey(bend,ID_DEFORMOBJECTANGLE,value=math.radians(30),frame=frame) 	cube.Message(c4d.MSG_UPDATE)   	# At frame = 120:	frame=120 	# + Position:	CreateKey(cube,ID_IDBASEOBJECTGLOBALPOSITION_X,value=900,frame=frame)	CreateKey(cube,ID_IDBASEOBJECTGLOBALPOSITION_Y,value=1200,frame=frame)	CreateKey(cube,ID_IDBASEOBJECTGLOBALPOSITION_Z,value=2500,frame=frame) 	# + Rotation:	CreateKey(cube,ID_IDBASEOBJECTGLOBALROTATION_X,value=math.radians(45),frame=frame)	CreateKey(cube,ID_IDBASEOBJECTGLOBALROTATION_Y,value=math.radians(80),frame=frame)	CreateKey(cube,ID_IDBASEOBJECTGLOBALROTATION_Z,value=math.radians(120),frame=frame) 	# + Size:	CreateKey(cube,ID_PRIMCUBELEN_X,value=200,frame=frame)	CreateKey(cube,ID_PRIMCUBELEN_Y,value=300,frame=frame)	CreateKey(cube,ID_PRIMCUBELEN_Z,value=700,frame=frame) 	# + Segments:	CreateKey(cube,ID_PRIMCUBESUBX,value=20,frame=frame)	CreateKey(cube,ID_PRIMCUBESUBY,value=30,frame=frame)	CreateKey(cube,ID_PRIMCUBESUBZ,value=70,frame=frame) 	# + Material:	CreateKey(mtag,ID_TEXTURETAGMATERIAL,value=mat2,frame=frame) 	# + Bend:	#   - Position:	CreateKey(bend,ID_IDBASEOBJECTGLOBALPOSITION_X,value=900,frame=frame)	CreateKey(bend,ID_IDBASEOBJECTGLOBALPOSITION_Y,value=1200,frame=frame)	CreateKey(bend,ID_IDBASEOBJECTGLOBALPOSITION_Z,value=2500,frame=frame) 	#   - Rotation:	CreateKey(bend,ID_IDBASEOBJECTGLOBALROTATION_X,value=math.radians(45),frame=frame)	CreateKey(bend,ID_IDBASEOBJECTGLOBALROTATION_Y,value=math.radians(80),frame=frame)	CreateKey(bend,ID_IDBASEOBJECTGLOBALROTATION_Z,value=math.radians(120),frame=frame) 	#   - Size:	CreateKey(bend,ID_DEFORMOBJECTSIZE_X,value=200,frame=frame)	CreateKey(bend,ID_DEFORMOBJECTSIZE_Y,value=300,frame=frame)	CreateKey(bend,ID_DEFORMOBJECTSIZE_Z,value=700,frame=frame) 	#   - Strength:	CreateKey(bend,ID_DEFORMOBJECTSTRENGTH,value=math.radians(120),frame=frame) 	#   - Angle:	CreateKey(bend,ID_DEFORMOBJECTANGLE,value=math.radians(60),frame=frame) 	cube.Message(c4d.MSG_UPDATE) 	c4d.EventAdd()   if __name__=='__main__':	main()`