Houdini 20.0 Pythonスクリプト HOMクックブック

HOMクックブック インタラクティブなオブジェクト

On this page

概要

このサンプルは、(例えば、インターネットのニュースフィードのように、内容が更新されていく)リンクのリストを反復するシェルフツールを作成して、 そのリンクのテキストを含んだオブジェクトを作成します。 これは、“pick script”(オブジェクトが選択された時に実行するスクリプト)を設定し、オブジェクトを選択した時に各オブジェクトのリンクURLが開きます。

実装

新しいシェルフツールを作成するには、シェルフの空白領域で右クリックして、 New Tool を選び、ツールに名前を付けて、以下のコードをScriptタブにペーストします:

# 作成するいくつかのリンク
links = [
        ("Side Effects Software", "http://sidefx.com/"),
        ("Houdini Engine", "http://sidefx.com/engine"),
        ("OdForce", "http://odforce.net/"),
]

# /objにある既存のオブジェクトをすべて削除
# (実際のシーンではシェルフツールを使用しないでください!)
for child in hou.node("/obj").children():
    child.destroy()

# RSSのフィード記事内をループして、見つかった記事毎にオブジェクトを
# 作成します。
for index, (text, url) in enumerate(links):
    # 内部にFont SOPを含んだオブジェクトを作成し、テキストを
    # 記事のテキストに設定します。ジオメトリオブジェクトにFile SOPが含まれないように、
    # run_init_scriptsをFalseに設定していることに注目してください。
    geo = hou.node("/obj").createNode("geo", run_init_scripts=False)
    font = geo.createNode("font")
    font.parm("text").set(text)

    # Font SOPにColor SOPを追加して、カラーを黒に変更すると、
    # ビューアで読みやすくなります。
    color = geo.createNode("color")
    color.setFirstInput(font)
    color.parmTuple("color").set((0, 0, 0))
    color.setDisplayFlag(True)

    # ブラウザペインでURLを開くスクリプトを作成します。
    script = 'python -c "hou.ui.curDesktop().showSideHelp().setUrl(\'%s\')"' % url
    # そのスクリプトをオブジェクトに対して"pick script"として設定します。
    geo.parm("pickscript").set(script)

    # テキストと被らないように、ジオメトリオブジェクトのyの位置を移動させます。
    geo.parm("ty").set(-2 * index)

# ネットワークエディタで、新しいノードのレイアウトを修正します。
hou.node("/obj").layoutChildren()

HOMクックブック