未来を創る、テックコミュニティー

代表技術通信~Unityのことをちゃんと勉強する⑦ 点群に関する論文

草場代表
2020/10/04

こんばんは。代表の草場です。

unityが動かなくなり、ニッチもさっちもいかず。取り急ぎ、点群の扱いに関する論文を眺めています。「Rendering Large Point Clouds in Unity」です。

この論文では、ゲームエンジンUnityで点群レンダラーを開発しました。 ここでは特に、数百万点から数十億点の非常に大きな点群に焦点が当てられており、単にメモリに完全にロードして表示することはできません。 特別なデータ構造とアルゴリズムを使用して、いつでも現在のカメラ位置に関連するポイントの部分だけをロードしてレンダリングする必要があります。 その結果、可変設定と異なるレンダリング方法で効率的にレンダリングを行うことができます。 プロジェクトはGitHubで公開されています。

 

ふむ、期待。

実装されているレンダリング システムはスタンドアロン アプリケーションではなく、他のアプリケーションを構築するためのフレームワークを提供します。 レンダリングされた点群を選択したり、設定を変更したりするための専用のユーザーインターフェースはありません。 これらのオプションはすべて Unity コンポーネントによって定義されているため、Unity エディタ内で、またはコードを使用して変更することができます。 図3.1は、Unity Game Objectに複数のスクリプトコンポーネントを添付し、レンダリングオプションと点群へのパスを定義した例を示しています。
点群セットを定義することができ、点の予算、最小ノードサイズ、キャッシュサイズなどの読み込み設定を制御します。 これらの設定については3.2節で説明します。 このような点群セットは、図3.1にPoint Cloud Set Real Time Controllerというコンポーネントで見ることができます。 1つの点群をロードするためのローダーコンポーネントと、複数の点群を一度にロードするためのローダーコンポーネントがあります。 例えば、Clouds From Directory Loaderは、指定されたパス内のすべての点群をロードするために使用することができます(これは前述の図にも示されています)。 点群セットをローダに割り当てる必要があるので、ローダはロードされた点群を点群セットに渡すことができ、実際のレンダリングプロセスが開始されます。
ローダとポイントセットを分離することで、シーンに複数の点群を含めることができますが、オプションはすべての点群に対して一度に定義されます。 これにより、各ポイントクラウドに独自のバジェットを持つのではなく、すべてのポイントクラウドに1つの共有ポイントバジェットを定義することが可能になります。

うー、わからぬ。日々勉強です。

非常に雑ですがまた明日。

 

 

この記事を書いた人
草場代表
エディター