もきもき3D

アクセスカウンタ

zoom RSS Channel Handler関係

<<   作成日時 : 2010/03/25 22:07   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

Channel/Envelope階層のメモ

Surface:Surfを持つItemがあるとすると、データ上は以下の様になる。
Root
 +Surface(Grp)+Item(Grp)+Surf(Grp)−Diffuse,etc(Chan/Env) サーフェスチャンネル階層
 +Item(Grp)−Position,etc(Chan/Env) 各アイテム階層

 Item.Surf.DiffuseにChannelHandlerを付け、親Groupを参照した時、Surfを得られる保証は無い。
 私設Envelope(VparmやNodeEditのnode)の格納先として親Grpを使おうとする場合は注意が必要(注意しても回避出来ないけど)。
 ファイルのロードによってインスタンスが構築される場合はLoad_Groupという所在不明な物にすり替わる(ChannelListには出てこない)。

 NoisyChannel2で例えれば、レイアウトでDiffuseにEnveloopeを付け、それに適用し、任意のパラメータをEnvelopeにする。
 初回時は親GrpとしてDiffuseが取られ、NoisyChannel2のGrpやEnvはDiffuseの下に作られる。
 LWOを保存後、読み込みなおすとDiffuseの下から消え、GraphEditorからもSceneEditorからも関知されない場所に追いやられる。
 関知されないだけで作用はする。

 NoisyChannel2はモデラでは即死するので同一条件でのテストをモデラで行えない。
 なので、Diffuseの下にGrpを作るという処理を書いてモデラで試す。
 実行すると、親GrpとしてDiffuseは得られるが、新Grp設置を行うと(恐らく)不正な場所(アドレス)を親として設置される。
 そこにGroup/Envelopeを設置すると内部的に壊れてモデラ終了時に落ちる。

 ぶっちゃけ、SurfaceのChannelへのGroup/Envelope操作はShaderClassと内蔵SurfaceNodeEditor(内のNodeからの操作)以外では正常動作は期待出来ない。
 レイアウト/モデラで同等な結果を得るという観点では、期待以前に正常動作しない。

 Channelは、レイアウトのバイナリ属、テキスト属、モデラ(バイナリ属)の3種あると考えるといいかも。
 ChannelHandlerにおいて正常動作を期待出来るのはレイアウトのテキスト属(アイテムモーション系)だけ。
 バイナリ属で正常に動作するのはShaderClassと内蔵SurfaceNodeEditorのNode内から扱う時だけ、と。

 Handler内でEnvelopeを許可する場合、汎用というか中庸というか透過的なChannelHandlerは作れない。
 という感じっぽい。

 バイナリ属に対するChannelHandlerでの問題点は
 GroupとEnvelope、NodeEditorを設置した場合にNodeEditorAPIではNodeのEnvelopeを読み取らない。

 それ以外の静的要素を適用するような物なら大丈夫なんだろうけれど。
 バイナリ属はSurfaceしかないから出来るだけそれでしのげって話なんだろうけど。
 でもシェーダープラグインのEnvelopeがなぁ・・・。

 Newtek(・x・)死ね チネじゃなくて死ね(・з・)
 多々の不都合が改修される事はもはや無いだろうし、後継アプリのグダグダもあって9.6.1もグダグダだし、今から改修に注力されても互換性の無い代物に化けてるし、Newtekが存続しなくても影響無いよな(・з・)
 少しでも直す気があるなら8.5まで戻って、順々にバグ潰し汁(・з・)

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Channel Handler関係 もきもき3D/BIGLOBEウェブリブログ
文字サイズ:       閉じる