Code Vonc

Modifier l'axe

Script Python pour Cinéma 4D R13.

Comment installer ?How to install ?
CommentairesComments

Modifier la position et la rotation de l'axe d'un objet

Attribue une nouvelle matrice à l'objet sélectionné sans modifier la position globale de ses points.



import c4d
from c4d import Vector, Matrix

def axe(objet, matrice, relatif = True) :
    if relatif : m_obj = objet.GetMl()
    else : m_obj = objet.GetMg()
    
    m = ~matrice * m_obj
    nbpts = objet.GetPointCount()
    points = objet.GetAllPoints()
    
    for i in xrange(nbpts) :
        points[i] = m.Mul(points[i])
	
    objet.SetAllPoints(points)
    
    if relatif : objet.SetMl(matrice)
    else : objet.SetMg(matrice)

def main() :
    if not op : return
    if op.GetType() != c4d.Opolygon : return
    
    doc.StartUndo()
    doc.AddUndo(c4d.UNDOTYPE_CHANGE, op)
    
    v_1 = Vector(0, 1, 0)
    v_2 = Vector(0, 0, 1)
    v_3 = Vector(1, 0, 0)
    dep = Vector(0, 50, 0)
    mat = Matrix(dep, v_1, v_2, v_3) # Nouvelle matrice
    
    axe(op, mat)
    
    op.Message(c4d.MSG_UPDATE)
    doc.EndUndo()
    c4d.EventAdd()

if __name__=='__main__':
    main()