読者です 読者をやめる 読者になる 読者になる

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

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

【Blender】CR-Xにスムーズシェーディングをかけつつエッジを立てる

Blender オープンワールドレーシングゲーム Unity

引き続き現在開発中のレースゲームに登場予定のCR-X風スポーツカーのモデリングBlender上で進めています。
現時点ではこんな感じです。

f:id:takujidev:20151013215408p:plain
f:id:takujidev:20151013221914p:plain

参考までに、Verts 3,627、Faces 3,551、Tris 6,974となっています。

前回作成したAE86トレノ風スポーツカーではフラットシェーディングを使用していたため角ばっていました。
というのも、スムーズシェーディングをかけるとせっかく作り込んだディテールがなくなってしまうからです。

参考:tf.hateblo.jp

スムーズシェーディングを掛けつつもエッジを立てる方法はいくつかあるようですが、今回はBlenderのAuto Smoothとエッジのシャープ指定でエッジを立ててみました。

f:id:takujidev:20151013220452j:plain

Object dataのAuto Smoothをチェックし、立てたいエッジ毎にShadingのSharp指定をしていきます。
(上の図の赤い四角で囲った部分)
Sharp指定をしたエッジは水色で表示されます。

フラットシェーディングの場合:
f:id:takujidev:20151013221130p:plain

スムーズシェーディングの場合:
f:id:takujidev:20151013221155p:plain

スムーズシェーディングかつ必要なエッジを立てた場合:
f:id:takujidev:20151013221224p:plain

それぞれ見え方が違いますが、3番目が一番綺麗に見えると思います。

心配なのが、この方法で立てたエッジがUnity上でも同じように見えるかどうかというところですが、この通りちゃんとBlenderと同じように見えています。

f:id:takujidev:20151013224032j:plain

AE86では色の違う部分は全て違うマテリアルを割り当て、マテリアル毎に色やツヤを調整していたのですが、複数のマテリアルを使うとドローコールが増えるため処理が重くなるらしいです。
そこで、CR-Xでは処理の軽量化のため全てのオブジェクトの全てのポリゴンを同じマテリアルに割り当ててみました。
現在はテクスチャマッピングで色をつけた段階で、部位毎のツヤの調整はまだなのでタイヤがやたらとテカテカしていますが、これは今後調整する予定です。