Handlerの呼び出し規則が判らない('A`)

DisplaceHandlerのCreateでChannel作って、それにChannelHandler付けて、さらにchannelEventを付ける。

1)meshのDisplaceに適用する。
2)displace->flagsを9回とdisplace->evalが頂点数分呼ばれる。
3)channelEvent(valueフラグ)が1度呼ばれる。
4)それ以降(2)だけがループする。

過程でグラフエディタでchannelを表示すると(4)の代わりにchannel->evalがループする。
ChannelAccessのTimeが-0.3前後から1.8前後迄(frameなら-10~5x)の何十回かで1ループ。

nullにdisplaceを充てるとflagsもevalも呼ばれないとか、displaceが頂点数分呼ばれるのは理解出来るけど、channelが過去と未来の約2秒分を1単位として呼ばれる理由がわからん('A`)

後、表示中のパネルに依存してるかの様な呼び出しとか('A`)

ムゥ('A`)

-----
 時間のおかしい一連の呼び出しはGraphEditorの表示用の評価っぽい(・з・)
 ちなみにLW8.5ではFPSに応じた単位時間でPreviewStart~PreviewEndを走査する感じ。
 30FPS、start0~end60ならtimeは0.0333xx毎で0.0~2.0の範囲で呼び出される。
 でも9.0以降だとstartから-0.1した状態から0.0175xx毎にend+0.9した範囲で呼ばれる(・з・)
 でもまぁそこら辺は表示用だからと無視しても大丈夫な模様。

 他の気になる点として、LW8.5ではeventが発生しない、9.0以降では発生する。
 基本チャンネルにHandlerが着いてる場合はFrame移動時にHandlerが呼ばれるのに、拡張チャンネルではHandlerが呼ばれない('A`)ナゼ?
 一応、これで呼ばれるHandlerの->timeには現在frameに応じた正しい時間が入ってる。
 が、本来のtime以外(time==0.0)で2回は余計に呼ばれるから其処は注意点になるかも?

----
 あー考えてみれば拡張チャネルのevaluteが呼ばれないのは参照されてないから?
 だとしたら間抜けすぎ(w
 でも誰から参照すればいいんジャロ(・з・)
 Nullに付けたDisplaceはevalもflagも呼ばれないし、HVDeformはHiddenにしてる拡張チャンネルから参照してたりするんかなぁ。
 でも、そのチャンネル自体にevalが掛からないと参照行為が発動しないし・・・ムゥ

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック