バーチャルアートミュージアムを作る(9)Unityへのモデルのインポート

Craneです。

今回は、フォトグラメトリソフトで作ったobjファイルの3DモデルをUnityへインポートする方法を記載します。

Unityへのファイルのインポート

Unityの「Project」内の「Assets」配下の任意のフォルダにobjとテクスチャ(法線マップなどほかのテクスチャがあればそれらも)をドラッグ&ドロップします

マテリアルの作成

右クリックで作成→マテリアルを作成して適当な名前を付けます。

次に、マテリアルの「アルベド」の部分にベースとなるテクスチャを、「法線マップ」の部分に法線マップ用テクスチャをドラッグ&ドロップします。

法線マップについては「今すぐ修正」で法線マップとして読み込みます。

objのインポート設定

objファイルを選択し、インスペクターの「Model」欄でスケールファクターを0.01にし、
ライトマップUVを生成にチェックを入れます。
スケールファクターは1でもいいのですが、フォトグラメトリソフトで作ったものはそれだと大概、
巨大になるため・・・
ライトマップUVは、将来的にライティングを行うことを考慮して私は大体チェックをしておきますが、
これの要不要はケースバイケースのようです。
以下の方の記事が大変参考になります・・・

 

次に、Materials項目を選び、先程作ったマテリアルを割り当てて、「適用する」を押します

シーンにモデルを配置

objをドラッグ&ドロップでシーンに配置します。
角度がおかしくなっていますが、インスペクターのTransformでX軸の回転を-90℃にすると大体直ります。
(ソフトにより、3DのXYZ軸の設定が違っているのが原因)

ちなみにフォトグラメトリソフトなどでの出力時に設定をうまくすればこういった回転をせずとも正しくインポートできるようです。
RealityCaptureの場合は以下の「Transfomation preset」をUnityにすることでUnity用の座標軸に合わせて出力ができます。

シェーダーの設定

さて、現状では以下のように、「どうした?」という見た目になっています。

現状のマテリアルのシェーダーが「Standard」になっているためです。
ここまで出てきた要素は以下のような関係性、になると思います

メッシュ:ポリゴンの形状(objファイルなど)
テクスチャ:ポリゴンの表面に張り付ける画像(jpg,pngファイルなど)
マテリアル:テクスチャとシェーダーを紐づけたもの(Unity上でのファイルとして作成)
シェーダー:テクスチャをどう描画するかを決めるプログラム(Unity上でのプログラム)

シェーダーは「Standard」のままでも、モデルを静的にしてうまく光源を配置し、ライトマップを焼く(ベイク)すればそれなりな見た目になります。
が、今回は手っ取り早く、マテリアルを選択してシェーダーを「Unlit/texture」に変えます

→ 見た目が元に戻りました。Unlitシェーダーは、シーン上の光の影響を受けずテクスチャをそのまま描画するためです。
ただし、光と影の当たり具合が、元の写真での状態になるため、シーン上でのライティングとマッチしない状態になる可能性があります。
厳密には、ツール(UnityだとUnity Delighting Toolなど)を使ってテクスチャから陰影の情報を削除し、Unity上でライティングをすれば自然なものが作れます。
が、私は面倒なので現状はそこまでしてません。

ちなみにUnlit/Textureだと法線マップの情報は使われないため、法線マップをインポートしてもあまり意味がありません。
Standardなどのシェーダーにして、適切なライティングを施すことで美しいモデルが作れる、はずです・・・

今回は以上です。少しでも参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です