Cinema4D Python Tutoriel Tutoriel python

Créer un objet polygonal en python dans Cinema4D

Dans ce tutoriel nous allons apprendre à créer un simple objet polygonal, définir ses points et relier ces points par un polygone.

Nous aurons besoin de la classe PolygonObject dont le constructeur(c4d.PolygonObject(nb_pts,np_polys) ou c4d.PolygonObject.__init__(nb_pts,np_polys)) prend deux paramètres : le nombre de points et le nombre de polygones.

Une fois cet objet créé il faut lui renseigner les points, si vous regardez dans la classe elle-même il n’y a aucune méthode pour ceci, on a juste une une méthode .SetPolygon() . C’est tout l’intérêt de l’héritage, PolygonObject hérite de PointObject, et de toutes ses méthodes. C’est pour cela que l’on peut utiliser la méthode .SetPoint() ou .SetAllPoints() avec un PolygonObject.

De même que si l’on remonte encore plus dans les classes mères, PointObject hérite de BaseObject qui hérite elle-même de Baselist2D qui hérite de GeListNode qui a pour classe mère c4dAtom

import c4d


def main():
    #variables pour la hauteur et la largeur
    #placées au début du code pour pouvoir les modifier plus facilement
    largeur = 210/2.
    hauteur = 297/2.0
    
    #nombre de points et nombre de polygones
    nb_pts = 4
    nb_polys = 1
    #création de l'objet polygonal qui prend deux attributs : nombre de points et nombre de polygones'
    opoly = c4d.PolygonObject(nb_pts,nb_polys)
    
    #création des quatres points et attribution de chaqun à l'objet polygonal
    pt0 = c4d.Vector(-largeur,0,hauteur)
    opoly.SetPoint(0,pt0)
    
    pt1 = c4d.Vector(largeur,0,hauteur)
    opoly.SetPoint(1,pt1)
    
    pt2 = c4d.Vector(largeur,0,-hauteur)
    opoly.SetPoint(2,pt2)
    
    pt3 = c4d.Vector(-largeur,0,-hauteur)
    opoly.SetPoint(3,pt3)
    
    #création du polygone et attribution à l'objet polygonal
    poly0 = c4d.CPolygon(0,1,2,3)
    opoly.SetPolygon(0,poly0)
    
    #envoi d'un message à l'objet pour lui signaler qu'il a été modifié
    #sert à recalculer à l'interne l'emprise de l'objet et plein d'autres trucs'
    opoly.Message(c4d.MSG_UPDATE)
    
    #insertion de notre objet polygonal dans le document
    doc.InsertObject(opoly)
    
    #on signale à Cinema4D qu'il y a eu un évènement
    #et qu'il doit notamment rafraichir les vues
    c4d.EventAdd()

if __name__=='__main__':
    main()
créer un objet polygonal dans py4d

version courte :

import c4d


def main():
    largeur = 210/2.
    hauteur = 297/2.0
    
    opoly = c4d.PolygonObject(4,1)
    
    pts = [c4d.Vector(-largeur,0,hauteur),
           c4d.Vector(largeur,0,hauteur),
           c4d.Vector(largeur,0,-hauteur)
           c4d.Vector(-largeur,0,-hauteur)           
          ]
    opoly.SetAllPoints(pts)
    opoly.SetPolygon(0,c4d.CPolygon(0,1,2,3))
    opoly.Message(c4d.MSG_UPDATE)
    doc.InsertObject(opoly)
    c4d.EventAdd()

if __name__=='__main__':
    main()
objet polygonal py4d version courte

Leave a Reply