Referenz Cinema 4D Cinema 4D Visualize, Broadcast, Studio Charakter-Animation Charakterkomponente
Funktion verfügbar in CINEMA 4D Studio
Charakterkomponente

Basis Tag Einfügen Spiegeln Einschließen Materialien Ebenen Selektion Binden Justieren Hot Spots Notizen Animieren Gehen Python Weitergehendes

Python

Mittels Python können Sie eigene Funktionen und Verhaltensweisen während der Aufbau- und Justieren-Phasen des Charakter-Objekts realisieren.

Code

Geben Sie hier Ihren Python-Code ein.

Mittels Python können Sie die folgenden Methoden beeinflussen, um das Verhalten des Charakter-Objekts bei bestimmten Aktionen zu ändern. Stellen Sie sicher, dass das c4d-Modul innerhalb dieses Feldes importiert wird, um seine Objekte und Methoden zu referenzieren. Die komplette Dokumentation von Python finden Sie unter http://developers.maxon.net.

def BuildTemplate()

Diese Funktion wird innerhalb eines Komponenten-Tags vom Typ "Charakter" jedes Mal aufgerufen, wenn eine Charakter-Vorlage mittels Charaktervorlage speichern gespeichert wird. Mit dieser Funktion können Sie Objekte einfügen, um dynamisch Vorlagen zu bauen oder das Vorlagenprojekt zu modifizieren. Beachten Sie, dass Sie beim Hinzufügen von Komponenten ebenfalls das Komponenten-Tag mit passenden Einstellungen hinzufügen müssen.

Parameter:

def GetComponents()

Diese Funktion wird innerhalb eines Komponenten-Tags vom Typ "Charakter" bei jedem Neuzeichnen aufgerufen. Sie kann bestimmen, welche Komponenten-Buttons im Charakter-Objekt angezeigt werden soll. Sie gibt eine Liste verfügbarer Komponenten (als BaseLinks in einem BaseContainer) zurück. Wenn kein BaseContainer zurückkommt, finden die standardmäßigen Einschließen-Regeln des Komponenten-Tags Anwendung.

Parameter:

Rückgabewert:

c4d.BaseContainer

Beispiele:

Wenn Sie im Tab "Python" diesen Code eingeben, wird das Charakter-Objekt dafür sorgen, dass ein Objekt namens "Spline_null" präsent ist. Solange kein "Rückgrat" hinzugefügt wurde, können auch (unabhängig vom Überobjekt) keine anderen Komponenten hinzugefügt werden. Beachten Sie, dass die Methode FindObject nach Objektnamen und nicht Komponentennamen sucht. In diesem Beispiel wird ein BaseContainer nur dann zurückgegeben, wenn kein Rückgrat existiert. Sobald es eines gibt, greifen die Einschließen-Regeln des Komponenten-Tags.

def ModeChanged()

Wird für jedes Komponenten-Tag aufgerufen, wenn der Modus (Aufbauen, Justieren, Binden, Animieren) gewechselt wird. Das kann z.B. für das Wechseln der Objekt-Sichtbarkeit oder zum Aktivieren/Deaktivieren von Funktionen wie Expressions verwendet werden. Es wird nichts zurückgegeben, nur das Charakter-Objekt selbst wird modifiziert.

Parameter:

Konstanten:

def InsertComponent()

Diese Funktion kann zweifach aufgerufen werden. Einmal kann sie im "Python"-Tab des Komponenten-Tag verwendet werden. Dann kann sie alle Einschließen-Aktionen übernehmen. Um eine Komponente zu erstellen, müssen Sie alle Objekte in das Dokument einfügen und dann die Haupt-Komponente (die ins Dokument eingeschlossen wurde) zurückgeben.

Parameter:

Rückgabewert:

c4d.BaseObject – Das Hauptkomponenten-Objekt oder das Objekt, dem die Komponente untergeordnet werden soll.

Beispiel

Beim Verwenden von InsertComponent bei einer Python-Einfügeregel definiert dieser Code, welchem Objekt die Komponente untergeordnet werden soll. Und zwar in Abhängigkeit davon, ob das Überobjekt bereits ein Unterobjekt hat. In diesem Falle wird es mit einem verzweigenden T-Joint verwendet, um jede Komponente an einem anderen Ende des Joints unterzubringen.

