🐐

Houdini Pythonでsticky noteテンプレートを作る(備忘録6)

に公開

複雑なネットワークを見やすくするためにsticky noteを使いたい

Houdiniのネットワークが複雑になると、どの部分でどのような作業をしたのか見失いやすくなります。そこで私は、各ノードの役割や作業内容を分かりやすくするために、sticky noteを用いてラベルを配置する方法を採用しています。しかし、毎回手動でsticky noteを作成し、位置を調整し、テキスト入力やフォントサイズの変更を行うのは非常に手間です。そこで、よく使う設定をテンプレート化し、Pythonスクリプトを使ってワンクリックで配置できるように工夫しました。

環境

Windows10 Pro
Houdini Indie 20.5.332 py3.11

ノードの右側に背景をハイドしたsticky noteを作成する

import hou

# 現在のネットワークエディタのコンテキストを取得
network = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor)

if network:
    # 現在のノードネットワークを取得
    parent_node = network.pwd()
    
    # 選択されているノードを取得
    selected_nodes = hou.selectedNodes()
    
    # 選択されているノードがある場合
    if selected_nodes:
        # 最初の選択ノードを取得
        target_node = selected_nodes[0]
        
        # ターゲットノードの位置とサイズを取得
        node_position = target_node.position()
        node_size = target_node.size()
        node_offset = hou.Vector2(2, (node_size.y()/2)-1)
        sticky_note_pos = node_position + node_offset

        # スティッキーノートを作成
        sticky_note = parent_node.createStickyNote()
        
        # スティッキーノートのテキストを設定
        sticky_note.setText("Sample Text")
        
        # スティッキーノートの表示をカスタマイズ
        sticky_note.setTextSize(1.0)
        sticky_note.setTextColor(hou.Color((0.8, 0.8, 0.8)))
        sticky_note.setColor(hou.Color((0.8, 0.9, 0.6)))
        sticky_note.setSize(hou.Vector2(12, 2))
        sticky_note.setPosition(sticky_note_pos)
        sticky_note.setDrawBackground(0)
    else:
        print("Please select nodes.")
else:
    print("No active network editor found.")

上記PythonスクリプトをShelf toolにコピペして使うことを想定しています。

まずSticky noteを配したい位置付近のノードを1つ選択し、Pythonスクリプトを起動します。ノードの右側に大きいテキストでsticky noteが配置されます。背景はハイドさせています。その後、Sample Textを好きな文字列に書き換える形にしました。

まとめ

お読みいただきありがとうございました。上記スクリプトはよく使用しています。地味なスクリプトですが、時間の節約になっている実感があります。少しでもお役に立てれば幸いです。

Discussion