4

Unity 3d でライティングを始めたばかりで、現在、シーンのライティングを徐々に深める機能があります。レンダリング設定でこれを行い、照明で 3 つの異なるアプローチを試しましたが、それらすべてで同じ結果が得られました。

                RenderSettings.ambientLight = Color.Lerp (RenderSettings.ambientLight, colors2 [currentColor], changeTime * Time.deltaTime);
                RenderSettings.ambientSkyColor = Color.Lerp (RenderSettings.ambientSkyColor, colors [currentColor], changeTime * Time.deltaTime);
                RenderSettings.ambientGroundColor = Color.Lerp (RenderSettings.ambientGroundColor, colors2[currentColor], changeTime*Time.deltaTime);

私はこれらすべての違いを完全には理解しておらず、世界の照明に問題があります-色が変わると、空と地面の色が変わります(その上にある他のゲームオブジェクトブロックと同じ素材を持っています)それは)照明に応じて変化します。つまり、私の白い地面がオレンジ色になります。

問題は、地面の上にあるブロック (標準シェーダーと同じマテリアル) が同じ程度に影響を受けたり、照らされたりしないことです。私の地面が完全にオレンジ色である間、それらは一般的に白/影響を受けないままです. ambientGroundColor または SkyColor を変更しても、これは発生します。

シーン全体を均等に照らすにはどうすればよいですか? ここで何がうまくいかないのですか?

問題:

ここに画像の説明を入力

4

1 に答える 1

0

Unity は、通常、リアルタイム ライティングと事前計算されたライティングを組み合わせたライティング システムを実装します。地面に影響を与えている環境光は、おそらく事前に計算されています。ただし、地面の上のブロックは、事前計算されたライティングには含まれません。したがって、これらのブロックにフラグを立てるstaticと、事前計算されたライティングに追加されますが、実行時に編集できなくなります。詳細については、以下のリンクを確認してください。

TL;DR:

Unity の事前計算済みライティング ソリューションでは、静的ジオメトリのみが考慮されます。ライティングの事前計算プロセスを開始するには、シーンで「静的」とマークされたゲームオブジェクトが少なくとも 1 つ必要です。これは、個別に行うことも、階層パネルから複数のゲームオブジェクトを Shift キーを押しながら選択することによって行うこともできます。

ライティングとレンダリングに関する Unity 5 のドキュメントから引用

于 2016-05-26T21:25:59.987 に答える