viewer stateはユニークな名前がついてないとエラーになる。よってHDAがロードされたとき( OnInstallイベントがこれに相当する)にのみ一度だけ定義されるのがよい。 もしくは、該当するイベントが既にScene上に存在しないかどうかをチェックして、存在すれば一度クリアしてから再作成しても良いかもしれない。 以下のコマンドで、当該HDAの名前を利用したviwer stateを削除できる。 state_name = kwargs['type'].name() + ".pystate" hou.ui.unregisterViewerState(state_name) 以下は登録方法。HDA python moduleにtemplateという変数でviewer stateのインスタンスが存在するなら、これを有効化できる。 module = kwargs['type'].hdaModule() hou.ui.registerViewerState(module.template) 以下実装方法 Template本体 Python Moduleに書き込む from __future__ import print_function class myState(object): def __init__(self,state_name,scene_viewer): self.state_name = state_name self.scene_viewer = scene_viewer # Handler methods go here def onMouseEvent(self, kwargs): dev = kwargs["ui_event"].device() print("Mouse:", dev.mouseX(), dev.mouseY(), dev.isLeftButton()) def createVST(): nodetype = kwargs['type'] ...