def PostInsertComponent()

Diese Funktion wird nach dem Einfügen einer Komponente im Charakter-Objekt aufgerufen (nur wenn InsertComponent nicht verwendet wird). Es wird nichts zurückgegeben und Änderungen können direkt an den einzufügenden Objekten vorgenommen werden.

Parameter:

def MirrorComponent()

Diese Funktion wird aufgerufen, sobald dem Charakter-Objekt eine gespiegelte Komponente hinzugefügt wird. Gespiegelte Komponenten werden automatisch erzeugt, wenn mehrere Komponenten desselben Typs mit denselben Überobjekten hinzugefügt werden (abhängig von den Einstellungen des Tabs "Spiegeln" des Komponenten-Tags). MirrorComponent wird übrigens vor PostInsertComponent aufgerufen, die gespiegelten Komponenten können direkt innerhalb dieser Funktion modifiziert werden.

Parameter:

Rückgabewert:

True / !=0 falls das Spiegeln via Python vorgenommen wurde.

def BoneInsert()

Diese Funktion wird innerhalb des Komponenten-Tag-Tabs "Python" aufgerufen, wenn der Benutzer eine Änderung der Bone-Anzahl vornimmt. Diese Funktion übernimmt dann komplett das Bone-Einfügen.

Parameter:

def IncludeObjects()

Mit dieser Funktion können Sie zusätzliche Objekte in die Komponente einschließen, so ähnlich wie im Tab "Einschließen" des Komponenten-Tags. Der Parameter incdata ist ein BaseContainer, in dem die Daten jedes Eintrags ein BaseLink zum Objekt darstellen, der Index ist eine Integerzahl, die mit den InExcludeData flags korrespondiert:

Flags:

Parameter:

Rückgabewert:

True / !=0 wenn incdata geändert wurde

def AdjustObject()

Diese Funktion wird innerhalb einer Python-Justieren-Regel aufgerufen. Diese erstellen Sie, indem Sie im Tab "Justieren" in der Objektliste ein Objekt bzw. eine Regel erstellen und bei Typ Python definieren. Diese Funktion wird nur ausgewertet, wenn Sie im zugehörigen Code-Feld platziert wird. Sie wird fortwährend aufgerufen, solange der zugehörige Anfasser justiert wird. Innerhalb der Funktion können Sie die Parameter direkt ändern oder die Matrix zurückgeben lassen. Letzteres ist die empfohlene Vorgehensweise, da ersteres zu Konflikten mit anderen Regeln führen kann. Alle Matritzen für diese Funktion sind für das Charakter-Objekt lokal.

Parameter:

Rückgabewert:

die für das Objekt zu setzende Matrix (c4d.Matrix)

def GetDependency()

Diese Funktion wird innerhalb einer Python-Justieren-Regel aufgerufen (vor AdjustObject). Diese Funktion gibt Ihnen die Objekte zurück, die innerhalb der Regel verknüpft sind. Wenn Sie beispielsweise eine Regel haben, die eine Position anhand dreier anderer Objekte (wie z.B. Pol-Vektoren) setzt, wird ein c4d.BaseContainer mit den Verknüpfungen zu diesen 3 Objekten zurückgegeben. Das Charakter-Objekt kann so einen Abhängigkeiten-Baum erzeugen, sodass Justierungen in der richtigen Reihenfolge ausgewertet werden (da unter Umständen eine Regel die Objekt-Matrix ändert, die wiederum von einer anderen Regel verwendet wird).

Parameter:

Rückgabewert:

c4d.BaseContainer inkl. BaseLinks (die ID wird nicht ausgewertet)

def TransformComponent()

