Working with Populations(ポピュレーションの作用)


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

紹介

TGのProfessional、Creative版では、無限のポピュレーションを作成する事が出来ます。Free版は3ポピュレーションに制限されます。
この解説では、ポピュレーションノードのすべての具体的な設定を扱う訳ではありません。より詳しい内容はPopulationノードの項目を参照して下さい。

ポピュレータの基礎

各ポピュレーションノードは1つのオブジェクトを処理します。ポピュレーションは多くのオブジェクトのコピーをシーン上に追加する事が出来ます。非常にメモリ効率的な方法でこれを行います。全オブジェクトが一度メモリに保存されるだけです。数百万個の個別のオブジェクトを使用されるものに比べ、相対的に少ない余分なメモリを使用する事で何百万、数十億ものオブジェクトのコピーをシーンに追加する事が出来ます。ポピュレーションは作成するオブジェクトのコピーを"インスタンス"と呼びます。

各ポピュレーションは特定の領域をカバーするように設定されています。ポピュレーションは設定された間隔とランダム性のパラメータに応じて、この領域にインスタンスを作成します。デフォルトでは、ポピュレーションは完全なランダムパターンでインスタンスを配置しますが、規則的なグリッドによる完全なランダムなため、どんなものでコントロールする事が出来ます。

ポピュレーションは設定された限度内でランダムに拡大縮小、回転させる事が出来ます。これはポピュレーションによる多様性とリアリズムを創り出す事に役立っています。ポピュレーションは横たわる地形の斜面に沿ってインスタンスを傾かせる事も出来ます。

ポピュレーションは作成時にインスタンスが地面に接地するよう自動で設定されています。これはポピュレーションの[ Anchor ]タブの中で" Sit on terrain (地面に接地)"が有効に設定されています。もしポピュレーションが不可解にも宙に浮いている事が判明した場合、この設定を確認して下さい。通常、" Sit on terrain "パラメータに地形グループ内の'Compute Terrain'ノードを関連づけしたいと思いますが、これらの設定で上手く操作する事で空中に舞う鳥のオブジェクトのポピュレーションを配置する事が出来るかもしれません。

ポピュレータの作成

ポピュレーションを作成するには、いくつかの方法があります。ポピュレータを作成する場合、通常はポピュレーションのために使用するオブジェクトの種類を選択します。例えば「OBJ Reader」を使ったインポートしたOBJモデルを使って、またはビルトインのRock(岩)やGrass Clump(芝生)などのオブジェクトを使ってポピュレーションを作成する事も出来ます。
あなたがポピュレータを作成するには、下記の方法があります:
  • メインウインドウ内の『 Objects 』プロジェクトビューの左上にある[ Add Object ]ボタンをクリックします。メニューを表示し、ポップアップメニューから" Population "を選択し、ポピュレートしたいオブジェクトの種類を選択します。
  • ファイルメニューからポップアップメニュー" Import Object "を使用します。オブジェクトタイプのポピュレーションを作成するために、" ~as Population "項目の1つを選択します。
  • ネットワーク・ビューをクリックしてポップアップメニューを表示し、" Create Population "から作成を行うオブジェクトタイプを選択します。
  • ライブラリウインドウを使用します。ライブラリウインドウ内でオブジェクトを選択する時、ウインドウ右下に2つのボタンが表示されます。選択されたオブジェクトを使ってポピュレーションを作成するために[ Import Population ]ボタンをクリックします。
  • ノード・パレットを使用し、希望するタイプのポピュレーションを作成する事が出来ます。
希望したタイプのオブジェクトノードが自動で作成され、ポピュレータノードに関連付けされます。このオブジェクトノードはポピュレータノードの内部ネットワークに作成されます。以下の方法でオブジェクトノードを参照する事が出来ます。
  • ポピュレーションパラメータビューを開きます。ノードパネルの「 name 」フィールド横にあるアクションボタンをクリックし、ポップアップメニューから" Edit internal network "を選択します。これはネットワークビューでオブジェクトノードを表示します。
  • ポピュレーションパラメータビューを開きます。ノードパネルの「 object maker 」パラメータの横にある割り当てボタン(十字アイコン)をクリックし、ポップアップメニューから" Go to~ "で参照するオブジェクトを選択します。これはフローティングウインドウでノードパラメータビューを表示します。
  • ネットワークビューのポピュレーションノードに移動します。内部ネットワークのアイコン(グレーの十字アイコン)をダブルクリックします。
