LiDAR Point Cloud プラグイン を使用すれば、Unreal Engine で点群をインポート、視覚化、編集することができます。このプラグインでは、配色およびシェーディングのさまざまな手法もサポートされています。複数の最適化および動的 LOD (詳細度) スケーリングが提供されているので、ランタイム時でもパフォーマンスが大幅に低下することなく、大規模なデータセットを扱うことができます。
サポートされている点群ファイル形式
点群 は、各ポイントがその XYZ 座標で定義されていて、必要に応じて色も定義されている、データ ポイントのセットです。Unreal Engine では以下の点群ファイル形式がサポートされています。
拡張 | 説明 |
---|---|
*.xyz , *.pts , *.txt |
次のいずれかが入っている ASCII 文字の点群ファイル形式の一般的なタイプです。
浮動小数点表記 (例:0.00892855) または科学的記数法 (例:8.92855E-03) のいずれかを使用できます。 |
*.las , *.laz |
LAS は、3 次元の点群をユーザー間でやり取りするための公開されているファイル形式です。主に LiDAR 点群データのやり取りのために策定されていますが、この形式ではあらゆる 3 次元の X、Y、Z タプルのやり取りがサポートされています。このバイナリ ファイル形式は、独自のシステムおよび汎用 ASCII ファイル交換システムの代替手段であり、広く使用されています。 LAZ ファイルは圧縮されている LAS ファイルであり、ファイル サイズははるかに小さくなりますが、インポートにかかる時間は相対的に長くなります。 Unreal Engine では、8 ビット、12 ビット、16 ビットの LAS/LAZ ファイルがサポートされています。 |
*.e57 |
E57 は、点群、画像、メタデータなどの 3D イメージング データを格納およびやり取りする、オープンソースのコンパクトなファイル形式です。 |
点群をインポートおよびエクスポートする
点群アセットを インポート するには、次のいずれかの方法を使用します。
-
サポートされているファイル形式で保存されている点群を コンテンツ ブラウザ にドラッグする。
-
コンテンツ ブラウザ で、[Add/Import (追加/インポート)] をクリックしてから、目的のファイルに移動して選択する。
インポート時に、メートル単位から Unreal 単位 (UU) に変換されます (1 UU = 1 cm)。カスタム インポート スケールを使用するには、LiDAR 点群プラグインの [Project Settings (プロジェクト設定)] を開いて、[Import Scale (インポート スケール)] の値を変更します。
既存の Unreal Export ツールを使用して、点群アセットを ASCII または LAS ファイルに エクスポート することができます。コンテンツ ブラウザ で、アセットを右クリックして、[Asset Actions (アセット アクション)] > [Export (エクスポート)] を選択します。
エクスポート時に、Unreal 単位からメートル単位に変換されます (値に 0.01 が乗算される)。カスタム エクスポート スケールを使用するには、LiDAR 点群プラグインの [Project Settings (プロジェクト設定)] を開いて、[Export Scale (エクスポート スケール)] の値を変更します。
パフォーマンス
パフォーマンスは、主に グローバル ポイント割り当て によって決まります。この値では、同時に表示可能なポイントの最大数が設定されます。コンポーネントごとの割り当てではなく共有割り当てを使用すると、システムによってすべての可視コンポーネントから最適なポイントが選択されるので、多数のアセットを同時に効率的にレンダリングできます。ポイント割り当てが大きいほど、品質およびパフォーマンス コストが向上します。グローバル ポイント割り当てを使用すると、VRAM 使用量が減り、フレームレートが向上しますが、全体的な RAM 使用量は減りません。
グローバル ポイント割り当てを設定するにはコンソール変数を使用します。ポイント割り当てが大きいほど、点群の密度が高くなります。
詳細については、「LiDAR 点群プラグイン リファレンス」ページのコンソール変数のセクションを参照してください。
オンデマンド ストリーミング
点群を開くときに、Unreal Engine は必要なヘッダ情報のみをロードし、必要に応じて実際のバルク データをストリーミングします。これにより、アセットが迅速にロードされ、RAM の総消費量が少なくなります。
新しくインポートされたアセットはシステム メモリに保持されるので、それが保存されるまではストリーミング機能で利用することはできません。アセットが保存されると、エディタはそのアセットに使用されていたメモリを解放します。
多数の点群ファイルをエンジンにロードする場合は、点群データを解析するとき、および Unreal Engine アセットとして処理するときに、依然として大量の RAM が必要になります。一例として、モントリオール市が公開している次の LiDAR データを Unreal Engine にロードする場合の、パフォーマンス指標を以下に示します。
個々の LAS ファイル | 約 684 個のタイルで、ディスク上の総サイズは 253 GB |
Unreal Engine での RAM 使用量 | 100 万ポイントの割り当てで約 3.5 GB |
フレーム レート | 120 fps、グローバル割り当て数は 100 万ポイント |
ポイントの総数 | 1 km x 1 km のタイルあたり平均 1430 万ポイント * 632 ファイル = 約 89 億ポイント |
クリッピング ボリューム
表示するのはデータの一部のみであるが、残りのデータを削除しない場合は、LiDAR Clipping Volume アクタを使用できます。LiDAR 点群プラグインが有効になっていれば、このアクタは [Place Actor] > [Volume] > [Lidar Clipping Volume] にあります。
クリッピング ボリュームのプロパティは、その [Details] パネルで設定できます。
[Modes] では、次の 2 つのいずれかを選択します。
-
Clip Outside (外側をクリッピングする):クリッピング ボリュームの外側にあるすべての点群データを非表示にします。
-
Clip Inside (内側をクリッピングする):クリッピング ボリュームの内側にあるすべての点群データを非表示にします。
1 つのレベルで最大 16 個のクリッピング ボリュームを使用できます。オーバーラップしているボリュームがある場合、[Priority (優先度)] 設定を使用して、どのボリュームが優先されるかが判断されます。
ランタイム時にデータを変更する
LiDAR Point Cloud プラグインでは、パッケージ化されている実行可能ファイルも含めて、ランタイム時にデータを挿入、削除、変更することがサポートされています。
それを行う際に留意すべき考慮事項を以下に示します。
-
挿入されるデータはアセット境界内にある必要があります。そうでない場合、LOD システムと干渉します。
-
ポイントを移動しても、そのポイントは隣接する LOD に再配置されないので、ポイントをあちこちに動かしすぎないようにすることをお勧めします。
-
多数のポイントを複数回挿入すると、LOD 生成で大量のリソースが消費されることがあります。
上記の問題を軽減するには、必要な数よりはるかに大きい境界 (例えば、各軸で 100,000) で点群アセットを初期化し、プラグインの [Project Settings] にある [Max Bucket Size (最大バケット サイズ)] 設定を非常に大きい数値 (例えば、1,000,000,000) に設定することで、実質的に LOD システムを完全に無効にします。