いろんな3Dスキャンを試してみる
こんにちは!ANDPAD ZEROの藤田です。
これまでのnoteでは、私からは「3Dスキャンについてわかりやすく整理してみる」というテーマで、3Dスキャンのいろはについて紹介してきました。
一言に3Dスキャンといっても、様々な手法があったかと思います。
今回のnoteでは、これまで紹介させていただいた3Dスキャンのうち、iOSデバイスでも実施できる「LiDARスキャン」「NeRF(ナーフ)」「フォトグラメトリー」の3つをピックアップし、実際に3Dスキャンを試していきたいと思います。
検証環境
まずは検証環境についてです。
今回の検証では、iPhone14Pro(iOS 16.5.1) を使っています。
また、それぞれのスキャンのアプリとして以下のものを利用し、各アプリで”一発撮り”し、各3Dデータの見栄えの良さや計測精度の高さなどその結果をみてみたいと思います。
また、今回はスキャンする対象として、現場でスキャンすることを想定してある程度サイズがあるオブジェクトを選定することにし、<Vol.17 「ANDPAD 3Dスキャン」で街中を3次元化してみた>の記事でも利用した、新宿のLOVEのモニュメントをスキャンしてみました。
【LiDARスキャン編】「ANDPAD 3Dスキャン」でスキャンしてみた
LiDARスキャンの検証で選んだアプリは、もちろん弊社で現在開発している「ANDPAD 3Dスキャン」です。すでにインフラ工事での現場検証も始まっており、検証中のお客様からも好評いただいております。
すでに別のnote記事や弊社のプレスリリース等で画像が公開されていますが、こちらがANDPAD 3Dスキャンのスキャン中の画面です。スキャンできている箇所は白色、スキャンができていない箇所は赤色で表示されており、どこまでスキャンできているかの確認が容易です。
スキャンの後処理はおおよそ1分程度で完了し、スキャン結果もすぐ確認ができました。
スキャンした結果がこちらになります。
少し上部がスキャンできておりませんが、これまでのスキャン実績を踏まえると、もう少し時間をかけてスキャンすることで解決できると思います。
また、LiDARセンサーでスキャンするメリットとして、誤差が5cm程度しかないことが挙げられます。
今回のスキャン結果から大きさを測ってみたところ、ほぼほぼ実寸サイズで寸法の取得ができていることもわかりました。
【NeRF編】「Luma AI」でスキャンしてみた
NeRF(ナーフ)の検証として選んだアプリは「Luma AI」です。こちらはNeRFのiOSアプリとして一番メジャーではないかと思います。
今年の4月にUnreal Engine 5のプラグインも公開され、個人的に今最も熱いNeRFのアプリだと思っています。
Luma AIはフォトグラメトリーと同様に複数の写真から3Dモデルを作成する技術ですが、実際には、動画撮影と同じような感覚でスキャンすることができます。
実際には動いた場所で都度、写真が撮影されているようで、撮影される度にバイブレーションで通知されていました。
3Dモデル生成処理は、iPhone内で行われるのではなく、サーバ側で行われます。
そのため、写真のアップロードが必要であり、アップロードと3Dモデル生成処理にかかったトータルの時間は15分程度でした。
スキャンした結果がこちらになります。
一発撮りにしては、非常に綺麗に3Dモデルが生成されており、私自身とても驚きました。
LiDARではレーザー光の反射を利用してスキャンを行なっているため、レーザー光が届かないような場所や反射をうまく受け取れないとスキャンすることができません。
NeRFでは写真から3Dモデルを生成しているため、写真に写ってさえいれば3Dモデルが生成可能です。そのため、同じように動画を撮る感覚でスキャンを行なっても、LiDARでスキャンしたものより綺麗なモデルとなっていますね。
また、<Vol. 12 3Dスキャンについてわかりやすく整理してみる>でも紹介しましたが、「NeRF」で3Dモデルを生成するとプレビュー用のアニメーションも生成することができます。
一見、スキャン時の動画のようにも見えますが、撮影動画ではないんです。
オブジェクトの「O」や「V」の空洞部分に着目すると、若干違和感が感じられると思います。パット見ただけでは見分けがつきづらいほどに、スキャンしたモデルが綺麗に仕上がっていますよね。
ただただスキャンした3Dモデルのみ表示するのではなく、こういったプレビュー用のアニメーションも合わせて生成されるので、よりわかりやすいですね。
【フォトグラメトリー編】「PhotoCatch」でスキャンしてみた
フォトグラメトリーの検証として選んだアプリは「PhotoCatch」です。Appleが「ObjectCaptureAPI」というフォトグラメトリーの機能を提供しており、今回選んだ「PhotoCatch」はこのAPIを使った最初のアプリなんです。
PhotoCatchではフォトグラメトリーで3Dモデルを生成するために下記の注意書きがなされています。
- 70%対象が被るように撮影する
- 20枚以上の写真を用意する
上記の内容に気を遣い、標準のカメラアプリで対象物を一周するよう写真を撮影しました。
枚数は最低限の20枚で検証を行いました。
フォトグラメトリー処理は、NeRF編の「Luma AI」同様、iPhone内で行われるのではなく、サーバ側で行われます。そのため、写真のアップロードが必要になりますが、処理時間と合わせて5分程度で3Dモデルの生成処理が完了しました。
スキャンの結果ですが、結論から言うとうまくスキャンすることができませんでした。
同じ条件で3回ほど実施したのですが、うち2回は3Dモデル生成に失敗し、成功したものも満足がいく結果にはなりませんでした。
フォトグラメトリーでのスキャン自体初めて試みたのですが、こんなにうまくいかないものか…と自分でも驚きました。場所の都合上、人通りも多く撮影も難しかったのですが、なるべく70%被るよう写真を撮影するよう心がけていてもうまく3Dモデルの作成ができませんでした。
スキャンの際に、「PhotoCatchでは写真は20枚までしか扱えない」と勘違いしており、写真の枚数が20枚となるようスキャンしてしまったことも失敗の原因ではあるのですが、、対象のサイズによってどの程度の写真の枚数が必要か、撮影の仕方、天候等、いろいろと試行錯誤していかないと綺麗な3Dモデルの生成はできず、素人が現場ですぐに使うのは難しいように感じました。
それぞれの方法でスキャンして思ったこと
「NeRF」も「フォトグラメトリー」もどちらも写真から3Dモデルを生成する技術です。
しかし、実際に試してみたところ、「NeRF」の方がライトに3Dモデルの生成ができそうでした。
これはそれぞれのスキャン技術の問題というよりは、それぞれのアプリのスキャン時のUXの問題で、一概にどちらが優れているかは判断できません。
しかしながら、写真から3Dモデルの生成をするからこそ、スキャン時のUXが非常に重要な要素であることは間違いないと思います。
また、これら2つの技術はiPhone上で3Dモデル生成を行うのではなく、サーバ上にて処理が行われます。
サーバ側での処理もそれなりに時間がかかり、スキャン結果の確認もすぐに行うことができません。
「時間がないためすぐにスキャン結果の確認をしたい」とか、「電波のあまりよくない環境でスキャンしたい」といった場合は、LiDARスキャンのほうが手軽でよさそうです。
また、LiDARスキャンの場合はある程度の精度が保証されていますが、NeRFとフォトグラメトリーに関しては写真から3Dモデルを生成するという特性上精度については保証されておりません。スキャンしたオブジェクトで計測を行なったりしたい場合も、LiDARスキャンを利用したほうがいいと思いました。
一方、iOSデバイスのLiDARセンサーのスキャン可能範囲は5m程という特徴があります。NeRFでスキャンした3Dモデルは、撮影した写真を元に3Dモデルが生成されるため、LiDARのスキャン範囲外(5m超え)でも写真に写ってさえいれば3Dモデルが生成可能です。
今回、LiDARではLOVEモニュメントの上部がうまくスキャンできていませんでしたが、上部をスキャンする際は「5m」というスキャン可能範囲に留意して、もう少しモニュメントに近づく必要があったように思います。
精度に関してそこまで気にする必要がなく、さらにより綺麗な3Dモデルが必要であったり、より大きなオブジェクトをスキャンしたいならばLiDARスキャンよりNeRFを利用したほうがよさそうです。
フォトグラメトリについては今回そもそもスキャンがうまくできなかったので、今後機会を見つけてリベンジしつつ、比較ができればと思います。
最後に
いかがでしたでしょうか。
今回、フォトグラメトリーについては非常に残念な結果となってしまいましたが、実際に他のスキャンを試してみることで、自分としてもとても大きな学びを得ることができました。
フォトグラメトリーについてはもっと写真の撮影の仕方を勉強し、そのうち再チャレンジしたいです。
また、ANDPAD 3Dスキャンはまだまだ開発中です。
より使いやすいアプリとなるよう頑張ってまいりますので今後もご期待ください!
それでは今回はこの辺で、最後までお読みいただきありがとうございました!
この記事が気に入ったらサポートをしてみませんか?