あなたがディスクからファイルを読み込むオブジェクトタイプを使ってポピュレーションを作る時は、Open Fileのダイアログからファイルを選択する事が出来ます。もしファイル選択を今すぐ望まない場合は、ポピュレーションもオブジェクトノードも作成されず、ファイルダイアログは取り消すことが出来ます。ファイルの指定準備が出来ている場合は、ファイルを選択し、ポピュレーションのためのオブジェクトノードに移動します。

ポピュレーションすなわちインスタンスの作成

インスタンスを作成する過程をポピュレーションと呼ばれます。手動でポピュレートする事も、レンダリング時に自動で任せる事も可能です。

あなたがポピュレーション、またはそれに取り付けられたノード(例えばオブジェクトノードやdensity shader等)のいずれかでいくらかの設定を変更した場合、更新された設定に置き換えるために再ポピュレーションを行います。場合によっては長い時間がかかる事があるため、これは自動で行われません。ポピュレーションは対象が最新かどうかを絶えず注視しています。最新に更新されていない状態でレンダリングを開始した場合、TGは自動でポピュレートを実行します。

通常、3Dプレビューでポピュレーションを確認できるように、手動でポピュレートを行いたいと思います。以下に手動でポピュレートするための方法があります:
  • 個別に各ポピュレーションをポピュレートする事が出来ます。ポピュレータノードのパラメータビューには[ Populate Now ]のボタンを備えています。ボタンをクリックする事でポピュレーションを開始して下さい。
  • オブジェクトノードリストの下にある[" Populate All "]ボタン、またはプロジェクトメニュー内の項目" Populate All "のいずれかを使ってポピュレーションを行う事が出来ます。どちらの場合にも2つのオプションを備えています。" Needing update "は最新に更新されていないポピュレートだけをポピュレーションし、" Force update "はすべてのポピュレートをポピュレーションします。

ポピュレーションはポピュレータをすぐに完了させるために、ポピュレーション処理の間いかなるフィードバックも示しません。処理に時間が掛かる場合は進捗ダイアログを表示します。進捗ダイアログを取り消す事は可能であり、その経過まで作成されたインスタンスだけがポピュレーションに追加されます。注意すべきはレンダリングを開始した時、ポピュレーション処理を取り消した事で残りのインスタンスが作成されない事です。あなたは手動でポピュレートする必要があります。

『Populator v4』はインスタンス・キャッシュに対応しています。これはポピュレーションのインスタンスをファイルに一時保存する事で、ポピュレーションが次回読み込まれる際、キャッシュファイルからロードする事でインスタンスの再計算を代用します。キャッシュファイルの利用は、インスタンスの再計算より速い場合があります。あなたはここでインスタンスのキャッシュについての詳細をみつける調べる事が出来ます。

どこにインスタンスを出現させるかをコントロールします

デフォルトでは、ポピュレータは設定範囲のエリア内にインスタンスを作成しますが、インスタンスには出現する場所をある程度コントロールする機能を備えています。1つは"density shader"を使う方法です。ポピュレータはどれくらいのインスタンスの位置をポピュレーションの異なる部分に配置するかをコントロールするために、density shaderからグレースケール値を用います。

別の方法は、TG3で新しく追加されたPopulator v4を使う事で、手動でインスタンスの位置編集が可能となりました。インスタンスを移動、サイズ変更するだけでなく、削除も出来ます。あなたはここでインスタンス編集についての詳細を調べる事が出来ます。

インスタンスがより全体的、または広大なエリアに出現する場所をコントロールしたい場合、density shaderの使用は最良の方法です。例えば地形斜面が特定の角度以下の所のみインスタンスを出現させたい場合など。インスタンスを直接編集するのが細かくコントロールする最良の手段です。例えば、パスから離れたインスタンスを移動したり、重複防止のために移動させたい場合など。あなたは同時にこの両方の方法を使用する事が出来ます。

各ポピュレータは1つのオブジェクトだけを処理します。しかし同じエリアにいくつかの異なるオブジェクトを必要とする機会があります。混合樹林や高山草原など。あなたがオブジェクトに使用する詳細の[ Distribution(分布) ]を設定している場合、各ポピュレーションを同じdensity shaderを関連づける事が出来ます。これはまた、density shaderのパラメータを変更すると、関連づけられたすべてのポピュレーションに影響を与える事を意味します。

同じエリアをカバーする異なるポピュレーションのインスタンスが、互いに重複しない保証はありません。これを回避する方法の1つは、インスタンスを配置するために使用されるパターンを変更するために異なる"Seed"値を使って試す事です。他には" Spacing(間隔) "パラメータを試す事も出来ます。直接インスタンスを編集する事が出来るのが最良のコントロールです。

