High Particle Counts

多数のパーティクル

 

今回は書いている内容がちょっと難しくて直訳になっているところが多くなっています。すいません…。

これまでの例はクラカトアの力と柔軟性の表面をさらっただけにすぎませんでした。すでに学習した基本的なテクニックに基づき、このセクションではさらなるテクニックとして、ボリューメトリックパーティクルのレンダリング能力を最大化する方法を紹介していきます。

 

3dsMaxの最大パーティクル数

最良のケースとして、3dsMaxの内部レンダラでレンダリングするためには、1パーティクルあたり少なくとも1つのジオメトリ面を必要とし、典型的な面パーティクルでは2つのジオメトリ面が必要となります。そのため32ビットOSでは、パーティクル数は2~300万で性能的な限界に達します。一方クラカトアはレンダリングにジオメトリ面を必要とせず、かわりに各々のパーティクルの位置情報や、ボクセルグリッドのパーティクル情報を記録し、メモリを効率的に使うことで、空間をスライスした面を1度にレンダリングすることができます。この方法により、32ビット版3dsMaxでは1000万パーティクル以上のレンダリングを可能にします。

クラカトアの利点をフルに活用するため、いったんパーティクルが望むような動きになったら、パーティクル数を上げ反復計算をしないようにパーティクルをファイルシーケンスに保存しすることができます。

現在では以前までのクラカトアなしで可能だったときよりも大きなシーンを構築することが多く、そうなると特定のエフェクトでは少なくとも1億パーティクルは必要になるかもしれません。3dsMaxに拘束されるメモリとプロセッサは、そのような多くのパーティクルを一度に計算できません。このような制限を超えるには、クラカトアでより多くのパーティクルを得る方法を考え出さなければなりません。

パーティクルフローの内部的な働きや一般的なパーティクルシステムの性質を考えることで、我々が必要とするものを得るための直観的な方法を見出だしてていくことができます。同一パーティクルシステムにおける複数のパスは、パーティクル数を増加させるのに使うことができます。同じドリブンイベントの法則がそれぞれのパスに従っているならば、パーティクルは同じように動き、全体的な密度を上げるためクラカトアレンダラの中で以前のパスと合成されます。これがこのコンセプトワークのために必要な、コントロールされたバリエーションをパスに与えてくれるテクニックです。

 

ランダム数のシード値を増加させる

PFはパーティクルの動きにバリエーションを持たせるため、疑似乱数を使用しています。結果を変更するため、異なるシード値を与えて乱数計算を変えることができます。これはいくつかのPFオペレータにあるシードというパラメータで変更できます。もっとも一般的に使われる乱数は位置、速度、スポーンです。一般的には位置シードはエミットされるパーティクルの初期位置を変更します。速度シードは速度に変化を持たせます。スポーンシードは生成や継承された速度に影響を与えます。PFイベントのデザインを分析することで特定の乱数シードを変更し、レンダリングに加えるさらなるパーティクルを計算することができます。

クラカトアはこれをパーティショニングと呼び、このプロセスを簡略化する便利なツールを提供してくれます。

krakatoa_speed_seed

 

パーティクルパーティションを作成する

パーティショニングはパーティクルシステムに少ない変化を持たすためや、複数パスにおいてパーティクル数の密度を上げるために使われるテクニックです。クラカトアのParticle Partitioningロールアウトでクラカトアレンダリングの新しいパーティションを簡単にセットアップすることができます。デフォルトでは、このロールアウトは完全にグレーアウトされ、Save Particles to File Sequenceモード時に有効になります。クラカトアはSave Particlesモードに切り替えると、パーティションを使用するだろうと仮定し、Particle Partitioningロールアウトを自動的に開いたり閉じたりしてくれます。この設定はPreferencesロールアウトでオンオフを切り替えられます。

krakatoa15_partitions


1. PartitioningロールアウトのIncrementボタンでどのシードを変化させるか選択します。位置、スポーン、速度、回転などです。デフォルトでは、すべてのオプションが有効になっていて、セットアップが影響を受けないよう特定のシードを必要としない限り、その方法で残されるべきです。

