Created on | Updated on

キーボードイベントと Consumer Chain

参考:https://www.sidefx.com/docs/houdini/hom/state_events.html#consumer-chain

 

消費者チェーン

Python State のキーボードイベントのコンシューマーチェインは以下の通りです:

  • onKeyEvent
  • onMenuAction
  • アクティブなセレクタ

Python State では、キーボード入力などのイベントが発生するとまず onKeyEvent がそのイベントを消費しようとします。
そうでなければ、そのキーがシンボリックホットキーに割り当てられていれば onMenuAction がそのイベントを消費し、
またそうでなければアクティブなセレクタがキーボード入力イベントを消費します。

ここでいう「アクティブなセレクタ」とは、bindGeometrySelector や bindObjectSelector のような ViewerStateTemplate API で Python State にアタッチされるセレクタを指します。

つまり、キーボードイベントが発生するとまずは onKeyEvent がそのイベントを消費しようとします。onKeyEvent が True を返せばそのキーボードイベントは消費されて終了しますが、False を返すと、onKeyEvent での処理の有無にかかわらず onMenuAction に渡されます。

そのため、onKeyEvent がイベントを消費した場合は必ず True を返す必要があり、そうでない場合は onKeyEvent と onMenuAction によってイベントが二度消費される可能性があります。

 

また、Houdini はデフォルトでホットキーを持ちます。(例えば 1 を入力すれば Object Select Mode が、2 は Geometry Select Mode: Point がアクティブになるなど

これらは Python State によってオーバーライド可能です。アクティブな Python State がホットキーとして、またはキーストロークとして(onKeyEvent を介して)それらを消費しない場合、Houdini に渡されこれらがアクティブになります。

 

 

 

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

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