Python
La tab Python fornisce una grande flessibilità per aggiungere funzioni personalizzate e comportamenti durante le fasi di costruzione e regolazione dell’Oggetto Character.
Utilizzate questo campo per inserire il vostro codice Python.
Utilizzando Python è possibile ignorare i seguenti metodi per modificare il comportamento dell’Oggetto Character mentre svolge determinate azioni. Assicuratevi di importare il modulo .c4d all’interno di questo campo per fare riferimento agli oggetti e ai metodi che esso contiene. La completa documentazione Python può essere trovata al sito http://developers.maxon.net.
La tab Costruire
Questa funzione viene richiamata all’interno dei tag Componente del tipo Personaggio ogni volta che viene salvato un template personaggio utilizzando il comando Salva Template Personaggio. Utilizzando questa funzione, è possibile inserire degli oggetti per costruire dinamicamente un template o modificare il documento template. Notate che quando si aggiungono dei componenti è necessario aggiungere il Tag Componente con i settaggi appropriati.
Globali:
- doc: il documento template (c4d.BaseDocument)
- op: l’oggetto con il Tag Componente (c4d.BaseObject)
def GetComponents()
Questa funzione viene richiamata all’interno dei tag Componente del tipo personaggio ogni volta che si ridisegna e può essere utilizzata per specificare quali pulsanti componente devono essere mostrati all’interno dell’Oggetto Character. Visualizza una lista di componenti disponibili come BaseLink archiviati all’interno di un BaseContainer. Le regole di inclusione standard specificate nel tag Componente si applicheranno quando non ci sarà alcun BaseContainer.
Globali:
- doc: il documento che contiene l’Oggetto Character (c4d.BaseDocument)
- charop: l’Oggetto Character (builder.CharacterObject)
- template: il template (builder.Template)
- op: l’oggetto principale del componente Genitore (c4d.BaseObject)
- pcomp: il componente Genitore (builder.Component)
- pcompop: l’oggetto componente Genitore (builder.ComponentObject)
Ritorno:
c4d.BaseContainer
Esempio:
Se questo codice viene inserito nella tab Python, l’Oggetto Character assicurerà la presenza di un’altro oggetto con il nome "Spine_null”. Quando si aggiunge la Spina Dorsale, non si possono aggiungere altri componenti, indipendentemente dal Genitore. Notate che i metodi FindObject effettuano la ricerca per "nome oggetto” e non dei nomi dei componenti. In questo esempio il BaseContainer viene restituito solo quando non c’è la Spina Dorsale, quindi quando essa viene aggiunta, vengono utilizzate le regole di inclusione del tag Componente.
def ModeChanged()
Richiamato per ogni tag Componente quando si cambia la modalità (Costruisci, Regola, Vincola, Anima). Ciò può essere utilizzato per modificare la visibilità degli oggetti o per attivare/disattivare funzioni come le espressioni. Non viene restituito nulla, semplicemente si modifica direttamente l’Oggetto Character.
Globali:
- doc: i documenti contengono gli oggetti Personaggio (c4d.BaseDocument)
- charop: l’Oggetto Character (builder.CharacterObject)
- op: l’oggetto allegato al tag Componente (c4d.BaseObject)
- compop: l’oggetto componente (builder.ComponentObject)
- omode: il vecchio modo (vedere MODO costanti)
- nmode: il nuovo modo (vedere MODO costanti)
Costanti:
- c4d.ID_CA_CHARACTER_MODE_BUILD: Modo Costruisci
- c4d.ID_CA_CHARACTER_MODE_ADJUST: Modo Regola
- c4d.ID_CA_CHARACTER_MODE_BIND: Modo Vincola
- c4d.ID_CA_CHARACTER_MODE_ANIMATE: Modo Anima
def InsertComponent()
Questa componente viene chiamata in due modi diversi. Quando utilizzata all’interno della tab Python del tag Componente essa può essere utilizzata per annullare tutte le azioni di inserimento. Dovete inserire tutti gli oggetti all’interno del documento per creare il compoenente e torna il componente principale dell’oggetto che è stato inserito nel documento.
Potete anche chiamare questa funzione all’interno di una regola di Inserzione sulla tab Inserzione del tag Componente. Quando utilizzata qui, la funzione vi permette di modificare il luogo ed il modo in cui l’oggetto è stato inserito. In questo caso, il tipo variabile globale indica il tipo di inserimento (come il menu a scorrimento Inserisci nella regola) e tornate a c4d.BaseObject, il quale corrisponde all’attributo oggetto nella regola.
Globali:
- doc: il documento che contiene l’Oggetto Character (c4d.BaseDocument)
- charop: l’Oggetto Character (builder.CharacterObject)
- template: il template (builder.Template)
- pcompop: l’oggetto componente Genitore (builder.ComponentObject)
- pcomp: il componente Genitore (builder.Component)
- comp: il componente che deve essere inserito (builder.Component)
- itype: il tipo di inserzione per gli insert della regola (impostatelo a globale):
COMPONENT_INSERT_TYPE_FIRST : Inserito come primo Figlio dell’oggetto ritorno
COMPONENT_INSERT_TYPE_LAST: Inserito come ultimo Figlio dell’oggetto ritorno
COMPONENT_INSERT_TYPE_BEFORE: Insertito prima dell’oggetto ritorno
COMPONENT_INSERT_TYPE_AFTER: Inserito dopo l’oggetto ritorno
COMPONENT_INSERT_TYPE_ACTIVE: Inserito dal Genitore, utilizzando l’oggetto Insert di Default del componente Genitore
COMPONENT_INSERT_TYPE_END: Inserito alla fine della gerarchia dell’oggetto ritorno
Ritorno:
c4d.BaseObject: l’oggetto componente principale o l’oggetto il cui componente deve essere inserito
Esempio
Utilizzando InsertComponent all’interno di una regola di Inserzione Python, questo codice definisce quale oggetto deve inserire il componente, a seconda del Genitore (se ha un figlio o meno). In questo caso, viene utilizzato con una T-joint per inserire ogni componente alla fine di ogni joint.
def PostInsertComponent()
Questa funzione viene chiamata dopo che un Componente è stato inserito nell’Oggetto Character e solo quando non si utilizza InsertComponent. Se non torna nulla, potete effettuare delle modifiche direttamente sugli oggetti inseriti all’interno della funzione.
Globali:
- doc: il documento che contiene l’Oggetto Character (c4d.BaseDocument)
- charop: l’Oggetto Character (builder.CharacterObject)
- pcompop: l’oggetto componente Genitore (builder.ComponentObject)
- pcomp: il componente Genitore (builder.Component)
- comp: il componente che deve essere inserito (builder.Component)
- op: l’oggetto componente principale che è stato inserito (c4d.BaseObject)
- compop: il componente inserito (builder.ComponentObject)
def MirrorComponent()
Questa funzione viene richiamata quando si aggiunge un componente specchiato all’Oggetto Character. I componenti specchiati sono generati automaticamente quando si aggiungono componenti multipli dello stesso tipo con lo stesso genitore, in base ai settaggi della tab Specchia del tag Componente. MirrorComponent viene richiamato prima di PostInsertComponent ed i componenti specchiati possono essere modificati direttamente all’interno di questa funzione.
Globali:
- doc: il documento che contiene l’Oggetto Character (c4d.BaseDocument)
- op: l’oggetto componente principale che è stato inserito (c4d.BaseObject)
- charop: l’Oggetto Character (builder.CharacterObject)
- comp: il componente che deve essere inserito (builder.Component)
- compop: il componente inserito (builder.ComponentObject)
- pcomp: il componente Genitore (builder.Component)
- pcompop: l’oggetto componente Genitore (builder.ComponentObject)
Ritorno:
True / !=0 se il rispecchiamento è stato fatto in Python
def BoneInsert()
Questa funzione viene richiamata all’interno della tab Python del tag Componente quando l’utente modifica il conteggio bone ed annulla completamente le bone inserite.
Globali:
- doc: il documento che contiene l’Oggetto Character (c4d.BaseDocument)
- op: l’oggetto componente principale (c4d.BaseObject)
- charop: l’Oggetto Character (builder.CharacterObject)
- compop: il componente inserito (builder.ComponentObject)
- count: il nuovo conteggio bone (int)
- insertat: l’oggetto impostato come Insert At link (c4d.BaseObject)
- chainstart: l’oggetto impostato come bone iniziale della catena (c4d.BaseObject)
- chainend: l’oggetto impostato come bone finale della catena (c4d.BaseObject)
def IncludeObjects()
Questa funzione vi permette di includere oggetti addizionali con il componente, similare alla tab Includi del tag Componente. L’incdata globale è un BaseContainer in cui i dati di ogni inserimento sono dei BaseLink all’oggetto e l’indice è un numero intero che corrisponde alle flag InExcludeData:
Flags:
- Gerarchia: 1 (Bit 0)
- Condivisione: 2 (Bit 1)
- Self-Condivisione: 4 (Bit 2)
Globali:
- doc: il documento che contiene l’Oggetto Character (c4d.BaseDocument)
- iop: il principale oggetto componente che è stato inserito (c4d.BaseObject)
- iparent: l’oggetto componente Genitore (c4d.BaseObject)
- icharop: l’Oggetto Character (builder.CharacterObject)
- iincdata: un BaseContainer con tutti gli oggetti che devono essere inclusi
Ritorno:
True / !=0: se gli incdata sono stati modificati
def AdjustObject()
Questa funzione viene richiamata all’interno di una regola di Regolazione di tipo Python, la quale viene creata nella tab Regolazioni aggiungendo un oggetto / una regola all’elenco Oggetti ed impostando Tipo a Python. Questa funzione viene valutata quando si posiziona il campo Codice risultante su ogni regola. La funzione viene chiamata in continuazione mentre si regola la relativa maniglia. All’interno di questa funzione potete regolare le globali direttamente o tornare alla matrice – quest’ultima opzione è preferibile: in questo modo non si entra in conflitto con altre regole. Tutte le matrici per questa funzione sono localizzare sull’Oggetto Character.
Globali:
- doc: il documento contiene l’Oggetto Character (c4d.BaseDocument)
- op: l’oggetto collegato con la regola di Regolazione (c4d.BaseObject)
- targ: l’oggetto collegato nel campo A della regola di Regolazione (c4d.BaseObject)
- cmg: la matrice dell’Oggetto Character (c4d.Matrix)
- m : la matrice corrente dell’oggetto (c4d.Matrix)
- om: la matrice originale dell’oggetto (c4d.Matrix)
- targm: la matrice corrente del target (c4d.Matrix)
- targom: la matrice originale del target (c4d.Matrix)
Ritorno:
La matrice impostata per l’oggetto (c4d.Matrix)
def GetDependency()
Questa funzione viene richiamata prima di AdjustObject quando la si posiziona nel campo Codice di una regola Regolazione del tipo Python. All’interno di questa funzione potete modificare gli oggetti a seconda delle regole. Ad esempio, se una regolazione deve essere posizionata in base ad alla posizione di altri tre oggetti (come per un polo vettore), potrete tornare a c4d.BaseContainer per collegare questi 3 oggetti. Ciò permette all’Oggetto Character di creare una dipendenza in modo che le regolazioni siano valutate nell’ordine corretto, dal momento che la regola modifica l’oggetto matrice utilizzato dall’altra regola.
Globali:
- doc: il documento che contiene l’Oggetto Character (c4d.BaseDocument)
- op: l’oggetto collegato alla Regolazione (c4d.BaseObject)
- linkop: l’oggetto collegato
Ritorno:
c4d.BaseContainer contiene BaseLinks (l’ID non viene valutato)
def TransformComponent()
Questa funzione viene chiamata all’interno della regola Python, la quale viene creata nella Tab inserzione aggiungendo un oggetto / una regola all’elenco Oggetti ed impostando Tipo a Python. All’interno di questa funzione potete trasformare li componente e i suoi oggetti inclusi (sostituendo i settaggi specificati nella tab).
Globali:
- doc: il documento che contiene l’Oggetto Character (c4d.BaseDocument)
- template:il template (builder.Template)
- charop: l’Oggetto Character (builder.CharacterObject)
- pcompop: l’oggetto componente Genitore (builder.ComponentObject)
- pcomp: il componente Genitore (builder.Component)
- comp: il componente che deve essere inserito (builder.Component)
- op: l’oggetto componente principale (c4d.BaseObject)
Ritorno:
La nuova matrice globale (c4d.Matrix) per gli oggetti componente principali
def AllowComponent()
Questa funzione viene richiamata all’interno di una regola Inserzione Python, la quale viene creata nella tab Inserzioni aggiungendo un oggetto / regola all’elenco di oggetti ed impostando il Tipo a Python. Questa funzione si valuta solo quando si posiziona nel campo Codice associato ad ogni regola. Impostate Vero per permettere i componenti. Questa funzione è molto simile a GetComponents, ad eccezione del fatto che essa ritona al suo stato di componente singolo.
Globali:
- doc: il documento che contiene l’Oggetto Character (c4d.BaseDocument)
- charop: l’Oggetto Character (builder.CharacterObject)
- template: il template (builder.Template)
Ritorno:
- booleana: Vero se sono permessi componenti / falso se non lo sono
c4d.modules.character.builder.CharacterObject
def FindObject(nome)
Trova an oggetto a seconda del nome del template.
Parametri: nome (stringa) – il nome oggetto da cercare
Ritorno: L’oggetto trovato (c4d.BaseObject) o Nessuno
def GetFirst()
Torna al primo componente personaggio.
Ritorno: il primo Componente (builder.ComponentObject) o Nessuno
def GetObject()
Ottiene il BaseObject del personaggio.
Ritorno: il BaseObject (c4d.BaseObject) del personaggio
c4d.modules.character.builder.Template
def FindComponent(name, ident)
Trova il componente all’interno del template.
Parametri:
- nome (stringa):il nome del componente da cercare
- identità (booleana): se vera, collega il nome e l’ID stringa
Ritorno: Il componente trovato (builder.Component) o Nessuno
def FindObject(name)
Trova l’oggetto all’interno del template.
parametri: nome (stringa) – il nome dell’oggetto da cercare
Ritorno: L’oggetto trovato (c4d.BaseObject) o Nessuno
def GetDocument()
Ottiene il BaseDocument del template.
Ritorno: Il documento (c4d.BaseDocument)
c4d.modules.character.builder.Component
def GetObject()
Ottiene il BaseObject del componente.
Ritorno: L’oggetto (c4d.BaseObject)
def GetTemplate()
Ottiene il template del componente.
Ritorno: il template (builder.Template)
c4d.modules.character.builder.ComponentObject
def CountComponent(name, ident, mirrored, down)
Conteggia i componenti figlio.
Parametri:
- nome (stringa): da collegare
- identità (booleana): se vera, collega il nome e la stringa
- specchiata (booleana): se vera, collega solo i componenti specchiati
- giù (booleana): se vera, collega in modo ricorsivo (inclusi i figli)
Ritorno: numero di collegamenti
def FindComponent(nome, identità, specchia, giù)
Trova un componente figlio specifico a seconda del suo nome.
Parametri:
- nome (stringa): da collegare
- identità (booleana): se vera, collega il nome e l’ID stringa
- specchia (booleana): se vera, collega solo i componenti specchiati
- giù (booleana): se vera, collega ricorsivamente (inclusi i figli)
Ritorno:i primi oggetti collegati (builder.ComponentObject)
def FindObject(nome)
Trova un oggetto all’interno del componente cercando il so nome.
Parametro: name (stringa) da collegare
Ritorno: primo oggetto collegato (c4d.BaseObject)
def GetComponent()
Ottiene il componente.
Ritorno: il relativo componente (builder.Component)
def GetDown()
Ottiene l’oggetto principale del primo componente figlio.
Ritorno: l’oggetto principale del primo componente figlio (c4d.BaseObject)
def GetName(identità)
Ottiene il nome del componente.
Parametri: identità (booleana) se vero, visualizza il nome e l’identità
Ritorno: il nome (stringa)
def GetNext()
Ottiene l’oggetto principale del componente successivo.
Ritorno: l’oggetto principale del componente successivo (c4d.BaseObject)
def GetObject()
Ottiene l’oggetto principale del componente.
Ritorno: l’oggetto (c4d.BaseObject)
def GetObjects(tipo=COMPONENT_OBJECT_GETOBJECTS_TYPE_):
Ottiene un container con tutti gli oggetti per questo componente.
Parametro:
- tipo (int) indica quale oggetto si deve ottenere:
COMPONENT_OBJECT_GETOBJECTS_TYPE_ALL : tutti gli oggetti
COMPONENT_OBJECT_GETOBJECTS_TYPE_INCLUDED: gli oggetti inclusi
COMPONENT_OBJECT_GETOBJECTS_TYPE_MAIN: oggetti Figli diretti
Ritorno: container con oggetti collegati (c4d.BaseContainer)
def GetPrev()
Si ottiene l’oggetto principale del componente precedente.
Ritorno: l’oggetto principale del componente precedente (c4d.BaseObject)
def GetTag()
Ottiene il tag componente per questo componente.
Ritorno: il tag componente (c4d.BaseTag)
def GetUp()
Ottiene l’oggetto principale del componente Genitore.
Ritorno: l’oggetto principale del componente Genitore (c4d.BaseObject)