[Unity] 室内シーンをUnityに渡す

  • Unityで、バンプマップ(高さマップ)を法線マップに変換
  • Unityで、Standardシェーダーの透過を調整

この説明では、Unity 5.6.3p2を使用しました。

建物のような規模の大きい形状を渡し、ライティングをどのようにするかということについて記載します。
量が多いため、数回に分けて説明することにします。
今回は、建物をShade3DからUnityに渡すまでの手順になります。

建物を作る」でモデリングしたシーンをUnityに渡します。

シーンをfbx出力向けに整理

fbx経由でUnityに渡すため、最適化を行いました。これは今までの手順でいけますので説明は省きます。
Unityに形状を渡す手順」もご参照くださいませ。

なお、机や椅子などの家具類については別形状として保存し、Unity側でインポートするようにします。
ここでは、建物だけにしています。

窓を扱いやすいようにまとめる

窓は、枠と2つの窓枠の3つのポリゴンメッシュにまとめるようにしました。

まだ、窓自身は、枠/取っ手の金具/窓ガラス、の3つのマスターサーフェスを「フェイスグループ」として指定しています。

フェイスグループ」の指定もそのままfbxファイルに出力できます。
窓を3つのポリゴンメッシュに分けているのは、窓をスライドして開閉できるようにするためです。

ポリゴンメッシュ/マスターサーフェス/イメージを整理

すべての形状をポリゴンメッシュに変換し、以下のようになりました。

マスターサーフェス、テクスチャは以下のようになりました。

名前はすべて半角英数字にしています。
なお、シーンの階層構造でパートが存在していても問題ありません。
fbxにエクスポートしたときは、この階層構造ごと出力されます。

fbxエクスポートしてUnityに読み込み

Shade3Dからfbxエクスポートし、Unityにインポートします。
Shade3Dからは以下のようにfbx出力されました。

Unityに読み込むと、Shade3Dのマスターサーフェス分のマテリアルが追加されます。
下画像はマテリアルの一覧です。

下画像はテクスチャの一覧です。

fbxとテクスチャ画像をドラッグ&ドロップでまとめて読み込んだ場合は、
マテリアルに割り当てることができる拡散反射と法線のテクスチャは自動的に割り当てられます。
バンプマップは割り当てられないため、Unity上で法線マップに変換する必要があります。
また、マテリアルはStandard Shaderに自動で割り当てられます。

Unityでバンプマップ(高さマップ)を法線マップに置き換える

Projectウィンドウよりバンプマップのテクスチャを選択し、Inspectorウィンドウを表示します。
「Texture Type」で「Normal map」を選択し、「Create from Grayscale」チェックボックスをオンにします。
「Bumpiness」で凸凹の強さを調整し、「Apply」ボタンを押します。

これで、バンプマップが法線マップに変換されました。

これを、マテリアルの「Normal Map」で指定すると凸凹が表現されます。

シーンに形状を配置してマテリアルを調整

そのままの段階ではmetallic/smoothnessはデフォルトのままのため、また、窓ガラスの透過の指定も反映されていないため、この部分を調整します。
シーンに形状をドラッグして配置して、それぞれのマテリアルを調整していきました。

窓ガラスの透過の調整

窓ガラスを含む形状を、Hierarchyウィンドウで選択してInspectorウィンドウを表示します。

Shade3D側でフェイスグループを使用した場合は、Unityの「Mesh Renderer」の「Materials」に複数のマテリアルが列挙されます。
その下に個々のマテリアルがコンポーネントとして表示されています。
ここで窓ガラスのマテリアルを表示し、Standardシェーダーの「Rendering Mode」を「Transparent」にします。
これで、透明を表現できるマテリアル指定になりました。
「Albedo」のカラーボックスをクリックしてColorウィンドウを表示し、「A」の値を下げます。
これはマテリアルのアルファ値を下げる動作となり、これにより半透明になります。

なお、Unityでは屈折表現は(デフォルトでは)できません。
追加アセットやシェーダーを記述することで、疑似的な屈折表現はできますが、ここでは省略します。

MetallicとSmoothnessの調整

Projectウィンドウでマテリアルを選択し、InspectorウィンドウでMetallicとSmoothnessを調整します。
Metallicは表面の反射の調整になります。この値が大きいと映り込みが強くなります。
Smoothnessは表面のざらつきの調整になります。
Roughness(ラフネス/荒さ)の逆の意味になり、値が小さい場合はざらついた状態になり、値が大きい場合は光沢が出る状態になります。
両方とも、値が大きいと反射が発生することになります。
fbxをインポートした状態では、Smoothnessが0.5になっていますので壁や天井では光沢が強いです。
ここをそれぞれのマテリアルごとに調整しました。

これで、マテリアル調整は完了しました。
建物でも、小物の場合とほぼ変わらない操作になります。
ただ、この段階ではライティングの調整をしていないため、影となる室内ものっぺりとしています。

長くなりましたのでいったんここで区切ります。
次回、Unityでのライティングについて書いていきます。

カテゴリー: Unityに形状を渡す