インスタンスを編集
あなたはここでインスタンス編集についての詳細を調べる事が出来ます。

Density Shaderを使用
ポピュレータはどれくらいのインスタンスの位置をポピュレーションの異なる部分に配置するかをコントロールするために、density shaderからグレースケール値を用います。density shader値が白いほど高密度で、黒いほど低密度でインスタンスが配置されます。中間値のグレーでは、まばらに配置されます。あなたはdensity shaderとして全種類のシェーダを使用して以下の事が出来ます:
  • サーフェスレイヤーと同様にインスタンスを出現させる高度と傾斜範囲をコントロールするために『 Distribution Shader 』が使用出来ます。これは海面下で作成されるインスタンスを抑制するためにも役立ちます。
  • 読み込んだ画像でインスタンスを出現させる位置をコントールするために『 Image Map Shader 』が使用出来ます。カラーイメージを使用する場合、ピクセルの輝度はグレースケール値に変換されて使用されます。
  • Painted Shader 』を使う事で、直接シーン内でペイントされたエリアにインスタンスを出現される事が出来ます。
  • カメラから一定の距離にインスタンスを作成するために『 Distance Shader 』が使用出来ます。
  • フラクタルパターンに基づいたてインスタンスを配布するために『 Power Fractal Shader 』が使用出来ます。カラーコントラスト設定を使う事で、ポピュレーションの密集のためのフラクタルパターンの密度をコントロールが出来ます。

別のシェーダを合併する事により、一度にこれらすべてのテクニックを使用する事が出来ます。まったくもって非常に広範囲の可能性があります。

実用Tips

あなたがポピュレータのために適切な設定を使用している事を確認して下さい。それを必要なだけの大きさに何とかしてみてください。あなたが各方向に2倍のポピュレーションでカバーするエリアを作る場合、4倍ものインスタンスが作成されるため、それだけの数が必要ないならば、ポピュレーションは大規模なエリアをカバーさせるのはよいアイデアではありません。

同じ事がオブジェクト間隔に当てはまります。オブジェクト間隔を半分(例えば10mから5m)にする事は、4倍多くインスタンスが作成される事を意味します。もちろんオブジェクトはこの点で多くの自由を持っていないため、シーンに応じて適切に間隔を置いて配置する必要がありますが、心に留めておいて下さい。あなたが草原を作るために小さな花のオブジェクトを使用していると想像して下さい。オブジェクトは非常に密接した間隔で配置され、ポピュレーションは広域をカバーして多くのインスタンスが作成されます。しかし、オブジェクトが小さいため遠く離れると見えないかもしれないので、あなたは遠くのオブジェクトを目立たせるため、適切に着色されたサーフェスレイヤーなどの他のテクニックを使用する事が出来るかもしれません。これこそがポピュレーションのエリアをぐっと小さくする事で可能となります。

TGは事実上非常に多くのインスタンスを扱う事が出来ますが、恐らくお使いのコンピュータは出来ません!インスタンスを大量に作成する事は、恐らくあなたのマシンで使用可能なメモリを使い果たす最も簡単な方法となるでしょう。もしOSが32ビット版であるなら、メモリ不足が起こりうり、レンダーエラーを引き起こす事に成りかねません。これが64ビット版であるなら非常に小さくなる可能性がありますが、実装RAMは使い尽くされ、仮想メモリが使われる事で動作が非常に遅くなる場合があります。TGは静止シーンをレンダリングしますが、それは非常に長い時間が掛かる事があります。同様に、あなたのシーンでポピュレーションを多用しているならば、これは重要です。

あなたが多くのインスタンス、またはもしも複雑な密度シェーダを持っているならば、ポピュレーションにインスタンスを再計算させるよりも、ンスタンスのキャッシュを使用する方がより迅速だと気づくでしょう。ここでインスタンスのキャッシュについて詳細を調べる事が出来ます。

「Populator node」にある"Clip to camera"のチェックボックスにチェックを入れる事で、現在のレンダーカメラのビュー内にあるインスタンスを作成するポピュレーションのみに働きかけます。これはポピュレーション処理の高速化を役立てる事が出来ます。欠点が一つ、あなたのシーンに反射性のオブジェクトがある場合、インスタンスが除外されていても反射によって見える場合があります。

