忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/12/12 23:03 |
Unity5のLightProbeでマップの影をキャラクターに反映

UnityLightmapでマップの影を作りました。

これをキャラクターに影響させるようにするためLightProbeを使いました。

 


 

 

LightProbeを地面に埋まらない高さに配置しLightmapに焼き込みます。

影響させるキャラクターのモデルEnable LightProbeのチェックをONにします。

 

これだけでLightProbeは動作しましたがキャラクターへの影響が強すぎました。
明るいところではキャラクターが真っ白になり、暗いところでは真っ黒になってしまいます。

そこで、キャラクターのシェーダーでLightProbeの影響力を調整することにしました。

 

まずSurface Shaderの#pragma surfaceの語尾に「noambient」を追加します。

これでシェーダーによるLightProbeの影響を無効にします。

 

次にVertexShaderで「ShadeSH9」を使ってLightProbeの値を取得します。
取得した値を調整します。



void vert (inout appdata_full v, out Input o)

{

UNITY_INITIALIZE_OUTPUT(Input,o);

    // evaluate SH light

    float3 worldN = mul ((float3x3)_Object2World, SCALED_NORMAL);

    o.shLight = ShadeSH9 (float4 (worldN, 1.0)) * _AmountLightProbe + (1.0 - _AmountLightProbe);

}



最後にSurfaceShaderで調整済みのLightProbeAlberoに乗算します。

 

o.Albedo *= IN.shLight;

 

これでLightProbeのキャラクターへの影響が上手くできました

 

全ての100近くある全てのマップのLightmapの焼き直しに時間が掛かるため、LightProbeは歩けるところに影があるマップだけに配置しています。

UnitySword of Rapierは間もなく完成です。

5月中にiOSAndroidへ配信を行う予定です。
その後Windows Phone 8へ配信をします。



2015/05/09 17:46 | Comments(0) | Unity

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)


PR