Cookbook
Unsorted
# Get Active Object
obj = doc.GetActiveObject
Matrix Array Transformation
Theory
Position
Selecting a single element
n = 20
# Position: Vector to Real
x = marr[n].off.x
y = 20
z = marr[n].off.z
marr[n].off = c4d.Vector(x,y,z)
Selecting a single element
for i in range(cnt):
x = marr[i].off.x
y = 20+i*5
z = marr[i].off.z
marr[i].off = c4d.Vector(x,y,z)
Rotation
Single Axis
rot_x = c4d.utils.MatrixRotX(c4d.utils.Rad(45))
rot_y = c4d.utils.MatrixRotY(c4d.utils.Rad(30))
rot_z = c4d.utils.MatrixRotZ(c4d.utils.Rad(45))
marr[6] *= rot_x
Multiple Axes with HPB to Matrix
r_x = c4d.utils.Rad(11)
r_y = 0
r_z = c4d.utils.Rad(18)
vect = c4d.Vector(r_x, r_y, r_z)
rotation = c4d.utils.HPBToMatrix(vect,5)
marr[6] *= rotation
Scale
for i in range(cnt):
x = random.uniform(0.2,1)
y = random.uniform(0.2,1)
z = random.uniform(0.2,1)
vect = c4d.Vector(x,y,z)
# marr[i].Scale(float(i/10))
marr[i].Scale(vect)
Color
carr = moData.GetArray(c4d.MODATA_COLOR) # Color Array
# Gray Scale
# carr[0] = c4d.Vector(0.5)
for i in range(cnt):
r = random.random()
g = random.random()
b = random.random()
carr[i] = c4d.Vector(r,g,b)
# Update Color Array
moData.SetArray(c4d.MODATA_COLOR, carr, hasField)
References
C4D SDK Documentation
C4D Python SDK Extended Github, Plugin Cafehttps://github.com/aturtur/cinema4d-scripts
Formula
Documentation
Alternate intensity based on row number (Animate over time)
mod((id/5);2)?(t;-t)
Animate over time based on the row number sequence
(id/5)/(count/5)*1.5*t
Last updated
Was this helpful?