パーティクルをファイルに保存する
前回のチュートリアルで、パーティクルフロー(以下PF)がいかに度重なる計算を最小限に抑えるために現在のフレームのキャッシュを取るかを紹介しました。このステップでは一歩進み、すべてのアニメ―トされたシーケンスをディスクファイルに保存します。
いったんパーティクルがディスクに保存されれば、PFをオフにしたり、Maxシーンから消去したりして、レンダリングをより良いものにするための設定(カメラ・ライト・密度・マットオブジェクト)に集中できます。
50や100程度のフレーム数をディスクから読み取るのはほんの数秒で済みます。なぜならPFがヒストリに基づき、前フレームからの結果で計算するのに対し、クラカトアは1フレーム毎に1ファイルを保存し、どのフレームでも直接アクセスできるからです
【パーティクルをディスクに保存する】
●クラカトアGUIのMain Controlsロールアウトで、RenderFrameを右クリックして、Active Segment [0-100] Nth:1を選択してください。もしくは、標準のレンダリング設定画面のコモンタブで、時間を設定してください。
●Particle Render ModeのドロップダウンリストでSave Particles To File Sequenceにセットしてください。レンダーボタンがSAVE PARTICLESという見出しに替わり、Save Particlesロールアウトが開きます。
注意:Iterative[Full]オプションがグレーアウトされSave Particles To File Sequenceモードでは無視されます。
●Save Particlesロールアウトでパスとファイル名を記入してください。簡単にすると、[…]でブラウズしてください。
●クラカトアのデフォルト設定では、一般的なチャンネルはディスクに保存されるようになっています。
●パーティクルをロードする際にどのチャンネルが必要になるか予期し、ChannnelsロールアウトのParticle Channels To Save To Diskでチャンネルを加えたり削除したりできます。
●たとえば、
○前回のステップでレンダリング時にカラーを上書きできることは学びましたから、すべてのパーティクルが単純な緑色の場合、パーティクル毎にカラーチャンネルを保存するのは、ただディスクの容量を大きくしてしまうだけということが分かります。しかし、PRT Loaderオブジェクトを使用してオブジェクトの色を指定することもできるため、クラカトアチャンネルモディファイアやマテリアルをPRT Loaderにアサインすることができます。というわけで今のところはカラーを保存しません。
○法線にも同じことが言えます。クラカトアはパーティクルのトランスフォームマトリックスのX軸を法線として保存します、しかし、何かのジオメトリに アラインさせない限り、このチャンネルを保存する意味がありません。
○IDはPFにパーティクルをロードバックする際、とても使い勝手が良いのですが、現時点ではスキップします。
○密度は何か他の意味があって指定されない限り、1.0と仮定されます。これは余剰のチャンネルで、このチャンネルを保存しなければクラカトアは密度をとりあえず1.0と見なします。
パーティクルを保存する
●パーティクルを処理し始めるために、SAVE PARTICLESボタンを押してください。
これが完了すると、すべてのパーティクルはディスクファイルに保存されます。この例では、1千万のパーティクルを100フレーム分保存するために約5分かかり、1.6Gのディスクストレージを必要とします。(この数値はシステムパフォーマンスと保存するチャンネル数によって変化します)
いったんパーティクルのキャッシュが保存されると、メモリやPFの処理無しにレンダリングできます。この処理時間削減により、より多くのパーティクルがメモリで処理されることになります。ディテールアップのために複数のキャッシュファイルを読み込むには、High Particle Countsを見てください。
【ディスクにキャッシュされたパーティクルを再利用する】
PFを選択してオフにしてください。
●クラカトアGUIのParticle Loadersロールアウトで、Create New Loader….ボタンを押して下さい。
○もしくは作成パネルのジオメトリタブで、Krakatoa PRT Loaderを使用してください。またはすでにクラカトアツールバーをカスタマイズしている場合、シフトキーを押しながらPRT MacroScriptアイコンを選択してください。
●新しいKrakatoa PRT Loaderオブジェクト “PRT Loader01“が作成されます。
○デフォルトでは、パーティクルファイルシーケンスをロードするため、ファイルピッカーが自動的にポップアップされます。
oSave Particles To File Sequenceに有効なパスを入れると、PRT Loaderは保存されたばかりのパーティクルを後にロードすることになるだろうと見越し、同じディレクトリのコンテンツを自動的に表示します。
注意:これらのPRT Loaderによる自動的な提示はPreferencesロールアウトでカスタマイズできます。デフォルトのBEGINNER設定はあなたがしようとすることを予期してくれる最も便利な提示になります。
●パーティクルファイルのどれかの番号を選択してください。例えば、0000を開いてください。保存されたパーティクルはビューポートに現れて、PRT Loaderのランダムなオブジェクト色で表示されます。(Colorチャンネルが PRT Loaderに保存されていない限り、ランダムな色になります。保存されている場合、その色が使われます。)
●PRT Loaderのオブジェクトカラーを3ds Maxオブジェクトカラーダイアログでお決まりとして使われているライトグリーンに変更できます。
●タイムスライダーを動かしてください。キャッシュされたパーティクルがリアルタイムに表示され、デフォルトで保存された1%のパーティクル(100万の代わりに1万)しかロードされないことに気づくでしょう。
●ここに70フレームのアニメーションがあります。
アドバンスドTip:PRT Loaderでシーケンスのどれか1つのファイルを選ぶことができます。Load Single Frameオプションはどのシーンフレームでも、特定のフレームを見ることができるようになっているからです。
これは、同じシーケンスで複数のフレームをロードして、時間がオフセットされたパーティクルの静的クラウドをレンダリングすることが技術的に可能であることを意味します。
PRT Loaderをレンダリングする
●Particle Render ModeをRender Scene Particlesに戻します。
PFlowジオメトリとPRT Loadersの両方が、RENDERボタンの左をコントロールするグループで、デフォルトでチェックが入っているため、何も変更することなく即座にレンダリングできることに気づくでしょう。
●タイムスライダーを50フレームへ移動し、RENDER FRAMEを押してください。
o前回のチュートリアルの結果と比較してみてください。
oたとえP Fがオフになっていたとしても、クラカトアはObject Color dialogでカスタマイズした色を除いて、ディスクに保存されたパーティクルとまさに同じ結果をレンダリングします。
●タイムスライダーを100フレームに移動し、RENDER FRAMEを押してください。
○アニメーションの最後のフレームが、50フレームや0フレームと同じ時間でレンダリングされます。クラカトアはプリロール時間なしに、対応するフレームを即座にディスクからロードしてくれます。一般的なレンダリング時間は大体2秒前後になります。(システムパフォーマンスによって変化します)
速度を視覚化する
キャッシュとして保存したパーティクル情報には、位置や速度があります。
●PRT Loaderではパーティクルの位置歯確認できますが 、速度はどのように見ることができるのでしょうか?
●PRTローダーを選んで、ビューポートロールアウトを見て下さい。 Display As Large Dotsのドロップダウンには、パーティクルをドットの代わりにラインで表示するDisplay Velocitiesというオプションがあります。
○このオプションはP Fのライン表示モードと似ていますが、Display Velocitiesは我々の内部のベンチマークによると、およそ30倍速いパフォーマンスを発揮します。
○これでパーティクルがどれくらい速く動いているか確認できるようになりました。ラインの片方の端は現在のパーティクルの位置を表し、もう一方の端は速度ベクトルに基づき次のフレームの位置を示します。
パーティクルアニメーションのタイミングを変更する
これまで、PRT LoaderはオリジナルのPFの位置と速度を正確に示してきました。しかしPRT Loaderのもっともパワフルな能力の一つは、ストアされた位置と速度の情報に基づき、パーティクルアニメーションのタイミングを変更できることです。
●パーティクルシステムを逆再生してみましょう。
○そのためにはまずPRT LoaderのTimingグループコントロールで、Graph [a]オプションを有効にしなければなりません。そう するとそれまでビューポートで速度を表示していたラインが消えたことに気づくでしょう。 これは、グラフスピナーがまだアニメ―トされていないためで、すべてのパーティクルはすべてのフレームで、0フレーム目をプレイバックしています。明らかに、パーティクル動いておらず、結果として速度は0までスケールダウンされます。
○パー ティクルがまだそこにあるのを確認するために、再び表示をDisplay As Large Pointsに戻すことができます。ただ、タイムスライダを動かしてもパーティクルは動くことなく、ビューポートに表示されているティーポットは何も変更されません。
○GraphとFrame Offsetスピナ ーの右側に[]ボタンがあるので、それを押してCreate LINEAR Playback Keysを選択してください。タイムスライダーを動かすと、アニメーションはこれまでのように再生されます。しかし今回は、シーンの時間はGraphスピナーでセットされるキーフレーム以外では変更されません。 フレーム0に値が0、100に値が100のリニアキーが作られました。
○[]ボタンをもう一度押してINVERT Existing Animationを選択します。これは単にPlayback Graphコントローラですべてのキーを逆にします。結果として、フレーム100で値0、フレーム0で値100のキーになります。タイムスライダを動かすと、アニメーションが逆再生されるのを確認できます。
● 他のアニメーションスタイルのプリセットを適用することができます。例えば、メニューからCreate PING–PONG Playback Keysを選ぶと、(す でにあるキーを置き換えて)3つのキーをセットします。 1つ目はフレーム0に値0、2つ目はフレーム50に値100、3つ目はフレーム100に値0となります。再生すると、ティーポットは50フレームに向かって吹き飛び、100に向かって再結合します。PRT LoaderでDisplay Velocitiesを有効にすると、フレーム45あたりのラインがもっとも速いことに気がつくでしょう。 これは爆発半分の時間で行われるため、2倍の速度になるからです。
もちろん、3dsMaxアニメーションとトラックビューツールを使用して、Graphス ピナーで手動でどんなキーでもでセットすることができます。これはクラカトアのとてもパワフルな特色で、これにより一度キャッシュに取った後、アニメーションをツイークすることができます。
レンダリング時に速度を使用する
キャッシュとして保存された速度情報は上述のようにタイミングを変更するだけでなく、主にレンダリング時にモーションブラーをかけるためにも役立ちます。
クラカトアは一度パーティクルの照明を計算する内臓のモーションブラーを提供してくれます。それらは複数の軌跡を描き、最終的なイメージに結合してくれます。
●クラカトアGUIのMain ControlsロールアウトでMotion Blurにチェックを入れてください。
●Motion Blur Segmentsを4にセットし、Shutter Degreesを180.0(3ds Maxでのシャッター値で0.5に相当)のままにしてください。
●PRT LoaderのGraphモー ドでPING–PONG Keysに設定したまま、時間スライダーをフレーム32の方へ動かしてレンダリングしてください。レンダリング時間は増えます。一度だけライティングを計算するのに数分かかります。モーションブラーなしで2秒かかる場合、4パスを計算するモーションブラーは約7秒かかります。これは100万のライティングされたパーティクルを400万描画するのと同じです。
●それでは、Shutterを360(3ds Max でのシャッター値で1.0に相当)に増やしてください。Shutterスピナーの隣にあるプリセットボタンをクリックしてリストから360を選択してください。
●レンダリングすると、パーティクルパス同士の距離がピクセルよりも大きいため、明らかなバンディングが現れます。
●レンダリング時間を増やすことなくこのバンディングを消す唯一の方法は、Jittered Motion Blurオプションを有効にすることです。パーティクルは速度ベクトルに沿ってランダムにジッターがかけられ、ノイジーで画一的にならない絵を生産します。
●Segmentsの数を8に増やすこともできますが、その場合はレンダリング時間が約12秒に増えます。