Diese Funktion wird innerhalb einer Python-Einfügeregel aufgerufen. Diese wird im Tab "Einfügen" erzeugt, indem Sie in der Objektliste ein Objekt bzw. eine Regel erstellen und Einfügen auf "Python" setzen. Innerhalb dieser Funktion können Sie die Komponente und alle ihre eingeschlossenen Objekte während des Einfügens transformieren (dabei werden die im Unter-Tab "Transformieren" befindlichen Parameter "überstimmt".

Parameter:

Rückgabewert:

Die neue globale Matrix (c4d.Matrix) für das Haupt-Komponenten-Objekt

def AllowComponent()

Diese Funktion wird innerhalb einer Python-Einfügeregel aufgerufen. Diese wird im Tab "Einfügen" erzeugt, indem Sie in der Objektliste ein Objekt bzw. eine Regel erstellen und Einfügen auf "Python" setzen. Diese Funktion wird nur ausgewertet, wenn Sie im zugehörigen Code-Feld platziert wird. Es wird ein "True" zurückgegeben, wenn die Komponente erlaubt ist. Diese Funktion ähnelt GetComponents, nur dass Sie den Status einer einzelnen Komponente zurückgibt.

Parameter:

Rückgabewert:

c4d.modules.character.builder.CharacterObject

def FindObject(name)

Findet ein Objekt anhand des Vorlagen-Namens.

Parameter: name (String) – der zu suchende Objektname

Rückgabewert: Entweder das gefundene Objekt (c4d.BaseObject) oder "None"

def GetFirst()

Gibt die erste Charakter-Komponente zurück.

Rückgabewert: Die erste Komponente (builder.ComponentObject) oder "None"

def GetObject()

Holt sich das Charakter-BaseObject.

Rückgabewert: Das Charakter-BaseObject (c4d.BaseObject)

c4d.modules.character.builder.Template

def FindComponent(name, ident)

Findet Komponente innerhalb einer Vorlage.

Parameter:

Rückgabewert: Die gefundene Komponente (builder.Component) oder "None"

def FindObject(name)

Findet Objekt innerhalb einer Vorlage.

Parameter: name (String) – der zu suchende Objektname

Rückgabewert: das gefundene Objekt (c4d.BaseObject) oder "None"

def GetDocument()

Holt sich das Vorlagen-BaseDocument

Rückgabewert: das Dokument (c4d.BaseDocument)

c4d.modules.character.builder.Component

def GetObject()

Holt sich das Komponenten-BaseObject

Rückgabewert: das Objekt (c4d.BaseObject)

def GetTemplate()

Holt sich die Vorlage der Komponente

Rückgabewert: die Vorlage (builder.Template)

c4d.modules.character.builder.ComponentObject

def CountComponent(name, ident, mirrored, down)

Zählt die untergeordneten Komponenten

Parameter:

Rückgabewert: Anzahl der Treffer (int)

def FindComponent(name, ident, mirrored, down)

Findet eine bestimmte Unterobjekt-Komponente über den Namen.

Parameters:

Rückgabewert: erstes gefundenes Objekt (builder.ComponentObject)

def FindObject(name)

Findet ein Objekt innerhalb einer Komponente über den Namen.

Parameter: name (String) nach dem gesucht werden soll

Rückgabewert: erstes gefundenes Objekt (c4d.BaseObject)

def GetComponent()

Holt sich die Komponente.

Rückgabewert: die zugehörige Komponente (builder.Component)

def GetDown()

Holt sich das Haupt-Objekt der ersten Unter-Komponente.

Rückgabewert: das Haupt-Objekt der ersten Unter-Komponente (c4d.BaseObject)

def GetName(ident)

Holt sich den Komponenten-Namen.

Parameter: ident (Boolean) wenn "True", wird Name und eindeutige ID angezeigt

Rückgabewert: der Name (String)

def GetNext()

Holt sich das Haupt-Objekt der nächsten Komponente

Rückgabewert: das Haupt-Objekt der nächsten Komponente (c4d.BaseObject)

def GetObject()

Holt sich das Komponenten-Haupt-Objekt

Rückgabewert: das Objekt (c4d.BaseObject)

def GetObjects(type=COMPONENT_OBJECT_GETOBJECTS_TYPE_):

Holt sich einen Container mit allen Objekten dieser Komponente

Parameter:

Rückgabewert: Container mit Objektverknüpfungen (c4d.BaseContainer)

def GetPrev()

Holt sich das vorherige Komponenten-Haupt-Objekt

Rückgabewert: das vorherige Komponenten-Haupt-Objekt (c4d.BaseObject)

def GetTag()

Holt sich das Komponenten-Tag dieser Komponente

Rückgabewert: das Komponenten-Tag (c4d.BaseTag)

def GetUp()

Holt sich das Haupt-Objekt der übergeordneten Komponente

Rückgabewert: das Haupt-Objekt der übergeordneten Komponente (c4d.BaseObject)