LiDARとは何か — 点群データから3Dモデル生成までを理解する
LiDARとは
LiDAR(Light Detection and Ranging)は、レーザー光を照射してその反射時間から距離を計測するリモートセンシング技術。日本語では「光検出と測距」と訳されるが、要するに「レーザーで測る3Dスキャナー」。
自動運転車の屋根についてる回転するセンサー、iPhoneの背面カメラ横の黒い丸、測量士が三脚に据えてる機材——これらは全部LiDAR。用途とスケールが違うだけで、原理は同じ。
LiDARの仕組み
基本原理
- レーザー光(主に近赤外線)を対象に照射する
- 反射して戻ってくるまでの時間を計測する
- 光速×時間÷2 = 距離を算出する
- これを大量のポイントで繰り返し、3D座標群(点群)を生成する
主な計測方式
dToF(direct Time of Flight)方式 レーザーパルスを発射し、反射光の往復時間を直接計測する。長距離(数百m〜数km)に強い。産業用LiDARやiPhone ProのLiDARはこの方式。
iToF(indirect Time of Flight)方式 変調した連続光を照射し、反射光の位相差から距離を算出する。短距離(〜5m程度)で高解像度。一部のデプスカメラに使用。
三角測量方式 レーザー光をカメラで撮影し、照射角度と撮影角度の三角関係から距離を算出する。非常に高精度(±0.01mm〜)だが、測定範囲が狭い。卓上型3Dスキャナーに多い。
LiDARの種類と価格帯
ホビー・エントリー(4万〜15万円)
3DMakerpro Seal Lite、Revopoint Miniなど。卓上で小さい対象物(〜50cm程度)をスキャンする用途。繰り返し精度±0.1mm程度。個人の3Dプリンティング用途に。
ただしこれらは厳密にはLiDARではなく構造化光(ストラクチャードライト)方式のものが多い。レーザーパターンを投影してカメラで歪みを読み取る仕組み。
プロ向けハンドヘルド(15万〜200万円)
Creaform Go!SCAN、Shining 3D EinScan HXなど。デザインスタジオ、製造業の検品、リバースエンジニアリング用途。0.3〜2mの対象物を高精度にスキャン可能。
据え置き型・測量用(500万〜1,200万円)
Leica BLK360(約280万円〜)、Leica RTC360(約1,300万円)、Trimble X12など。建築・土木・文化財記録のプロ仕様。±2〜4mmの精度で、半径数十〜数百mの範囲をスキャン可能。
航空・ドローン搭載(150万〜数千万円)
DJI Zenmuse L3など。地形測量、森林調査、災害調査に使用。植生の下の地形も透過して計測できるのがLiDARの強み。
スマートフォン搭載(端末価格に含まれる)
iPhone Pro系、iPad Proに搭載。dToF方式で最大5m程度の範囲。精度は産業用と比べると桁違いに低いが、ARやMRの空間認識には十分。
iPhone LiDARの実力
スペック
- 方式: dToF(direct Time of Flight)
- 範囲: 最大約5m
- 用途: ARKitの空間認識補助、深度マップ生成
ARKitで取得できるデータ
深度マップ(Depth Map) 各ピクセルに対応する距離情報。ARFrameから取得可能。
特徴点群(Feature Points)
ARFrame.rawFeaturePointsで取得できる疎な3D点群。空間の特徴的なポイントのみ。
シーンメッシュ(Scene Reconstruction) ARKitのScene Reconstructionを有効にすると、リアルタイムでポリゴンメッシュを生成。部屋全体の大まかな形状を取得できる。
実際の品質
- 30cm〜1mくらいのフィギュア → 形状はそこそこ取れるが、顔の細部や小さいパーツは潰れる
- テクスチャはカメラ画像依存なので、照明次第でそれなりに綺麗
- 「遠目で見ればわかる」程度の品質が現実的な期待値
重要な事実
Scaniverseのような3DスキャンアプリはLiDAR単体でスキャンしているわけではない。実際にはカメラ画像からのフォトグラメトリ(Neural Reconstruction / 3D Gaussian Splatting)がメインで、LiDARはスケール合わせと追跡精度の補強に使われている。
Meta Quest 3の深度センサー
Quest 3にも深度センサー(LiDAR)が搭載されているが、用途はMRのための空間認識に特化している。
- パススルー映像の深度推定
- 自動ガーディアン境界設定
- 平面検出(plane detection)
- 空間メッシュ生成
3Dスキャナーとして使おうとするアプリも存在するが、現時点では「ぼんやりしたボクセルの塊」レベル。フィギュアスキャンにはiPhone LiDAR+Scaniverseの方がはるかに上。
LiDAR vs フォトグラメトリ
ここが最も重要なポイント。
フォトグラメトリとは
複数アングルから撮影した写真をソフトウェアで解析し、3Dモデルを再構築する技術。LiDARのようなセンサーは不要で、普通のカメラやスマホで撮影できる。
比較
| 項目 | LiDAR | フォトグラメトリ |
|---|---|---|
| 計測方式 | 能動的(レーザー照射) | 受動的(写真撮影) |
| 精度(産業用) | ±1〜5mm | ±5〜15mm |
| 照明条件 | 不問(暗所でも可) | 均一な照明が必須 |
| テクスチャ品質 | 低い(別途カメラが必要) | 高い(写真そのもの) |
| 大規模環境 | 得意 | 得意(ドローン併用) |
| 小物スキャン | 苦手(オーバースペック) | 得意 |
| コスト | 高い | カメラがあればほぼ無料 |
| 植生下の地形 | 透過可能 | 不可能 |
結論
フィギュアや小物の3Dモデル化が目的なら、フォトグラメトリの方が適している。Polycamの公式ドキュメントでも、オブジェクトモードではフォトグラメトリがLiDARキャプチャよりメッシュ品質が高いと明言されている。
LiDARが真価を発揮するのは、建物全体・暗所・植生下の地形など、カメラだけでは困難な条件下でのスキャン。
点群データを理解する
点群(Point Cloud)とは
3D空間上の座標(x, y, z)の集合。各ポイントに色情報(RGB)や法線ベクトルを持つこともある。LiDARスキャンやフォトグラメトリの生データがこれ。
なぜSketchfabに点群データがあるのか
測量・文化財記録の分野では、点群がデータの「正」である。メッシュ化すると情報が劣化する(穴埋めや間引きが入る)ため、あえて点群のまま公開・保存されることが多い。粒々に見えるあのデータは、精度を重視した結果。
主な点群フォーマット
| フォーマット | 特徴 |
|---|---|
| PLY | 頂点+色+法線。テキスト/バイナリ両対応。Three.jsのPLYLoaderで読める |
| LAS / LAZ | 測量業界標準。LAZはLASの圧縮版。GIS系ソフトで使用 |
| E57 | ASTM標準。大規模点群向け。メタデータが豊富 |
| PCD | Point Cloud Library(PCL)のフォーマット。ロボティクス寄り |
| XYZ | 最もシンプル。テキストで座標を羅列するだけ |
点群→メッシュの変換
点群をポリゴンメッシュに変換するには、点と点を結んで面を張る処理が必要。代表的なアルゴリズム:
- Poisson Surface Reconstruction: 点群と法線から滑らかな閉曲面を生成。穴埋めに強いが、境界がぼやけやすい
- Ball Pivoting Algorithm: 仮想的な球を点群上で転がして面を生成。穴が残りやすいが形状に忠実
- Delaunay Triangulation: 点群を三角形分割。2.5Dの地形データ向き
- Screened Poisson: Poissonの改良版。現在の主流
これらの処理はMeshLab(無料)やCloudCompare(無料)で実行可能。Blenderでもアドオン経由で対応。ブラウザJSでやるには計算量的にかなり厳しい。
Three.jsでの点群表示
点群データをThree.jsで表示するだけなら難しくない。
import * as THREE from 'three';
import { PLYLoader } from 'three/examples/jsm/loaders/PLYLoader';
const loader = new PLYLoader();
loader.load('model.ply', (geometry) => {
// 頂点カラーがあればマテリアルに反映
const material = new THREE.PointsMaterial({
size: 0.01,
vertexColors: true,
});
const points = new THREE.Points(geometry, material);
scene.add(points);
});
THREE.PointsはTHREE.Meshと違ってポリゴン面を持たず、頂点を点として描画する。大量の点(数百万〜)を扱う場合はLODやオクツリーによる間引きが必要になる。
スキャンアプリの比較
Scaniverse(Niantic)
- 価格: 無料
- LiDAR: 対応(補助的に使用)
- 出力: FBX, OBJ, GLB, USDZ, STL, PLY, LAS
- 特徴: 3D Gaussian Splattingに対応。手軽さでは最強クラス
Polycam
- 価格: 無料(エクスポートは有料プラン)
- LiDAR: 対応
- 出力: GLB, OBJ, FBX, USDZ, STL, DAE, PLY
- 特徴: フォトグラメトリモードの品質が高い。ドローン写真からの生成にも対応
3d Scanner App
- 価格: 無料
- LiDAR: 必須
- 出力: OBJ, PLY, STL, USDZ, GLB
- 特徴: 点群データ(PLY)のエクスポートに強い
Reality Capture(Epic Games)
- 価格: 有料(PPI方式)
- プラットフォーム: Windows
- 特徴: フォトグラメトリの業界標準。圧倒的な品質だが、PCと大量の写真が必要
Meshroom(AliceVision)
- 価格: 無料・オープンソース
- プラットフォーム: Windows / Linux
- 特徴: フォトグラメトリ。無料で使えるが、CUDA対応GPUが必要
実用的なワークフロー
フィギュアをスキャンしてWebやVRで閲覧するための現実的なフロー:
- 撮影: Scaniverseでスキャン、またはスマホで30〜100枚撮影
- メッシュ生成: Scaniverseで直接生成、またはMeshroom/Reality Captureでフォトグラメトリ処理
- クリーンアップ: Blenderでリトポ、不要な頂点削除、穴埋め
- テクスチャ: UV展開し直し→テクスチャベイク
- 最適化: ポリゴン削減、テクスチャ圧縮(WebP変換等)
- エクスポート: GLB形式+Draco圧縮
- 表示: Three.js / React Three Fiberで読み込み
ステップ3〜6はlain-labの既存ツール群(VRM Optimizer、GLTF Scale Tool等)の知見がそのまま活きる領域。
まとめ
- LiDARは「レーザーで3D計測する技術」の総称。価格帯は数万円〜数千万円まで幅広い
- iPhone LiDARはAR/MR用途には十分だが、高品質な3Dモデル生成には力不足
- 小物の3Dスキャンにはフォトグラメトリ(普通のカメラ)の方がむしろ向いている
- 点群データはメッシュの元データであり、測量分野ではメッシュより点群が正
- Three.jsで点群を表示するだけなら
THREE.Points+PLYLoaderで簡単にできる - 「点群→綺麗なメッシュ」の変換がボトルネック。ここはBlenderやMeshLabの領域