this_model の恐怖。
エクスプレッションで、this や this_model
というものがありますね。 「私」 もしくは 「私が所属する Model 」を表すものですね。 長ったらしいオブジェクトの名前や Model
の名前を書かなくても済むので便利ですね。 便利ですか。 そうですか。 ほんとにそうですか。 Hoge という名前の Model があります。 cube と cone がこの Hoge に所属しています。 PPG から Rot Z のアニメーションアイコンをドラッグ&ドロップして、普通にイコールの関係のエクスプレッションを作りました。
この状態で、cube を Hoge から切り離してみます。
今度は cube を、別の Model である PIYO に所属させてみます。
ここで、便利な this_model が登場します。 親子関係は元の状態に戻しました。つまり cube は Hoge という Model の所属です。
でも、シーンを作り進めていくうちに、cube は Hoge から切り離す必要が出てきたので、親子をカットしました。
でも不思議なことに、エクスプレッションの関係は生きています。ちゃんと Rot Z が連動します。エクスプレッションの表記と実際の挙動が違ってしまっていることになります。 うーむ どうなのよこれ。 さらに、cube は別 Model に所属させる必要が出てきました。 すると、
バグだそうです。 アフォか Softimage。 もっと最悪なのは、これに気づかず、エクスプレッションを Action 化してしまったときです。 上に書いたように、親子を切り離したり別 Model に所属させた場合、エクスプレッションの表記は更新されていなくても実際の挙動はちゃんとエクスプレッションが生きている状態になっているため、パッと見は正常なので気づきにく いわけです。この状態でエクスプレッションを持っている cone を選択し、Store メニューから Action 化します。
すると、
で、Action 化するときのPPGでアニメーション(エクスプレッション)を削除したり、後で Apply Action するつもりで手動でエクスプレッションを削除したりとか、よくやります。そのための Action ですから。 ってことで、Apply Action を実行して格納したエクスプレッションを cone に戻してあげます。
すると。
ふざけんな XSI。 悪い子です。 しかたなく、Action のPPGを開き、this_model と書かれている部分を、現在の所属モデルである PIYO に手で書き直してやります。
ああめんどくせえ。ふざけんな XSI。 Apply Action でアニメーションが戻せないのは、this_model で参照しているオブジェクトが存在しないから当然なので、それ自体が問題なのではない。 問題は、this_model を使っていると親子を変えたときにエクスプレッションの表記が正しく更新されないことにある。 正しく更新されていないまま、でもエクスプレッションに書 かれた文字列をそのまま Action として格納するため、このようなことが起こるのである。 ・this_model を使ってるときでも、親子変えたらちゃんとエクスプレッションを更新しろゴルァ ・さらに安全策として、Store で Action化するときに、参照先の存在をチェックしろ。存在してないなら警告出せゴルァ ということになる。そしてこれは XSI側の不具合なので、次のバージョンとかで修正されるまでこちらとしては為す術が無い。そうなると結論は、 ・this_model 使うな ということになる。 Orz 最初これに気づかずガンガン this_model を使っていたため、後で大変なことになった。 気づいた後は、Action 化する前に全部 this_model を普通に model の名前に戻そうと手で打ち直していたが、やってらんなくなったのでスクリプトを書いた。ついでに検索と置換もできるようにしたらけっこう便利になった。ま だ散らかっている状態のスクリプトなので、そのうち整理できたらアップします。 XSI はこういう細かい不具合多いですねえ。細かいことだからまあいいでしょなんて思ったら大間違いですよ Softimageさん。 もし8本足の動物がいて、1本につき400個のエクスプレッションが入っていたりしたら、どうするんですか。実際にいるんです よ、8本足の動物は。10本のだっています。わかってますか。 今日もモントリオールに向かって怨嗟の炎を吐く。 |
| 固定リンク
コメント