Saving Particles To File

パーティクルをファイルに保存する

前回のチュートリアルで、パーティクルフロー(以下PF)がいかに度重なる計算を最小限に抑えるために現在のフレームのキャッシュを取るかを紹介しました。このステップでは一歩進み、すべてのアニメ―トされたシーケンスをディスクファイルに保存します。

いったんパーティクルがディスクに保存されれば、PFをオフにしたり、Maxシーンから消去したりして、レンダリングをより良いものにするための設定(カメラ・ライト・密度・マットオブジェクト)に集中できます。

50や100程度のフレーム数をディスクから読み取るのはほんの数秒で済みます。なぜならPFがヒストリに基づき、前フレームからの結果で計算するのに対し、クラカトアは1フレーム毎に1ファイルを保存し、どのフレームでも直接アクセスできるからです


【パーティクルをディスクに保存する】

●クラカトアGUIのMain Controlsロールアウトで、RenderFrameを右クリックして、Active Segment [0-100] Nth:1を選択してください。もしくは、標準のレンダリング設定画面のコモンタブで、時間を設定してください。

krakatoa15_tutorial_saveparticles_activesegment

●Particle Render ModeのドロップダウンリストでSave Particles To File Sequenceにセットしてください。レンダーボタンがSAVE PARTICLESという見出しに替わり、Save Particlesロールアウトが開きます。

注意:Iterative[Full]オプションがグレーアウトされSave Particles To File Sequenceモードでは無視されます。

krakatoa15_tutorial_saveparticles_savemode

●Save Particlesロールアウトでパスとファイル名を記入してください。簡単にすると、[…]でブラウズしてください。

krakatoa15_tutorial_saveparticles_savedialog

オプションチャンネルのカスタマイズ

●クラカトアのデフォルト設定では、一般的なチャンネルはディスクに保存されるようになっています。

●パーティクルをロードする際にどのチャンネルが必要になるか予期し、ChannnelsロールアウトのParticle Channels To Save To Diskでチャンネルを加えたり削除したりできます。

●たとえば、

○前回のステップでレンダリング時にカラーを上書きできることは学びましたから、すべてのパーティクルが単純な緑色の場合、パーティクル毎にカラーチャンネルを保存するのは、ただディスクの容量を大きくしてしまうだけということが分かります。しかし、PRT Loaderオブジェクトを使用してオブジェクトの色を指定することもできるため、クラカトアチャンネルモディファイアやマテリアルをPRT Loaderにアサインすることができます。というわけで今のところはカラーを保存しません。

○法線にも同じことが言えます。クラカトアパーティクルのトランスフォームマトリックスX軸法線として保存します、しかし、何かのジオメトリに アラインさせない限りこのチャンネル保存する意味がありません

○IDはPFにパーティクルをロードバックする際、とても使い勝手が良いのですが、現時点ではスキップします。

○密度は何か他の意味があって指定されない限り、1.0と仮定されます。これは余剰のチャンネルで、このチャンネルを保存しなければクラカトアは密度をとりあえず1.0と見なします。

krakatoa15_tutorial_saveparticles_channels


パーティクルを保存する

●パーティクルを処理し始めるために、SAVE PARTICLESボタンを押してください。

これが完了すると、すべてのパーティクルはディスクファイルに保存されます。この例では、1千万のパーティクルを100フレーム分保存するために約5分かかり、1.6Gのディスクストレージを必要とします。(この数値はシステムパフォーマンスと保存するチャンネル数によって変化します)

いったんパーティクルのキャッシュが保存されると、メモリやPFの処理無しにレンダリングできます。この処理時間削減により、より多くのパーティクルがメモリで処理されることになります。ディテールアップのために複数のキャッシュファイルを読み込むには、High Particle Countsを見てください。


【ディスクにキャッシュされたパーティクルを再利用する】

PFを選択してオフにしてください。

krakatoa15_tutorial_loadparticles_turnoffpflow

●クラカトアGUIのParticle Loadersロールアウトで、Create New Loader.ボタンを押して下さい。

もしくは作成パネルのジオメトリタブで、Krakatoa PRT Loaderを使用してください。またはすでにクラカトアツールバーをカスタマイズしている場合、シフトキーを押しながらPRT MacroScriptアイコンを選択してください。

krakatoa15_tutorial_loadparticles_createprtloader

新しい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オブジェクトカラーダイアログでお決まりとして使われているライトグリーンに変更できます。

krakatoa15_tutorial_objectcolordialog

●タイムスライダーを動かしてください。キャッシュされたパーティクルがリアルタイムに表示され、デフォルトで保存された1%のパーティクル(100万の代わりに1万)しかロードされないことに気づくでしょう。

●ここに70フレームのアニメーションがあります。

krakatoa15_prtloader_displayaslargedots

アドバンスド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でカスタマイズした色を除いて、ディスクに保存されたパーティクルとまさに同じ結果をレンダリングします。

krakatoa15_savingparticles_1m_frame32_mb4_180

●タイムスライダーを100フレームに移動し、RENDER FRAMEを押してください。

アニメーション最後のフレームが、50フレームや0フレーム同じ時間でレンダリングされます。クラカトアはプリロール時間なしに、対応するフレームを即座にディスクからロードしてくれます。一般的なレンダリング時間は大体2秒前後になります。(システムパフォーマンスによって変化します)


