🐐

Houdini Pythonでパラメータ名の確認など(備忘録3)

2025/02/18に公開

自動化で使いそうな小さなスクリプト

今回もNetwork Editor上での操作を自動化するときに使えそうな、Houdini Pythonについて調べてみました。

  • 選択ノードのパラメータを確認
  • 選択ノードのSuffixを取得

環境

Windows10 Pro
Houdini Indie 20.5.332 py3.11

選択ノードのパラメータを確認

import hou

selected_nodes = hou.selectedNodes()

if selected_nodes:
    for node in selected_nodes:
        parameters = node.parms()
    
        for parameter in parameters:
            print(f"Node: {node.name()}, Parameter: {parameter.name()}, Value: {parameter.eval()}")
            
else:
    print ("Please select Nodes!")

選択したノードのパラメータを一覧表示するスクリプトを作成しました。ノードを選択した状態でこのスクリプトをシェルフから実行すると、Python ShellまたはHoudini Consoleにパラメータ名と値が一覧表示されます。

このスクリプトは、Pythonでパラメータを操作するために、パラメータ名を簡単に調べられるようにすることを目的としています。HoudiniのParametersパネルでもマウスオーバーでパラメータ名を確認できますが、文字が小さく、マウスを外せばすぐに消えてしまうため、このスクリプトの方が効率的かと思います。


ノードを選択


ツールチップでもパラメータ名を確認できますが


コンソールなどで表示できるとパラメータ名などをコピペしやすい

選択ノードのSuffixを取得

import hou

selected_nodes = hou.selectedNodes()

if selected_nodes:

    for node in selected_nodes:
        node_name = node.name()    
        print (node_name)
        
        if "_" in node_name:
            suffix = node_name.split("_")[-1]
            print ("    suffix is " + suffix)
        else:
            print ("    No suffix found.")

else:
    print ("Please select Nodes")

このスクリプトは、選択ノードの名前からSuffixを抽出します。ここから手を加えて、そのサフィックスに応じて後続の処理を分岐させることを目的としています。

例えば、ノード名が "OUT_box_geo" や "OUT_box_spheres" の場合を考えます。Suffixが "geo" であれば、DOPnet 内の RBD Object ノードにリンクさせ、"spheres" であれば RBD Packed Object ノードにリンクさせる、といった活用を考えています。

また、[-1]の箇所を[0]にすることで、Prefixを抽出できます。


ノードを選択


スクリプトを実行するとSuffixを表示します

以下は再利用しやすいよう一部を関数にしたもの。

import hou
    
def get_suffix(node):
    node_name = node.name()
    print ("Node name is " + node_name)
    
    if "_" in node_name:
        return node_name.split("_")[-1]
    else:
        return None

def display_node_info(suffix):
    if suffix:
        print ("    Suffix is " + suffix)
    else:
        print ("    No suffix found.")

        
selected_nodes = hou.selectedNodes()

if selected_nodes:
    for node in selected_nodes:
        suffix = get_suffix(node)
        display_node_info(suffix)

else:
    print ("Please select Nodes!")

まとめ

お読みいただきありがとうございました。この記事では、ノードのパラメータ名を確認したり、ノード名からSuffixを抽出する方法を紹介しました。小さなスクリプトを積み上げて手作業を減らすことで、快適なHoudiniライフを送りたいです。この記事が少しでもお役に立てれば幸いです。

Discussion