C4D Objekte erstellen

Nun soll doch endlich mal etwas im 3D-Fenster von Cinema 4D passieren.

Lass und einfach mal einen Würfel im Editor erstellen.

Die einfachste Variante um etwas in der C4D-Szene zu verändern ist die Funktion call_command().

Damit kannst Du C4D fernsteuern.

Öffne den Befehls-Manager mit dem Du Deine Befehlsleisten im C4D-Layout verändern kannst.

Klick einen Befehl in dem Manager an und lies unten rechts die Befehls-ID aus.

Der Befehl um eien Würfel zu generieren hat z.B. die ID 5159.

Folgender Code:

[py]import c4d
c4d.call_command(5159)[/py]

generiert einen Würfel in der C4D-Szene.

Wir wollen nun aber einen Würfel erstellen auf den wir im weiteren Programmablauf zugreifen können um ihn zu manipulieren.
In der Py4D-Dokumentation findest Du unter dem Menüpunkt „module – c4d“ die Beschreibung der Methoden (Funktionen) der Klasse:“BaseObject“.
Du solltest auf jeden Fall wissen was „Objektorientiertes Programmieren“ ist, um in Py4D mit der C4D-API umgehen zu können.
Wenn Du das nicht weißt lese bitte erst ein Buch oder im Internet um Dir das Grundwissen dazu anzueignen.
Ein Pythonbuch solltest Du ja gelesen haben und in einem guten Buch wird das „Objektorientierte Programmieren“ auch erklärt.

Man kann mit diesen Methoden das Objekt vorbereiten bevor wir es in die Szene setzen.

Definieren wir eine Variable der Klasse: BaseObject(), erhalten wir ein Objekt in der Variable.

[py]obj = c4d.BaseObject(c4d.Ocube)[/py]

„obj“ enthält nun die Methoden (Funktionen) und Attribute (Eigenschaften) der BaseObject-Klasse (Class BaseObject) und wir können während der Programmlaufzeit darauf zugreifen.

Um nun die Eigenschaften eines Objektes zu beeinflussen brauchen wir oft weitere Klassen die eine Datenstruktur zur Verfügung stellen.

Zum Beispiel die Klasse Vector.

Mit ihm speichern wir z.B. Positionen im 3D-Raum (x,y,z).

Eine Variable mit dem Cinema Vectortyp zu erstellen geht so:

[py]vec = c4d.vector(200,200,200)[/py]

In der Py4d Doku kann man lesen wie man den Datentyp Vector noch ansprechen kann.

„vec“ ist nun ein Objekt der Klasse Vector des Moduls „c4d“.

Wollen wir nun einen Würfel erstellen und diesen auf die Position (x=200, y=200,z=200) setzen.

Der Würfel wird erstmal intern als Objekt erstellt.

Mit der Funktion doc.insert_object() setzt man nun das Objekt in das aktuelle Document in Cinema4D.

Um nun Cinema4D anzuweisen die Szene im Editor zu aktualisieren benutzen wir die Funktion c4d.event_add().

[py]import c4d

obj = c4d.BaseObject(c4d.Ocube)
vec = c4d.Vector(200,200,200)
obj.set_pos(vec)
doc.insert_object(obj)
c4d.event_add()[/py]

Wir erstellen auch hier einen Würfel allerdings direkt an Position (x=200,y=200,z=200).

Doch woher kommt nun das Objekt „doc“ ?
Das Objekt „doc“ wird neben den Objekten „op“ und „tp“ in der Py4D-Version der Python-Sprache direkt zur Verfügung gestellt.
„doc“ stellt das aktuelle Dokument als Objekt zur Verfügung,
„op“ das aktuell ausgewählte Objekt im aktuellen Dokument,
und „tp“ ein Handler auf das ThinkingParticle System. Falls TP nicht installiert ist ist es „None“.
„doc“ ist Objekt der Klasse BaseDocument, „op“ von der Klasse BaseObject und TP von der Klasse  TParticleSystem.

Welche Möglichkeiten (Methoden+Attribute) man damit erhält findest Du in der Py4D-Doku unter den Beschreibungen von BaseDocument,BaseObject,TParticleSystem.

„doc“ ist im Prinzip auch über

[py]doc = c4d.documents.get_active_document()[/py]

„op“ über

[py]op = doc.get_active_object()[/py]

erhältlich. Py4D stellt es aber ab Version 0.9.9996 direkt zur Verfügung.

(port c4d

obj = c4d.BaseObject(c4d.Ocube)
vec = c4d.Vector(200,200,200)
obj.set_pos(vec)
doc.insert_object(obj)
c4d.event_add(

<– Zurück zu Teil4 . . . . . . . . . INDEX . . . . . . . . . . . Weiter in Teil6 –>

One Response to “C4D Objekte erstellen

  • sind die Tutorials veraltet? funktioniert bei mir nciht…

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.