速度を視覚化する

キャッシュとして保存したパーティクル情報には、位置や速度があります。

PRT Loaderではパーティクル位置歯確認できますが 速度はどのように見ることができるのでしょうか

PRTローダー選んでビューポートロールアウトを見て下さい。 Display As Large Dotsのドロップダウンにはパーティクルをドットの代わりにラインで表示するDisplay Velocitiesというオプションがあります。

このオプションP Fライン表示モードていますが、Display Velocitiesは我々内部のベンチマークによると、およそ30いパフォーマンスを発揮します

○これでパーティクルどれくらい速く動いているか確認できるようになりました。ライン片方の端は現在のパーティクルの位置を表し、もう一方の端は速度ベクトルに基づき次のフレーム位置を示します

krakatoa15_prtloader_displayvelocities


パーティクルアニメーションのタイミングを変更する

これまで、PRT LoaderはオリジナルのPFの位置と速度を正確に示してきました。しかしPRT Loaderのもっともパワフルな能力の一つは、ストアされた位置と速度の情報に基づき、パーティクルアニメーションのタイミングを変更できることです。

●パーティクルシステムを逆再生してみましょう。

そのためにはまずPRT LoaderTimingグループコントロールでGraph [a]オプションを有効にしなければなりません。そう するとそれまでビューポートで速度を表示していたラインが消えたことに気づくでしょう。 これグラフスピナーまだアニメ―トされていないためですべてのパーティクルはすべてのフレームで、0フレーム目をプレイバックしています。明らかに、パーティクル動いておらず結果として速度0までスケールダウンされます

パー ティクルまだそこあるのを確認するために、再び表示Display As Large Points戻すことができます。ただ、タイムスライダを動かしてもパーティクルは動くことなく、ビューポートに表示されているティーポットは何も変更されません。

GraphFrame Offsetスピナ 右側ボタンがあるので、それを押してCreate LINEAR Playback Keysを選択してください。タイムスライダー動かすとアニメーションこれまでのように再生されます。しかし今回は、シーンの時間はGraphスピナーセットされるキーフレーム以外では変更されません。 フレーム0に値が0、100に値が100のリニアキーが作られました。

ボタンをもう一度押してINVERT Existing Animationを選択しますこれ単にPlayback Graphコントローラすべてのキー逆にします。結果として、フレーム100値0フレーム0値100キーなります。タイムスライダを動かすと、アニメーションが逆再生されるのを確認できます。

他のアニメーションスタイルのプリセット適用することができます。例えばメニューからCreate PINGPONG Playback Keys選ぶ(す でにあるキーを置き換えて)3つキーセットします。 1つ目はフレーム0に値0、2つ目はフレーム50に値100、3つ目はフレーム100に値0となります。再生すると、ティーポットは50フレームに向かって吹き飛び、100に向かって再結合します。PRT LoaderDisplay Velocitiesを有効にするフレーム45あたりのラインもっとも速いことに気がつくでしょう。 これ爆発半分の時間で行われるため、2倍の速度になるからです

もちろん3dsMaxアニメーショントラックビューツール使用しGraphス ピナーで手動でどんなキーでもセットすることができます。これはクラカトアのとてもパワフルな特色で、これにより一度キャッシュに取った後、アニメーションをツイークすることができます。


レンダリング時に速度を使用する

キャッシュとして保存された速度情報は上述のようにタイミングを変更するだけでなく、主にレンダリング時にモーションブラーをかけるためにも役立ちます。

クラカトアは一度パーティクルの照明を計算する内臓のモーションブラーを提供してくれます。それらは複数の軌跡を描き、最終的なイメージに結合してくれます。

クラカトアGUIMain ControlsロールアウトでMotion Blurにチェックを入れてください。

Motion Blur Segmentsを4にセットし、Shutter Degreesを180.0(3ds Maxでのシャッター値で0.5に相当)のままにしてください。

PRT LoaderGraphモー ドでPINGPONG Keysに設定したまま、時間スライダーフレーム32の方へ動かしてレンダリングしてください。レンダリング時間は増えます。一度だけライティングを計算するのに数分かかります。モーションブラーなしで2秒かかる場合、4パスを計算するモーションブラーは約7秒かかります。これは100万のライティングされたパーティクルを400万描画するのと同じです。

krakatoa15_savingparticles_1m_frame32_mb4_180

●それでは、Shutterを3603ds Max でのシャッター値で1.0に相当に増やしてください。Shutterスピナーの隣にあるプリセットボタンをクリックしてリストから360を選択してください。

●レンダリングすると、パーティクルパス同士の距離がピクセルよりも大きいため、明らかなバンディングが現れます。

krakatoa15_savingparticles_1m_frame32_mb4_360

●レンダリング時間を増やすことなくこのバンディングを消す唯一の方法は、Jittered Motion Blurオプションを有効にすることです。パーティクルは速度ベクトルに沿ってランダムにジッターがかけられ、ノイジーで画一的にならない絵を生産します。

krakatoa15_savingparticles_1m_frame32_mb4_360_jitter

Segmentsの数を8に増やすこともできますが、その場合はレンダリング時間が約12秒に増えます。

krakatoa15_savingparticles_1m_frame32_mb8_360_jitter