Houdini verfügt über eine Funktion, die Python-Skripte automatisch ausführt, wenn Parameter auf einem Knoten aktualisiert werden. Wenn Sie Python im Callback-Skript in der Edit Parameter Interface schreiben, wird dieser Python ausgeführt, wenn sich der Wert ändert.
Da in der Spalte Callback Script nur eine Zeile Platz zum Schreiben vorhanden ist, definieren Sie eine Funktion, die irgendwo ausgeführt werden soll, und rufen Sie sie auf.
Die einfachste Art zu definieren ist im Menü Windows> Öffnen Sie den Python Source Editor und schreiben Sie die Funktionsdefinition hinein
Wenn Sie hier eine Funktion schreiben, können Sie über hou.session
darauf zugreifen
Zum Beispiel
def func():
pass
Bei der Funktionsdefinition können Sie diese mit hou.session.func ()
aufrufen
Ich werde tatsächlich schreiben Das Folgende ist ein Beispiel
#Kopieren Sie durch Angabe von Parametern
def Send(from_path, to_path, params):
from_path = hou.nodes(from_path.split())
to_path = hou.nodes(to_path.split())
params = params.split()
for f, t in zip(from_path,to_path):
for p in params:
t.parm(p).set(f.evalParm(p))
Es ist ein Code, der den Kopierquellpfad und den Kopierzielpfad als Zeichenfolge (Zeichenfolge) empfängt und während der Schleife mit for kopiert
Verwenden Sie die in hou enthaltenen Klassen und Funktionen, um Houdini mit Python zu betreiben. ↓ wird hilfreich sein hou package https://www.sidefx.com/docs/houdini/hom/hou/index.html
Was ist beim Betrieb eines Knotens zu verwenden? ↓ hou.node HOM function hou.nodes HOM function hou.Node class
Was ist beim Bearbeiten von Parametern zu verwenden? ↓ hou.parm HOM function hou.Parm class
Wenn Sie beispielsweise "a = hou.node ('../ null')" schreiben, können Sie dieses "a" verwenden, um den Knoten von "../ null" zu betreiben. Da eine Klasse, die den Typ "hou.Node" erbt, "a" zugewiesen ist, wird dies mit hou.Node-Klasse verwendet. (houdini / hom / hou / Node.html) ist gut. Es gibt verschiedene Funktionen in der Klasse.
Wenn Sie beim Bearbeiten von Parametern b = a.parm ('tx')
schreiben, ist die Klasse, die b
zugewiesen ist, eine Klasse vom Typ hou.Parm, und Sie können Parameter mit b
→ bearbeiten hou.Parm-Klasse
In der hou.Parm-Klasse häufig verwendete Funktionen sind wahrscheinlich "set" und "eval"
Durch Schreiben von b.set (888)
wird tx
auf 888
aktualisiert
Sie können "c" mit "c = b.eval ()" einen Wert wie "888" zuweisen
Übrigens ist die Verwendung von "a" und "b" überflüssig. Wenn Sie also "hou.node (" ../ null "). Parm (" tx ") .set (888)" schreiben, ist dies ein Schuss.
Erstellen Sie null1- und null2-Knoten und kopieren Sie die Werte
Schreiben Sie im Rückrufskript null1 Folgendes, um die Funktion aufzurufen
hou.session.Send('.','../null2','t2x t2y t2z')
'.'
Ist eine Zeichenfolge, die den aufrufenden Knoten darstellt (in diesem Fall null1).
t2x`` t2y`` t2z
ist der Name des Parameters
Wenn ich 0,3 in t2x von null1 setze, ändert sich t2x von null2 ebenfalls in 0,3
Im obigen Beispiel wurde die Funktion sofort durch Ändern von "t2x" ausgeführt. Sie können jedoch auch eine Schaltfläche erstellen und den Wert kopieren, wenn der Benutzer die Schaltfläche drückt.
Schreiben Sie in diesem Fall das Skript, das Sie ausführen möchten, wenn die Schaltfläche im Rückrufskript der Schaltfläche gedrückt wird.
Recommended Posts