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?

【Houdini × Python】 PDGを使ったランダムな配置

0
Last updated at Posted at 2026-04-13

はじめに

徐々にPDGで出来ることを増やしていこうとしています!

タイトルなし-2026-03-16 03 23 32(copy)-2026-03-29 19 30 32(copy)-2026-04-02 08 46 21(copy)-2026-04-08 07 14 39(copy)-2026-04-12 13 32 37(copy).gif

今回は、
Node Pattern : マッチしたノードに基づいてワークアイテムを生成
Wedge : アトリビュート値を色々と変えながらワークアイテムを生成
Python Script : Pythonスクリプトを実行するワークアイテムを生成

上記3つを使ったBoxのランダムな配置をやってみます

OBJレベルノード構成

image.png

Boxを何個か作ってMergeし、TOP Networkを作成してください

このBoxのパラメーター CenterにPDGでランダムな値を自動で入れる仕組みを作ります

topnetのノード構成

image.png

Node Pattern

Root Node : 今回はパラメータを入れたいboxの親のノードを選択
Node Pattern : boxでそのまま単語を使用すると、名前の部分文字列検索 
('Box でノードタイプでパターンマッチ アポストロフィでタイプ検索になるのを初めて知った!) 

image.png

Wedge

Work Item Order : ここを Group By Wedgeに変更すると、作成したアトリビュートがすべて異なる値になってくれます
Random Samples : ここにチェックをいれると指定した範囲のランダムな値が入るようになります

image.png

Python Script

image.png

import hou

attrib = work_item["attr"] #Work Item に格納された、Wedgeで作成したattrアトリビュートを取得
node_path = work_item["nodepath"][0] #Work Item に格納されたNode Patternで作成したnodepathアトリビュートを取得
node :hou.SopNode = hou.node(node_path) #nodepathごとのノードを取得

#node.parmTuple("t").set((0,0,0)) #原点に移動
node.parmTuple("t").set((attrib[0],attrib[1],attrib[2])) #ランダムに移動

ここで注意するべきなのは、このときのattribはvector4型だということです

どういうことかというと、入力できるパラメータの枠が4つあります
image.png

この4つの値をそのまま3つの値しかないCenterに入れようとするとエラーになります
image.png

だからわざわざスライスで3つの成分を明示的に取り出しています

node.parmTuple("t").set((attrib[0],attrib[1],attrib[2]))

まとめ

とにかくやって慣れるしかないので、色々やっていきます


今回は位置を変えたかったので

node.parmTuple("t").set((attrib[0],attrib[1],attrib[2]))

としましたが

image.png

書き出しをしたいときは Node Patternで出力するノードを選択して

node.parm("execute").pressButton()

とすればテクスチャでもfbxでも書き出せます。

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?