MRが楽しい

MRやVRについて学習したことを書き残す

Blenderでモンスター型のキャラクターモデルを作成する その7(セカンダリマップで細やかな質感を表現する)

本日はモンスター型モデルの作成枠です。
今回は Unity 上でのセカンダリマップを利用して細やかな質感を表現してみます。
f:id:bluebirdofoz:20190729091710j:plain

前回記事の続きです。
bluebirdofoz.hatenablog.com

Blenderへのモデル取り込み

ここからは Unity 上での作業となります。
Blender で仕上げ処理を行って FBX ファイルに出力した3Dモデルを Unity に取り込みます。
f:id:bluebirdofoz:20190729091723j:plain

今回作成したモンスターは二足歩行型なので Humanoid リグを適用します。
ボーン構造は合致していますが、基本ポーズの比率などが変則的なので一部エラーが発生します。
f:id:bluebirdofoz:20190729091732j:plain

[Configure]から手動で設定しなおせば、特に問題はないようです。
f:id:bluebirdofoz:20190729091741j:plain

Rig を設定したら、次はマテリアルを準備します。
[Materials]タグから[Extract Materials]をクリックしてマテリアルを出力します。
f:id:bluebirdofoz:20190729091750j:plain

マテリアルが作成されました。
キャラクターをシーンに配置し、質感の設定を行っていきます。
f:id:bluebirdofoz:20190729091800j:plain

ノーマルマップの適用

まずは前回の仕上げで作成したノーマルマップを反映します。
Unity にノーマルマップの画像を取り込み、Standard シェーダの[Normal Map]に設定します。
f:id:bluebirdofoz:20190729091809j:plain

ノーマルマップを反映すると、ハイポリゴンメッシュでスカルプトした細かな凹凸が表現されるようになりました。
f:id:bluebirdofoz:20190729091817j:plain

セカンダリマップの適用

ノーマルマップで細かな凹凸が表現できるようになりましたが、実際には肌にはより微細な凹凸があります。
しかし、ノーマルマップでこれを表現しようとすると、かなり巨大な解像度の画像が必要であり、現実的ではありません。

そこで今回利用するのは Standard シェーダの SecondaryMaps です。
docs.unity3d.com
セカンダリマップを適用すると、メインテクスチャの上に更にもう一枚テクスチャを組み合わせることができます。
この機能を利用すると、非常に小さいスケールでマッピングされたノーマルマップを適用することができます。

試しに以下のような皮の質感を表現するノーマルマップを用意します。
こういった質感を表現するノーマルマップはフリー素材にも多くあるので、作り方が分からない場合は好みのものを探しましょう。
f:id:bluebirdofoz:20190729091918j:plain

先ほどのノーマルマップと同様、Unity に取り込みます。
Standard シェーダの[SecondaryMaps]の[Normal Map]をクリックし、取り込んだ画像を選択します。
f:id:bluebirdofoz:20190729091925j:plain

反映されました。
しかし、用意した画像が 512x512 の小さな画像だったこともあり、見た目が荒いです。
f:id:bluebirdofoz:20190729091934j:plain

この場合はタイリングの機能を使います。
画像をタイルのように敷き詰めることで画像の解像度を高くします。
[Tiling]の項目を X:20, Y:20 に設定してみました。
f:id:bluebirdofoz:20190729091944j:plain

小さな凹凸による光の反射が発生し、肌の細やかな質感が表現できました。
次は瞳の質感を表現するため、テクスチャとそのテクスチャからノーマルマップを作成して利用します。
bluebirdofoz.hatenablog.com