2. このロールアウトは、ワークステーションのプロセス処理のためと、ネットワークでパーティショニングするための(Frantic Films社のDeadlineがインストールされている場合のみ)、2つのコントロールセットを提供することに注意してください。

3. 作成したいパーティションの数をPartition Countスピナーに入力してください。デフォルトでは10に設定されています。Partition Range FromToは使いません。これはパーティションシーケンスのサブセットを作成するときのみに使用します。そのかわりすべて10個作成します。

4. Save Particles To File Sequenceグループのコントロールリストが妥当なパーティクルファイル名かかくにんしてください。

5. LocalグループのGenerate All Partitions Locally…ボタンを押してください。クラカトアはパーティクルのプロセス処理を始め、2つのプログレスバーが表示されます。1つは現在のパーティションの進行で、もう1つは全体的な進行を表しています。それはプロセスが終了するまでの時間と経過のリストでもあります。プロセスをキャンセルしたい場合は、ESCキーを押すだけです。

 

複数ファイルをレンダリングする

クラカトアの利点をフルに活用するためには、1000万や1億個のパーティクルをレンダリングすることになると思われます。そのようなレンダリングするためには、パーティクルを計算してキャッシュし、複数のパーティションをディスクに保存し、クラカトアに読み込んでください。

それらの複数ファイルをレンダリングするには、

1. Particle LoadersロールアウトのCreate New Loaderボタンを押し、以前のチュートリアルで説明したようにParticle Loaderを作成してください。

2. ファイルシーケンスを聞かれた場合、前のステップで作成したいずれかのパーティションファイル(例えばparticles_part01of10_0000.prt)を選択してください。クラカトアは選択されたファイル名が適切なパーティションシーケンスであるか、10シーケンスの1つであるか確認します。そして選択した1つをロードするか、10個のすべてのパーティションをロードするか聞かれます。Yesを押すとPRT Loaderは前のステップで作成された10個のパーティションと一緒に実装されます。

注:クラカトアで保存されたパーティクルファイルは自動的にファイルネームに4桁の数字が足されます。レンダリングするためにパーティクルファイルを選択する際は、それぞれのシーケンスで1つのファイルを選択する必要があります。そうするとクラカトアはレンダリング時に適切なフレームをロードしてくれます。

3. リストされたファイルをロードするためQUICK RENDERをクリックして、パーティクルを合成し集積された結果をレンダリングしてください。

 

パーティクル数を制限する

Particle Loaderはファイルシーケンスからロードされるパーティクル数を制限したり、PRT Loaderで特定されたパーティションファイルシーケンスのうちどれがビューポートやレンダラで現れるようにするかを決定したりします。

PRT Loaderのすべてのファイルシーケンスは名前の前にv とrの2つの文字がついています。ViewportとRenderの2つのチェックボックスはこの2つの文字に相当しており、ビューポートやレンダラーでどのファイルシーケンスグループをオンオフするかをチェックできます。また、Preferencesダイアログにオプションがあり、PRT Loaderが1つめのファイルシーケンスのみをビューポートで表示させ、すべてのファイルシーケンスをレンダラーで表示させることもできます。この方法では、ビューポートでは1つのパーティションがロードされ、レンダリング時には10倍のパーティションがレンダリングされます。テストレンダリングでたくさんのパーティションのうちの1つをレンダリングしたいときは、ほかのすべてのパーティションのRenderチェックボックスを一時的にオフにしておくことができます。

もしくは、RenderのPercent[a]で100未満の値を入れ、ロードされるパーティクルのパーセンテージを選択することもできます。名前の隣の[a]はパラメータがアニメ―トできることを示しており、時間によってレンダリング数をキーフレームで変更することもできます。また、Limit (x1000)とセットすることによりパーティクルの最大値を設定することができます。これはレンダリングするコンピュータの実装メモリの制約の中で、パーティクル数を保つのを制御する手段として提供されます。デフォルトではパーティクルは初めのシーケンスからレンダリングされ、制限に達するまで読み込み続けられます。これはクラカトアがすべてのファイルからロードしたり、Load First N ParticlesをLoad Every Nth Particleに切り替えることにより代表的な結果を作るため、それらを一様にサンプリングしたりするように変更できます。