見出し画像

NeRFで透明や光沢の物体がどの様に撮れるか試してみた

今回はNeRFは透明のオブジェクトや光沢品も3Dデータ化できるという情報を元にどこまで撮れるか試してみました。

まずはパターン投影による3Dスキャン

今回もまずは前回と同様にパターン投影で透明部分や光沢がある部分がどの様な結果で出力されるかと比較しました。手元にある車のプラモデルがちょうど透明部分(ウインドウ)と光沢部分(ロゴやホイール)どちらもある物だったので、まずはそれを用いて実験してみました。
本来は塗装して楽しむ様なプラモデルを未塗装の状態で組み上げたというプラモ好きには非難されそうな内容ですがご容赦ください。

3Dスキャンのテストに用いたプラモデルの写真
今回の撮影対象物(プラモデル)

パターン投影では透明部分と光沢箇所は撮影できない

白い部分が非常に多い。というよりもほとんど白いので、全く撮影できないかも。。と思ってましたが、思った以上に綺麗に撮れました。
撮影直前にホワイトバランスのキャリブレーションを行いましたが、撮影環境が良くないので色は被りまくってます。まとめると

・結果が良くない箇所
フロントグリル・タイヤなど黒い箇所
・撮影できなかった箇所
メッキパーツやシルバーパーツ(梨地)など光沢が強い部分
ランプやウィンドウなどの透明部分

となりました。

パターン投影で3Dスキャンした車のスキャン結果画像(テクスチャ付)
パターン投影での撮影結果(テクスチャ付)

撮影できた部分のメッシュは非常に綺麗

テクスチャがついた状態だと若干見づらいのでテクスチャを外したメッシュの画像も載せます。撮影できている箇所は非常に綺麗に撮れていると思います。不要箇所を削除して、リバースエンジニアリングに用いたりするには十分な品質でした。
ただこういった内部が見える複雑なオブジェクトははボディパーツだけ分離してスキャンした方が合理的だと思いますのであくまでも参考までに。。

パターン投影で3Dスキャンした車のスキャン結果画像(テクスチャ無し)
パターン投影での撮影結果(テクスチャ無し)

NeRFでテストしてみたが。。。

以下が撮影と出力です。予想と異なりまともに生成できませんでした。
メッシュデータをダウンロードしてきてパターン投影のデータと結果を比較する気にもなりません。

生成のためのベストプラクティスを確認したところ、以下の様な記述がありました。

Object materials: Currently, the app struggles with complex reflections (e.g., curved mirror-like surfaces), curved transparent objects (e.g., car windows or plastic water bottles), and very large textureless surfaces (e.g. white walls). Most other materials work well.

LumaAIのホームページからの転載

現時点では曲面の鏡といった複雑な反射の物や車のウィンドウやペットボトルの様な複雑な透明の物には苦しんでいるという記述がありました。
なるほど。無謀な挑戦だったということですね。。事前に本ページの記述をしっかりとチェックしておくべきでした。

透明物や反射に強いと考えていましたが、あまりに特徴が掴めないオブジェクトの場合や複雑に反射するオブジェクトだとうまく生成できない可能性が高そうです。
そこで改めて、ベストプラクティスの情報を踏まえて試してみました。

透明っぽいものをまとめて撮ってみた

先ほどあげたベストプラクティスの別の項目に以下の記述があります。

Scene coverage: For best results the object or scene should be captured from as many unique viewpoints as possible. Additionally, it is better to move the phone around (in 3D space) rather than rotating it from a stationary position when capturing. Standing in the same place and capturing outwards in a sphere typically does not work well. The guided capture mode is a good option for ensuring sufficient coverage.

LumaAIのホームページからの転載

上記の内容の場合、同じ地点からオブジェクトをターンテーブルに載せて回転させて撮影させるとうまく生成できないことが伺えます。
また周辺の情報を取り込めるかが3D生成のキーになっている様なので、パターン投影やフォトグラ目とリーといった既存の3Dスキャニング用の技術で撮りやすいかどうかは一旦脇に置き、複数のオブジェクトをまとめて撮影することで情報量を増やすことに注力してみました。

微妙な結果です。
150枚の画像を使い、若干ましな品質にはなりましたがCG、リバースエンジニアリングどちらで使うにしても不十分な内容でした。
この内容であれば、無理してNeRFで撮影せず、必要なパーツを塗装するなりして従来のスキャン方式で作成した方が良さそうです。

  • 撮影物に特徴が少ない箇所は特に品質が低い

  • 土台も白い箱で特徴がない

  • アップにした撮影データが存在していないので小さいオブジェクト(目薬)はうまく生成できていない

といった複数の生成失敗の要因があり、まだまだ改善の余地があるため、今後も改善方法について模索したいと思います。

画像を用いた生成も引き続きトライしますが、次回は動画からの生成について検証してみたいと思います。


この記事が気に入ったらサポートをしてみませんか?