devlog [naru design]

プログラミングやテクニカルな内容の覚え書き。

Unity5からシェーダーまわりがガラッと変わりました。よりリアルな質感を表現するためにStandard Shaderが汎用的に使われます。新規でマテリアルを作成した時や、3Dオブジェクトを作成した時、fbxでオブジェクトをインポートした時には、このStandard Shaderがデフォルトで設定されます。

平面オブジェクトにStandard Shaderを設定した時に、想像していなかった状態になったので、ここにメモしておきます。

現象

以下の画像はGameウィンドウのキャプチャです。平面オブジェクトにStandard Shaderを割り当てています。ライトはDirectional Lightを1つシーンに設定しています。画像を見ると、平面の中央がライトが直接あたっているように白くなっています。
スクリーンショット 2015-03-16 23.20.42

シーンの構成はカメラの前面に平面オブジェクト、やや上の方にDirectional Lightを配置しています。平面の中央に直接ライトはあてていません。

スクリーンショット 2015-03-16 23.18.19

平面オブジェクトに設定しているStandard Shaderはデフォルトの状態です。

スクリーンショット 2015-03-16 23.17.28

結論

Standard ShaderのMain MapsのSmoothnessが影響していたようです。この値を0に設定したら以下画像のようにフラットな質感になりました。

スクリーンショット 2015-03-16 23.21.49

平面オブジェクトの質感がおかしい*1、妙にバンディングが目立つ時は、このパラメータが影響しているかもしれません。

Unity5.0

追記(2015/04/23)

*1 「質感がおかしい」は正しくない。ここでは、フラットな設定にしたかったのにライトが写り込んでしまったのを何とかしたかっただけ。Smoothnessはメタリック、マット感をコントロールするためのパラメータ。メタリックになると背景の映り込みやライトによるハイライトが発生するので挙動は問題ない。

Smooothnessを小さくするとマットな質感になり、背景の映り込みやライトによるハイライトが無くなっただけ。

Pocket

コメントを残す

Trackback URL: