こちらは、clusterユーザーと加速する非公式 Advent Calendar 2020 の最終日の記事です。
VRSNSの認知が広がるにつれて、ワールド制作に興味を持たれる方が増えたように思います。しかし、モデリングはなかなかに習得が難しいスキルです。そこで、「ワールドを作ってみたいけど、モデリングができない…..」という方でも、iPad一つで簡単にリアルなワールドを作成する方法をご紹介します!
Contents
使用機材
- iPad Pro
- 3D Scanner App
- Blender 2.90.0
※ここで紹介するアプリはLiDARが搭載されている機種しか動作しません。ご注意ください
執筆時点でLiDARが搭載されているデバイスはiPad ProやiPhone12ぐらいですが、将来的にLiDARを搭載する機種は増えると思います。この記事で紹介するアプリや似たようなことができるアプリが動作するのであれば、なんでも構いません。
今回は3D Scanner Appというアプリを使用しました。 また、執筆時点で使えそうなアプリを一通り調査し、その感想をまとめたものを記事にしました。ぜひそちらもご覧ください。
執筆時点でiOSのみ使用できます。無料にもかかわらず、精度がとてもよいです。 リメッシュ、テクスチャ作成、メッシュのスムーズ化、などアプリ内で使える機能が多く、非常に高性能です。
3D Scanner Appの使い方
3D Scanner Appの詳しい使い方を説明していきます。それほど難しいアプリではないので、気軽に撮影していきましょう。
①Capture
まずは、空間を撮影するCaptureモードです。Max DepthとResolutionをうまく設定して撮影する必要があります。
Max Depthでカメラから遠い部分をマスクします。これは、スキャンの精度が落ちる遠い部分をデータに取り込まないようにするためです。3メートルくらいから先をマスクしたほうがいいです。
Resolutionはメッシュの解像度を調整できます。 撮影後のデータサイズやディテールの細かさに影響するので、撮影範囲が大きい場合は20mmにする方がいいです。逆に、狭い範囲を正確にスキャンする場合は5mmにセットするといいでしょう。
Low ResとHigh Resですが、Highの方がメッシュ生成が正確になるので、こちらをオンにしておきます。
②Refine
撮影すると、即座に3D化されます。ここでは、撮影したモデルを手直しすることができます。
Smooth MeshとSimplify Meshがあります。Simplify Meshは、ポリゴンを削減してくれる機能です。
撮影したばかりのモデルは、とてつもない量の頂点数で構成されているので、いくらか軽量化してあげる必要があります。 Simplify Meshを出力前に適応して、ファイルサイズをできるだけ小さくするといいでしょう。重ね掛けすることができるので、頂点数がもう減らない、というぐらいまで何度も適応してください。
③Colorize
Colorizeによって、撮影した写真群からモデルに合うテクスチャを生成できます。High Quality、Preview、Preview++ とありますが、出力する段階ではHigh Qualityにするといいでしょう。
ファイルの出力
撮影、軽量化、テクスチャ作成が完了したら、そのモデルを出力します。
ファイルを出力するには、Shareをタップし、出力したいファイル形式を選択します。iPadから出力したファイルは、Googleドライブなどを経由して、デスクトップパソコンに持ち込みましょう。
3D Scanner Appだと、
- .obj
- .glTF
- .glb
- .stl
- .dae
で出力できます。Unityなどでおなじみのfbxは、残念ながら出力できません。この中だと、fbxの進化形であるglTFが使いやすいので、これで出力することをおすすめします。(Blenderならどのファイルも読み込めるので、glTFでなくても構いません)
3D撮影のコツ
3Dスキャンはまだまだ新しい技術なので、撮影には気を付けなければならない点がいくつか存在します。実際に撮影してみた経験から、いくつかアドバイスを紹介します。
撮影範囲を区切る
ファイルサイズは大きくなればなるほど、取り回しが悪くなっていくので、ある程度の範囲で区切って撮影していくほうがいいです。家の間取りを全部いっぺんに撮影することもできなくはないと思いますが、そのあとのリメッシュで苦労することが予想されます。
もし撮影範囲が大きいのであれば、一部屋や一間など、あとで結合しやすそうな空間に分割して撮影していきましょう。
むやみにカメラを動かさない
カメラは動かせば動かすほど、位置情報がズレていきます。これは撮影範囲が広いとより顕著になります。また、フォトグラメトリでは連続撮影した写真からテクスチャを作成するのですが、撮影方向が一定でないと、テクスチャのノイズが増大します。できるだけきれいなテクスチャに仕上げるためには、撮影方向や撮影距離を意識する必要があります。
- 細かすぎるところを撮影しない
- 何度も同じところを撮影しない
- 面に沿ってカメラを移動させる
細かすぎるところは、リメッシュ(ポリゴン削減)で情報が落ちる部分になります。丁寧に撮影しても意味がありません。意味がないだけでなく、撮影方向がブレることによってテクスチャにノイズが乗りやすくなります。また、壁に近づいたり離れたりを繰り返すと、メッシュがガタガタになりやすいので、壁や天井とカメラの距離を一定にしながら移動するとキレイに撮影できます。
完璧を求めない
メッシュの綺麗さをテクスチャの歪みなど、フルスクラッチのモデリングには到底及びません。LiDARという最新の技術をもってしても、完璧なスキャニングはできません。どうしてもうまく撮影できない部分はモデリングソフトで手直しした方が簡単です。
Blenderでのリメッシュ
撮影したモデルを、VRChatやClusterなどにそのままアップロードするのは避けたほうがいいです。撮影した直後のモデルは、VRコンテンツとして利用するには負荷が重すぎるためです。具体的には、以下のような問題を含んでいる場合が多いです。
- 頂点数が多すぎる。モデルが巨大になるにつれて描画負荷が激重
- 撮影できていない箇所はポリゴンが抜け落ちている
- 撮影上どうしても生じるノイズ(人影、撮影誤差…etc.)
特に頂点数が多すぎる問題は、描画負荷に直結するので、モバイルで描画するのであれば特に注意が必要です。ここからはBlenderを使った、最適化方法を紹介します。
撮影ファイルをインポートする
File > Importから、先ほど出力したファイルをインポートします。
頂点結合
メッシュによっては頂点が重複している可能性があります。頂点が重複していると、この後に紹介する頂点削減が上手くいきません。以下の記事を参考に、重複頂点を削除しましょう。
頂点削減
ポリゴンの削減方法はこちらの記事にまとめてあります。ぜひ、こちらを参考にポリゴンを削減してください。できるだけ60,000ポリゴンに収めるのが望ましいですが、初心者はあまり気にしなくても構いません。
テクスチャのレタッチ
モデリングソフトや3Dペイントソフトに慣れていない方は、ここまでやらなくでもいいかもしれません。ノイズが乗っている部分をクローンブラシなどで消します。
LiDARを使うメリット・デメリット
ここまでLiDARを使った3Dスキャンについて紹介してきましたが、いい点も悪い点も存在するというのが正直なところです。決して手放しで褒められるわけではないので、メリットデメリットについて整理しておきます。
メリット
- モデルをフルスクラッチする労力に比べると、割と低コスト
- スケールがほぼ一致する
- テクスチャ素材がいらない
デメリット
- リメッシュやポリゴン結合が必要。モデリングが不要になるわけではない
- 撮影できることが前提条件。そのほかにも、撮影環境がクオリティに影響する
- モデルにディティールを求めるのは、ほぼ不可能。フルスクラッチでどうぞ
- 撮影データがかなり膨大になるので、データの取り扱いに注意が必要
メリットでもありデメリットでもある、「撮影対象が存在する」ことがフォトグラメトリの最大の特徴です。撮影できないようなところにある建築物や、そもそも実在しないオブジェクトなどは、この方法でCG化することができません。
一方で、撮影できるものであれば、だいたいをVR化することができます。建築物の内装は特に相性がいいです。また、手で持てるような小物をスキャンして、フルスクラッチの下書きモデルにすることもおすすめです。
まとめ
正直に言って、LiDARでモデリングが楽になるかというと、まったく楽にはならないです。手直ししようと思っても、メッシュの破綻が大きすぎることも多いです。ゲームのようなCGモデルを求めるのであれば、フルスクラッチすることは避けて通れないでしょう。
とはいっても、物を3Dで撮影できるということは、3Dで参考資料を集めることができる、ということでもあります。写真だとどうしてもスケール感が狂ってしまいがちですが、LiDARで撮影しておけば、いつでもその大きさを確認することができます。写真だと死角になる箇所も回り込んでチェックすることができます。
今はまだ力不足な3Dスキャンですが、写真をCG化する技術は今後かならず主流になってくると思います。ぜひ、この機会に試してみてはいかがでしょうか?