0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Houdinioちょっとだけお役立ちShelf (超個人的メモ用)

Last updated at Posted at 2025-08-21

概要

プライベートで使ってるけど、訳あって他のところでも使いたかったのでどこからでもアクセスできるようにメモとして残していきます。先人たちのおススメもネットの海にたくさんあるので、参考にしていきたいと思います。
今後、追加更新していく予定です。

環境

Houdini 20.5.550 Py3.11

1.Out_Null

Out_Null

import hou

# 選択ノードを取得
sel = hou.selectedNodes()
if not sel:
    hou.ui.displayMessage("ノードを選択してください")
else:
    node = sel[0]
    parent = node.parent()
    
    # Nullノードを作成
    null_node = parent.createNode("null")
    
    # 名前を "OUT_元ノード名" に
    new_name = "OUT_" + node.name()
    null_node.setName(new_name, unique_name=True)
    
    # 色を黒に設定
    null_node.setColor(hou.Color((0, 0, 0)))
    
    # 接続(node → null)
    null_node.setInput(0, node)
    
    # 少し右下に配置
    null_node.setPosition(node.position() + hou.Vector2(1, -1))
    
    # 表示/レンダーフラグをONにする
    null_node.setDisplayFlag(True)
    null_node.setRenderFlag(True)
    
    # ノードの形を丸型に設定("circle")
    null_node.setUserData("nodeshape", "circle")

選択したノードの名前を参照した、「OUT_XXX」Nullノードを生成します

2.FileCache to Null

FileCache to Null

import hou

sel = hou.selectedNodes()
if not sel:
    hou.ui.displayMessage("ノードを選択してください")
else:
    node = sel[0]
    parent = node.parent()
    
    # 元ノード名を大文字に変換
    base_name = node.name().upper()
    
    # --- FileCacheノードを作成 ---
    cache_node = parent.createNode("filecache")
    
    # 名前 "_XXX_CACHE"
    cache_name = f"_{base_name}_CACHE"
    cache_node.setName(cache_name, unique_name=True)
    
    # 薄紫色
    cache_node.setColor(hou.Color((0.7, 0.5, 0.9)))
    
    # 接続(node → cache)
    cache_node.setInput(0, node)
    
    # 配置を少し右下に
    cache_node.setPosition(node.position() + hou.Vector2(1, -1))
    
    # キャッシュパスを設定($JOBベース)
    cache_path = f"$JOB/cache/{base_name}/$F.bgeo.sc"
    cache_node.parm("file").set(cache_path)
    
    # デフォルトで「Load from Disk」ON
    cache_node.parm("loadfromdisk").set(True)
    
    # --- OUT用Nullを作成 ---
    null_node = parent.createNode("null")
    
    # 名前 "OUT_XXX"
    null_name = f"OUT_{base_name}"
    null_node.setName(null_name, unique_name=True)
    
    # 黒色
    null_node.setColor(hou.Color((0, 0, 0)))
    
    # 丸型アイコン
    null_node.setUserData("nodeshape", "circle")
    
    # 接続(cache → null)
    null_node.setInput(0, cache_node)
    
    # 配置をさらに右下に
    null_node.setPosition(cache_node.position() + hou.Vector2(1, -1))
    
    # 表示/レンダーフラグをON
    null_node.setDisplayFlag(True)
    null_node.setRenderFlag(True)

選択したノードの名前を参照した、FileChcheとNullノードを生成します。

3.Start Work

Start to work

import hou

parent = hou.node("/obj")

# --- Geometryノード作成 ---
geo_node = parent.createNode("geo")
geo_node.setName("WORK", unique_name=True)
geo_node.setDisplayFlag(True)

# Geometryノード内に潜る
parent = geo_node

# --- CTRL用Null作成 ---
ctrl_node = parent.createNode("null")
ctrl_node.setName("CTRL", unique_name=True)
ctrl_node.setColor(hou.Color((1, 0, 0)))  # 赤
ctrl_node.setUserData("nodeshape", "cloud")  # 雲っぽい形状

ctrl_node.setDisplayFlag(False)
ctrl_node.setRenderFlag(False)

# --- パラメータ作成 ---
parm_group = ctrl_node.parmTemplateGroup()

# Floatパラメータ用フォルダ
float_folder = hou.FolderParmTemplate("float_folder", "Float Params")
for i in range(1, 6):
    parm = hou.FloatParmTemplate(f"float{i}", f"Float {i}", 1, default_value=(0.0,))
    float_folder.addParmTemplate(parm)
parm_group.append(float_folder)

# Integerパラメータ用フォルダ
int_folder = hou.FolderParmTemplate("int_folder", "Integer Params")
for i in range(1, 6):
    parm = hou.IntParmTemplate(f"int{i}", f"Int {i}", 1, default_value=(0,))
    int_folder.addParmTemplate(parm)
parm_group.append(int_folder)

# Vectorパラメータ用フォルダ
vector_folder = hou.FolderParmTemplate("vector_folder", "Vector Params")
for i in range(1, 6):
    parm = hou.FloatParmTemplate(f"vec{i}", f"Vector {i}", 3, default_value=(0.0, 0.0, 0.0))
    vector_folder.addParmTemplate(parm)
parm_group.append(vector_folder)

# --- パラメータグループを反映 ---
ctrl_node.setParmTemplateGroup(parm_group)


「Work」という名前のGeometeryを生成して、「CTRL」Nullノードも生成します。

---随時更新予定---

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?