もしカメラをアニメーション化し、"Clip to camera"の使用を必要とするならば、再ポピュレーションする度にフレームパラメータを確認する事をお勧めします。これはポピュレーションされた範囲が、カメラビューの移動に合わせて一致しているか確認する必要があります。しかし、一般的にカメラビューの端にインスタンスのポップインを引き起こす可能性があるので、"Clip to camera "の組み合わせを使用し、カメラの動作をアニメーション化している場合、すべてのフレームを再ポピュレーションするのはお勧めしません。これは今一度のみ行われるのではなく、すべてのフレームで発生するため、潜在的により少ないインスタンスをポピュレーションさせる恩恵の一部、または全部を否定し、ポピュレーション時間をも増幅させるでしょう。

「Distance Shader(距離シェーダ)」は、ポピュレーション範囲を制限する事に役立つかもしれません。「Distance Shader」にレンダーカメラを取り付け、ポピュレーションの「Density shader(密度シェーダ)」パラメータに「Distance shader」を関連付けます。これは「Distance shader」の許容以上に遠く離れてインスタンスが作成されるのを防止します。ポピュレーションが見込んだ反対の方法で、デフォルトで「Distance shader」が使用する色のために、ポピュレーションの"Invert density shader"パラメータにチェックを入れてみたいと望む事もあるでしょう。

これがどのように役立たせる事が出来るのか、一例としてあなたが濃霧のシーンを持っていると想像して下さい。例えばカメラから600mにポピュレーション範囲を制限するために距離シェーダを使用する事が出来ると、僅か数百メートル先がまったく何も見えなくなります。この方法の利点は、"Clip to camera"を使用しても、意にそぐわない反射によって存在しないインスタンスが表示される問題を回避する事です。

ポピュレーションノードの"Render quality(レンダー品質)"パラメータを使用すると、ポピュレーションがレンダリングされるディティールをコントロールする事が出来ます。レイ・トレース・オブジェクトをレンダーノードでオフになっている場合は、このパラメータのみ効果があります。TGはカメラから遠く離れたモデルのディティールレベルを減らす事が出来ます。このパラメータはどれだけの量のディティールを削減するかをコントロールします。低品質を使用する事でポピュレーションをより高速でレンダリングする事が出来ます。しかし品質が低いように思える場合は高品質を選択したいと思うでしょう。レイ・トレース・オブジェクトはTGの新しいバージョンのデフォルトで推して有効にしているため、現在この設定は頻繁に必要としません。

現在、ポピュレーションで非常に過密なジオメトリ(大量の微細なポリゴン)を持つオブジェクトを使用する時に問題を抱えています。あなたがオフにしたレイ・トレース・オブジェクトを持っている場合、カメラに近いオブジェクトからポリゴンが見えなくなった事に気づくかも知れません。この場合、ポピュレーションの"Render quality"の設定で高品質を選択しようとするでしょう。これは超高品質を選択するか、単純にレイ・トレース・オブジェクトを有効にする事が最良でしょう。

プロジェクト例

以下のプロジェクトはさまざまな方法でポピュレーションを使用する例として挙げています。これらすべてのプロジェクトには手軽なビルトインのRock(岩)オブジェクトを使用していますが、もちろん多くの種類のオブジェクトを同じ技法でで使用する事も可能です。ポピュレートをプロジェクトを開く時にポピュレーションさせる最も簡単な方法は、プロジェクトメニュー内のサブメニュー"Populate All(全ポピュレート)"から "Needing update(更新が必要)"を選択する事です。

プロジェクトは、プロジェクト設定のコメント欄でより詳細に説明されています。これを確認するために、メインウインドウ左下にある「Project Settings」ボタンをクリックして下さい。お使いのブラウザで開くのを防止するために、Windowsの場合は右クリックで、macの場合はoptionキー+クリックで「名前をつけてリンク先を保存(Win)」を選び、プロジェクトファイルのリンク先を直接ダウンロードして下さい。

■このプロジェクトはグリッド上にすべてのインスタンスを並べるポピュレーションを見る事が出来ます。
Media:Population_grid.tgd

■このプロジェクトは、「Distribution Shader(配布シェーダ)」によって制御されるインスタンスをそれぞれ有する2つのポピュレーションを持っています。
Media:Population_high_low.tgd

■このプロジェクトは、密度シェーダとして「Distance Shader(距離シェーダ)」を使用する方法を示しています。
Media:Population_distance_shader.tgd

■このプロジェクトは、密度シェーダとして「Painted Shader(描画シェーダ)」を使用する方法を示しています。
Media:Painted_shader_population_density.tgd