Houdini a une fonctionnalité qui exécute automatiquement des scripts Python lorsque les paramètres d'un nœud sont mis à jour. Si vous écrivez Python dans le script de rappel dans l'interface d'édition des paramètres, ce Python sera exécuté lorsque la valeur change.
Puisqu'il n'y a qu'une seule ligne d'espace à écrire dans la colonne Callback Script, définissez une fonction à exécuter quelque part et appelez-la.
Le moyen le plus simple de définir est dans le menu Windows> Ouvrez l'éditeur de source Python et écrivez-y la définition de la fonction
Si vous écrivez une fonction ici, vous pouvez y accéder depuis hou.session
Par exemple
def func():
pass
Dans le cas de la définition de fonction, vous pouvez l'appeler avec hou.session.func ()
J'écrirai réellement Ce qui suit est un exemple
#Copier en spécifiant des paramètres
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))
C'est un code qui reçoit le chemin source de la copie et le chemin de destination de la copie sous forme de chaîne de caractères (chaîne) et les copies en boucle avec for
Pour faire fonctionner Houdini avec Python, utilisez les classes et fonctions incluses dans hou. ↓ sera utile hou package https://www.sidefx.com/docs/houdini/hom/hou/index.html
Quoi utiliser lors de l'exploitation d'un nœud ↓ hou.node HOM function hou.nodes HOM function hou.Node class
Quoi utiliser lors de la manipulation des paramètres ↓ hou.parm HOM function hou.Parm class
Par exemple, si vous écrivez ʻa = hou.node ('../ null') , vous pouvez utiliser ce ʻa
pour faire fonctionner le nœud de '../ null'
.
Comme une classe qui hérite du type hou.Node
est assignée à ʻa`, la classe hou.Node est utilisée pour l'utiliser. (houdini / hom / hou / Node.html) est bon. Il existe diverses fonctions en classe.
Lors de la manipulation des paramètres, si vous écrivez b = a.parm ('tx')
, c'est une classe de type hou.Parm qui est assignée à b
, et vous pouvez manipuler les paramètres en utilisant b
→ Classe hou.Parm
Les fonctions souvent utilisées dans la classe hou.Parm sont probablement set
et ʻeval`
L'écriture de «b.set (888)» met à jour «tx» en «888»
Vous pouvez attribuer une valeur telle que «888» à «c» avec «c = b.eval ()»
Au fait, il est redondant d'utiliser ʻaet
b, donc si vous écrivez
hou.node ('../ null'). Parm ('tx'). Set (888)`, ce sera un coup.
Créez des nœuds null1 et null2 et copiez les valeurs
Dans le script de rappel null1, écrivez ce qui suit pour appeler la fonction
hou.session.Send('.','../null2','t2x t2y t2z')
.'` Est une chaîne représentant le nœud appelant (null1 dans ce cas) `t2x
t2y`` t2z` est le nom du paramètre
Quand je mets 0,3 dans t2x de null1, t2x de null2 est également passé à 0,3
Dans l'exemple ci-dessus, la fonction a été exécutée immédiatement en changeant t2x
, mais vous pouvez également créer un bouton et copier la valeur lorsque l'utilisateur appuie sur le bouton.
Dans ce cas, écrivez le script que vous souhaitez exécuter lorsque vous appuyez sur le bouton dans le script de rappel du bouton.
Recommended Posts