Created on | Updated on

Viewer State のメソッド引数が **kwargs ではなく kwargs なのはなぜ?

Viewer State で関数を定義するとき、多くは引数に self, kwargs を使います。

______1-__.png

この kwargs は可変長の辞書型変数を引数に指定する際に辞書型変数名として慣例的に使われる文字列です。

一方 Python ではこの可変長を指定する際には ** を付けることで可変長であることを示します。

Python では付くはずの ** が Python Viewer State で付かないのはなぜでしょうか。

シャドウ関数

Houdini と Viewer State を繋ぐ見えないシステムとしてシャドウ関数というものがあります。(この「シャドウ関数」という名前は造語であり、システムを説明するために SideFX が仮付けした名前です)

システムとしては以下の通りです。

mceclip0.png

マウス・キーボードなどのデバイスアクションを受け取った Houdini は、そのあらゆる情報を含んだ辞書型変数 **kwargs をシャドウ関数に渡します。

**kwargs を受け取ったシャドウ関数はその中から Viewer State に必要な情報だけを kwargs として抽出し、Viewer State に渡します。

一般的にこのシャドウ関数は隠されているため一見すると Houdini からアスタリスクが付かない kwargs が Viewer State に渡っているように見えますが、実際には Houdini は正しく **kwargs を Viewer State に渡し、シャドウ関数がその橋渡しとして必要な情報だけを抜き取っているわけです。

 

より詳しく知りたい方、Python に明るい方は以下のサンプルコードをご覧ください。

ソースコード:$HFS/houdini/python2.7libs/viewerhandle/interface.py
Viewer State のインターフェースソースコード:$HFS/houdini/python2.7libs/viewerstate/interface.py

 

Viewer State についてはこちらで解説をしています。

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

※ 問い合わせ対応はBorn Digitalより製品をご購入頂きましたお客様のみのサービスとなります。ご了承下さい。
サポート問い合わせ