PLATEAUの地形は、建物や橋梁はありますが木がありません。
Omniverse Createでは大量の形状を配置する「Paint Tool」という機能があります。
これを使ってみましょう。
Omniverse Create 2022.1.3を使用しました。
その前に、このPLATEAUの全ポリゴン数はいくつくらいでしょうか?
Stageの全Meshのポリゴン数を計算
PLATEAUのLOD2+LOD1の東京23区をインポートしました。
LOD2の建物が密集しているあたりは以下のようになっています。
Pythonスクリプトで計算してしまいます。
以下のスクリプトをScript Editorにコピー&ペーストして実行します。
https://github.com/ft-lab/omniverse_sample_scripts/blob/main/Scene/GetAllFacesCount.py
面数は52072353と表示されました。
USDの場合は、面(ポリゴン)は三角形ではありません。多角形でも1つの面となります。
5200万ポリゴンで比較的大きなシーンと言えます。
ここに木を追加すると一気にポリゴン数が増えることになります。
Paint Tool
https://docs.omniverse.nvidia.com/app_create/prod_extensions/ext_paint-tool.html
それでは木を生やしていきます。
東京23区は広いですので、東京タワーの周りを対象にしましょうか。
左のメニューより「Paint」を選択します。
プリセットtreesを選択
Paintウィンドウの「Paint Library」ボタンをクリック。
「trees」をダブルクリックします。
これで木のプリセットがペイントの要素となります。
「Paint Settings」ボタンをクリック。
Brushの「Paint」が選択されているのを確認します。
Viewportで木を生やしたい場所でクリックすると、木が配置されました。
木は配置のたびにランダムにサイズ変更されます。
ブラシサイズを変更
デフォルトでは範囲が狭いため、Sizeを1000.0(cm)としました。
ペイントしていくと以下のようになりました。
ペイントで配置した木を消したい
Brushで「Erase」を選択してクリックすることで、木を消していくことができます。
または、「Paint」時にShiftキーを押すことでEraseに切り替わります。
ドラッグでペイントをしていきたい
「Stamp Interval」の値を小さくすることで、ドラッグしたときに木を次々に配置していくことができるようになります。
一定の距離がドラッグされたときにペイントしていくようです。
「Stamp Interval」を0.8としました。
以下はドラッグしたときの動画です。
このように木を追加していきました。
時間を変化させると以下のようになりました。
RTX-Interactive(Path-Tracing)です。
太陽の向きが変わった瞬間は(得に木が)ぼやっとしてます。
Path-Tracingでもわずかに待つ必要があるようでした。
Stageの全Meshのポリゴン数を計算(木を配置した後)
では、木を配置後のポリゴン数を計算します。
以下をScript Editorで実行します。
https://github.com/ft-lab/omniverse_sample_scripts/blob/main/Scene/GetAllFacesCount.py
面数は77537842と表示されました。
東京タワー周辺の木々の配置だけで2000万ポリゴン以上増加しました。
これでもまだまだRTX-RealTime/RTX-Interactive(Path-Tracing)でリアルタイムに動作します。
確認したところ、数億ポリゴンでも問題なしでした。
これは、木自身は2本を使いまわしており、PointInstancerという仕組みがUSDで使われているから最適化された配置と言えます。
(内部的には点群で1つ1つの木々が表現されてます)
Omniverse標準の三角形数/頂点数の取得機能
2022/06/28 追加。
Stage全体の三角形数や頂点数を表示する標準機能があるというのを教えてもらいました。
メインウィンドウのWindow-Utilities-Statisticsを選択します。
Statisticsウィンドウが表示されます。
「Scope to display」で「RTX Scene」を選択すると、
「Total visible triangles for all mesh instances」に総三角形数が表示されます。
「Total visible vertices for all mesh instances」に総頂点数が表示されます。
今回はここまでです。
次回もPLATEAUを使っていきます。