夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

【Blender, Unity】ノーマルマッピングでちょっとした凹凸をつける

私がノーマルマッピングを初めて体験したのはXBOX360バイオショックというゲームでした。
壁のタイルがデコボコして縁がテカテカしているように見えるのを「これがノーマルマッピングかー」と感動しながら視点をグリグリ動かして遊んでいました。

さて、そんな感動的なノーマルマッピングを自分がモデリングした物体に施せる日が来るとはその時は思いもしませんでした。

これまでモデリングしてきたCR-Xですが、正直ノーマルマッピングを試せるような場所はほとんどありません。
と、いうことで今まで忘れていたナンバープレートを急遽取り付けてみました。

ついでに今までテクスチャで汚く反射を書き込んで誤魔化していたヘッドライトの具もモデリングし、完成したモデルがこちら。

f:id:takujidev:20151020220430j:plain

f:id:takujidev:20151020220443j:plain

肝心のナンバープレートは残念ながら解像度が足りなかったせいか少しいびつにデコボコしているように見えます。

今回は白黒で高さを表すハイトマップを手書きで作成し、それをUnityに取り込む時点でノーマルマップ化しています。

こちらがハイトマップ。
f:id:takujidev:20151020221058p:plain

白いほど高い所、黒いほど低い所です。ここではナンバープレートとホイールナットだけ白くしています。

UnityのProjectパネルからハイトマップのファイルを選択し、Texture Type をNormal mapにし、Create from Grayscaleにチェックを入れればUnityが内部的に青紫色のノーマルマップとして扱ってくれます。

f:id:takujidev:20151020221328p:plain

あとはこれをStandard シェーダーのNormal Mapスロットにドラッグするとデコボコするはずです。
デコボコ具合は先ほどのテクスチャ取り込み設定画面のBumpinessかNormal Mapスロットのパラメーターで設定できますので、いい感じに設定してあげます。私はNormal Mapのパラメーターは1のままBumpinessを0.01にするといい具合になりました。 なお、Bumpinessの値を変更したあとはApplyボタンを押さないと反映されないので注意です。

拡大するとこんな感じです。

ノーマルマッピングなしの場合
f:id:takujidev:20151020223335j:plain

ノーマルマッピングありの場合
f:id:takujidev:20151020223351j:plain

あんまり綺麗じゃありませんでしたね。

Blenderの場合は新たにテクスチャスロットを作ってそこにグレースケールのハイトマップを開き、Influence設定のGeometry:Normalにチェックを入れ、こちらもパラメーターを変化させて丁度良い具合にします。
f:id:takujidev:20151020224135j:plain
Blenderレンダリングした場合はUnityよりは少し綺麗に見えます。
ただ、地面に反射したナンバープレートはおかしく表示されてしまいました。

さて、ライトのモデリングですが、こうなっています。

f:id:takujidev:20151020224716p:plain

前回の百式のくだりで書いた通り、UnityではスペキュラーマップのRGBチャネルの値によってMetallicパラメーターを設定できます。

tf.hateblo.jp


ライトの反射鏡のようなパーツは不透明の白(RGBアルファ全部最大値)にすれば綺麗な鏡面になります。
あとはライトのガラスを表現すれば完成ですが、透き通った材質を表現するにはマテリアルを分け、そのマテリアルのシェーダーのパラメーターを変える必要があります。
使うシェーダーは同じStandardシェーダーですが、Rendering ModeをTransparentにします。
あとはテクスチャーを設定してやればOKです。マテリアルが違っても同じテクスチャを共用することは可能です。

最後に、Smoothnessの値を調整して太陽の光が当たった時にいい感じに反射するようにしてみました。

f:id:takujidev:20151020230623j:plain

今回でCR-Xモデリングは完成となります。この1台作るのに1ヶ月以上かかったと思います。
もっとペースアップが必要ですね。

最終的にVerts 3749, Faces 3679, Tris 7198となりました。

https://itunes.apple.com/jp/app/toraberushutingu-retorona/id917570972?mt=8&uo=4&at=10laCt
https://itunes.apple.com/jp/app/beecluster-wu-liaono-zongsukurorushutingugemu/id663801586?mt=8&uo=4&at=10laCt