PDGでカスタムプロセッサを作る(2) - プロパティ追加
前回、 では、PythonProcessor で基本的な Generate と Cook を実装したので
今回はプロパティと WorkItem のアトリビュートを追加して、Cook 側でもう少し具体的な処理を書いていこうと思います。
Processor のプロパティを追加する
まず、PDG のノード自体の処理 正確に言うと WorkItem を Generate する時に使いたいパラメーターは
通常の Houdini と同じく
EditParameterInterface から追加します。
例として Processor でテキストファイルに書かれている数だけ WorkItem を作る...というのをやりたい場合。
パラメーターとして FilePath を追加します。
A B C
そして、中身が ↑ のようなテキストファイルを作り、 file_path にパスを指定します。
path = self["file_path"].evaluateString()
with open(path,'r') as f:
data = f.readlines()
for i in data:
name = i.strip()
options = pdg.WorkItemOptions()
options.inProcess = True
new_item = item_holder.addWorkItem(options)
new_item.addAttrib("name",pdg.attribType.String).setValue(name)
テキスト 1 行ごとに WorkItem を生成する場合がこのようになります。
Int などの数値であっても、JSON やほかのフォーマットになった場合でも基本は同様です。
PythonScript の場合
Houdini の PythonProcessor ノードに対して追加する場合は、上記の手順でしたが
Python スクリプトに保存した場合は以下のようになります。
@classmethod
def templateBody(cls):
return """{
"name": "pythonprocessor1_template",
"dataType": "genericdata",
"parameters": [
{
"name": "file_path",
"label": "File Path",
"type": "String",
"value": "D:/sample.txt",
"tags": "['script_callback_language']"
}
]
}"""
templateBody の parameters が、プロパティの設定になるので、
parameters 内に name label type value tags の辞書型を追加します。