« C.O.F.F.E.E.プラグイン「ThreePointsToArc」とりあえず完成 !!…か? | トップページ | 落とし穴にはまった「スプラインエミッタにする」確認する為のC.O.F.F.E.E.エクスプレッション »

落とし穴にはまった「C4D標準パーティクルをスプラインエミッタにする」

完成だと思った「C4D標準パーティクルをスプラインエミッタにする」は、落とし穴にはまってました。認識の甘さ。勉強不足から起こったミスでした。
知ってる?C.O.F.F.E.E.でアニメーションに対応するときの注意事項…

不具合を起こしている現象は…

  • アニメーションツールバーのタイムスライダーが0フレームにある状態で、レンダリングを始めるとスプラインエミッタではなくなる。
  • たとえアニメーションツールバーのタイムスライダーが0フレームにない状態でレンダリングを始めても、レンダリング中に0フレームに移動させるとスプラインエミッタではなくなる。
  • レンダリング中のドキュメントが、アクティブドキュメントでなくなったときもスプラインエミッタではなくなる。ようするに、複数のドキュメントがC4D上に展開されていて、レンダリング開始後、違うドキュメントが表にくる。もしくは、レンダリング中にそのドキュメントを閉じた場合。

最初の2つのタイムスライダーの問題は、0フレームでパーティクル噴射位置等を初期化してるので、初期化絡みの失敗だと考えられる。

3つ目の問題のアクティブドキュメントではなくなったときの問題も、0フレーム絡みだと考えられる。
時間を取得する為にGetActiveDocument()を使用しBaseDocumentを取得。
BaseDocument->GetTime()で時間を取得。
0フレームでパーティクル噴出位置等の初期化。

アニメーションレンダリング時のGetActiveDocument()はどうだろう?
レンダリング中のドキュメントがアクティブではなくなったとき、取得できているか確認する為にはどうしたらいいんだろう?コンソールに表示はできないし…外部ファイルに書き出すか?面倒ですね。

見当違いかは、まだ不明。
この状態で別の不具合も考えられる。
NetRenderでも同じ事が起こるのではないだろうか?
でも、PCを複数台所有していないから試しようがない。

|

« C.O.F.F.E.E.プラグイン「ThreePointsToArc」とりあえず完成 !!…か? | トップページ | 落とし穴にはまった「スプラインエミッタにする」確認する為のC.O.F.F.E.E.エクスプレッション »