日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2010年8月25日水曜日

本「スタジオプロジェクトDynamics」の補足 (その1)

最近、Mayaスタジオプロジェクト「Dynamics」を読み始めたのですが、Tutorialにしては配慮にかけた、いい加減な説明があったので、ちょっと書き留めておきます。

一番最初に非常にシンプルなプロジェクト「太陽系を構築する」というのがある。
そのステップ4でエミッターから発生するパーティクル数について述べてあることろがある。

簡単に説明すると
30fpsのシーンで、Emitterを作る。
Rateにキーフレームを打つ。
最初のフレーム50000に設定。+2フレーム後にRateをゼロにする。
これで再生すると、833のパーティクルが発生するがその理由を以下のように説明している。

エミッタの反応には数分の1秒しか与えられないため、833のパーティクルだけが放出されます。

これは作者の配慮からそうなっているのか、それとも単に知らないのか見当外れの理由である。

この本自体が中級者向けの本なのだから、ここはもう少し詳しく書くべきであった。
まずなにが見当外れなのかをはっきりさせます。

フレーム1:開始フレームはパーティクルの発生処理がされていないのでゼロ
フレーム2:初めてパーティクルの処理がされる。
フレーム3:ここではRateがゼロなのでパーティクルは発生しない。

30fpsなので、1秒間で、1/30しか発生する時間がないということになる。
ではRate50000の時のパーティクル数は1/30秒ではいくつになるか計算すると
50000÷30=1666.666666666667
約1667個になる。

本では833と書かれているが、これでは計算が合わない。
エミッタの反応には数分の1秒しか与えられないため・・・」と 書かれているが不正確な説明である。

 それもあるかもしれないが、それだけでは説明しきれない。
これを理由にするのなら833という数を書くべきではなく「少数しか発生しないのは」とか数をごまかして書くべきであったと思う。


<833の理由>
実は、いままでもこのように短い時間でパーティクルを発生させて、うまくいかないことがあったのでなにかMayaの中で特別な癖のようなものがあるのかと思い、Twitterで質問してみたところ。
理由は非常に簡単なことでした。
いやちょっと冷静になって考えればわかることだった。
キーフレームを打つということはアニメーションカーブになっているわけですが、ちょうど2フレーム目のときはアニメーション・カーブでいうと50000と0の中間の25000なんですよね。
だから、25000/30=833になるわけです。

では、この方法で50000のキーを打っても50000発生することがないのかというと、あります。
Twitterで、 @akirason1982さんに教えていただいたのですが、Tangentを「Step」にすれば2フレーム目で50000のレートになり、1666個のパーティクル発生します。

他には、2フレーム目でもう一度50000にするという手もありますね。

というかなにも1フレーム目でキーを打つ必要がない!
2フレーム目で5000、3フレーム目でゼロと打てば良いだけ。

ということは、作者が833と書いたのはアニメーションカーブのことを忘れていたから。
作者は長い間エフェクトに関わっているので、アニメーションカーブのことを知らないわけはないでしょうから、ついうっかり忘れていたということでしょうが、エフェクトに始めてはいる人や、理論をしっかりと固めたい人にとっては、ちょっといい加減すぎるような気もします。


せっかく期待して買ったのに、こんなんで大丈夫かなと不安になってきました。(^^;)

まぁ、自分も長年パーティクルとつきあって、rateにキーフレームを打ったりしてパーティクルをコントロールする経験がたくさんあるにもかかわらず、思いつかなかったわけだから、人のことは言えませんがw。
こういった細かい説明のポカだけで、あとはすばらしい物であることを期待して読み続けることにします。


<Rateは1秒間に発生するパーティクルの数>
レート(Rate)ですがこれは1秒間に発生するパーティクルの数です。
あたり前ですがアニメーション・カーブによりその数値が変化しているとフレーム毎に発生量は変化します。

さて上記の50000のRateで実際に1秒間に50000のパーティクルが発生するのでしょうか?
これは簡単に証明できます。
まずRateのキーフレームを削除し、50000に設定。
30フレームだけコマを送ります。
1フレームから始めている場合は、
1フレーム送るということは2フレームで終わり。
30フレーム 送るということは31フレームが最後のフレームになります。

最後のコマではパーティクル数はぴったり50000です。



---------------
最後になりましたが、Twitterで解答してくださった @akirason1982さん、@horonigさん、ありがとうございました。

0 件のコメント:

コメントを投稿