Open3
hipfile内のPDGタスクを回しつつ、タスク完了時のファイル出力を監視してUDPで他アプリケーションに通知するサンプル
Houdiniのpython module hou
でPDGのタスクを叩くスクリプト
import hou
def cookTopNet():
hou.hipFile.load(graph_file)
net = hou.node('/tasks/export_volume_texture')
to_cook = net.displayNode()
# 必ずネットワーク(TOPネットワークから作成されたPDGネットワーク)を初期化してください。
ret = to_cook.executeGraph(block=True, tops_only=True)
to_cook.executeGraph(block=True)
to_cook.dirtyAllTasks(False)
ファイル監視ツールのwatchdogでファイルの生成をFilesystem上で検知するスクリプト
houで実行したPDGタスクの進捗や完了を検知することができなかったため、ファイル監視という苦肉の策を用いて実装
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class WatchEventHandler(FileSystemEventHandler):
def __init__(self):
super(MyHandler, self).__init__()
def _run_command(self):
subprocess.call([self.command, ])
return
def on_any_event(self, event):
return
def on_moved(self, event):
return
def on_created(self, event):
cookTopNet()
def on_deleted(self, event):
return
def on_modified(self, event):
#print(event)
return
def watch(path, command="", extension="ply"):
print('Watching for changes - Ctrl-C to exit...')
event_handler = WatchEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(0.1)
except KeyboardInterrupt:
observer.stop()
observer.join()
当時時間がなかったからやっつけ作業したけど、今思えばHoudini内のPythonから通知飛ばしたり、もっとDocument読み込んで他の手を探したりやりようがあったのでは?と思ってしまう。
PDGタスクの進捗管理方法でアイデアがあったら募集中