このページの本文へ

新清士の「メタバース・プレゼンス」 第41回

3Dスキャンの進化がすごい。今なら無料で高精度、しかも簡単!

2023年11月06日 07時00分更新

文● 新清士 編集●ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

3Dスキャン三銃士を連れてきたよ

 ではあらためて、3Dガウシアンスプラッティングとは何なのか。まず、近年の3Dスキャン技法は大きく3つに分かれます。

1. フォトグラメトリ

 1つはフォトグラメトリ(写真測量法)。2020年にiPhoneがLiDARセンサーを搭載したことで一気に普及した技術です。LiDARセンサーで3D化したい対象をカメラでスキャンするとそのままポリゴンデータにしてくれるというもの。3D上の扱いにしやすいというメリットがあるものです。

フォトグラメトリアプリの代表格Scaniverseで撮影した筆者宅の夕食のソーセージ。非常にきれいに撮れているが、ソーセージの一部がお皿と融合していたりと、弱点もある

 LiDARスキャンで動的に撮影し、Depthセンサーで奥行きを取る仕組みなので、精密ではあるものの、画面のクオリティに限界がありました。ポリゴンで扱うメッシュにしようとすると制約が出てきてしまうんです。たとえば細いものとかがきれいに取れないし、テクスチャーとして固定しないといけないので、メッシュ化しにくい水や反射などの要素も苦手でした。しかし現在でもiPad Proで測量に使われていたり、手軽に扱えることから応用範囲は広がり続けています。

2. NeRF

 その後、2020年に発表されたのがNeRF(Neural Radiance Fields・ニューラル放射場)です。100枚ぐらいの大量の写真から、ニューラルネットワークを使って、それぞれの点の座標情報とカメラの角度、光の輝度を計算し、それぞれの点でどう見えるかを合算してつくる仕組みです。一度処理が済んでしまえばカメラの角度を変えてもきれいに処理できるというもので、革命的な方法と言われました。2022年にNVIDIAが、より高速化したInstant NeRFを発表したことで大きく注目されました。Luma AIはもともと、このNeRFを手軽にサービス化することを目的として創業された企業です。

 NeRFは、画像のそれぞれの座標からどのように見えるのかを処理しているため、水や反射の描写も得意。食べものをスキャンしても半透明感がきれいに残っています。私の友人にVR系ベンチャーキャピタルのファンドマネージャーであるティパタット・チェナヴァシン氏がおり、彼は食道楽なのですが、世界を飛び回るなか、おいしそうな食べものの写真をNeRFで撮って回るのを趣味にしています。先月、彼が日本に来たときにコース料理を御馳走になったときも、3Dマーカーを置いて一品一品iPhoneを使って撮影をしていました(笑)。そのデータをあとからPCで処理してNeRF化しています。

▲イクラのツブツブ感や、光沢感は、フォトグラメトリではなかなか難しい

 ただしNeRFにも弱点があり、すべての点で計算して表示しているのですごく処理が重いんですね。リアルタイムで出すのも不可能ではないんですが、フレームレートが秒間最大10フレームとかになってしまい、レンダリングにも何時間も必要とするために時間がかかってしまうんです。そのため、基本的には動画を生成することはできるけど、リアルタイムで扱うには限界があるというものでした。

3. 3Dガウシアン・スプラッティング(3D Gaussian Splatting)

 そして、そこに入ってきたのが3Dガウシアン・スプラッティングです。これはNeRFよりも「手抜き」のアプローチなんですね。写真から見えるものを、ガウス状のデータをぶちまけることで……って何を言っているのかわからないですよね(笑)。

▲Luma AIが公開しているガウシアン・スプラッティングの手法で撮影された建物のデモ

楕円形形状のガウシアンの概念図。境界線の概念を持ち、中央部に近づくに連れて色が濃くなっていく

3つのガウシアンが重なっている状態の例(図はどちらもガウシアンスプレッティングを解説しているDylan Ebert氏の「Introduction to 3D Gaussian Splatting」より)

 3Dガウシアン・スプラッティングは、CGが三角形(ポリゴン)を使うように、楕円形であらわされるガウス関数(ガウシアン)を使います。ガウスはいわゆる正規分布のことで、中央部に向かうほど交点が集中する楕円形の図形であらわされます。写真のデータからおおよその座標を推定し、その点にガウシアンを撒き散らす(スプレッドする)。そうして写真から楕円形を大量に生み出して重ねていく。ガウスが重なる場所ほど細かく処理するルールにして、たくさん生み出していくわけです。これを繰り返すことで、ガウシアンの塊が結果的に立体物の形にみえるようになってくる、という仕組みです。

700万のガウシアンで構成された画像

不透明に着彩した図。ガウシアンの密度場が場所により違っており、それによりガウシアンのサイズも異なっていることがわかる(図はどちらもDylan Ebert氏の「Introduction to 3D Gaussian Splatting」より)

 フォトグラメトリに比べるとサイズの厳密性はなく、NeRFのように個々の座標からの見え方を厳密に計算しているというものではありません。ある意味、完璧さがない手抜きの処理法なのです。しかし、大体はきれいに表示できるというところが大発見だったわけですね。最大のメリットは、きれいな3D画像を作り出すことができるのに、NeRFに比べ処理が軽く、生成時間も数分の1に済んでしまう。データそのものも軽いので、リアルタイム処理に向いているという点なんです。

 先ほどの公園のベンチの画像でうまくいっていない部分を見てもらうとわかりやすいのですが、中央を中心に撮っているので、まんなかの精度が高いんです。一方、ベンチの裏側はちゃんと撮影していなかったので情報が足りないのでいい加減に出ています。直線で飛んでいる長い線が、ガウシアンのひとつですね。写真の情報が少ないところは、ガウシアンが大雑把に出たり、そもそもなかったりするのです。

 また、メッシュといったポリゴンデータではないので、近寄ってみると画像はぐちゃぐちゃになります。効率よくメッシュ化する方法は、まだ開発されていません。それでも、これほど現実に近い3Dデータを、リアルタイムに扱えるようになったというのは衝撃的です。

カテゴリートップへ

この連載の記事
ピックアップ