【要約】OCIのADBで点群から3Dメッシュ(ポリゴン)を生成し、OBJ形式でエクスポートして可視化してみた。 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
エンジニアが大規模な3D点群データを扱う際、データの移動や変換プロセスがボトルネックとなる問題に直面する。具体的には以下の課題が挙げられる。
- ・点群データを外部の3D処理エンジンへ転送する際のネットワークコスト。
- ・DBから抽出した生データを、可視化ツールが扱える形式へ変換する工程の分離。
- ・大規模な点群データを効率的に処理するためのインフラ構成の複雑化。
// Approach
筆者は、ADBのSpatial機能とDBMS_CLOUDを組み合わせ、DB内で全工程を完結させる手法を提案している。具体的なステップは以下の通りである。
- ・MDSYS.SDO_PC_PKGを使用して、入力表からHilbert R-tree形式の点群モデルを構築。
- ・MDSYS.SDO_TIN_PKG.CREATE_MESHESにより、点群から3Dメッシュ(TIN)を生成。
- ・PL/SQLを用いて、メッシュデータをOBJ形式のテキスト(頂点 v と面 f)に変換し、BLOBとして保持。
- ・DBMS_CLOUD.PUT_OBJECTを使い、生成したOBJファイルをOCI Object Storageへ直接アップロード。
// Result
この手法により、点群データの処理から可視化用ファイルの出力までをシームレスに行えるようになった。得られた成果は以下の通りである。
- ・データの外部転送を最小限に抑え、DB内の計算リソースを最大限に活用可能。
- ・MeshLabやBlenderなどの標準的なツールで即座に可視化できるOBJ形式での出力。
- ・Object Storageへの自動出力により、後続の可視化パイプラインとの連携が容易。
Senior Engineer Insight
> DB内で幾何学処理を完結させる設計は、データ移動のコストを抑える観点で非常に合理的だ。特に大規模な点群データを扱う場合、ネットワーク転送のオーバーヘッドは無視できない。ただし、本記事のOBJ変換ロジックは頂点を重複して出力するため、ファイルサイズが肥大化する懸念がある。実運用では、インデックスを共有する高度な変換ロジックや、メモリ管理を考慮した実装が求められるだろう。