簡體   English   中英

Unity和C#:如何改變整體世界照明而不僅僅是地面? 其他未使用RenderSettings點亮的對象?

[英]Unity and C#: How to change overall world lighting not just ground? Other objects not lit with RenderSettings?

我剛剛使用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,都會發生這種情況。

如何均勻照亮整個場景? 這里出了什么問題?

問題:

在此輸入圖像描述

Unity實現了一個通常結合了實時和預先計算的照明的照明系統。 您看到的影響地面的環境光可能是預計算的。 但是,地面頂部的塊不包含在預先計算的照明中。 因此,將這些塊標記為static會將它們添加到預先計算的照明中,但也會使它們在運行時不可編輯。 請查看以下鏈接以獲取更多信息。

TL; DR:

Unity的預計算照明解決方案僅考慮靜態幾何。 要開始照明預計算過程,我們需要在場景中至少標記為“靜態”的一個GameObject。 這可以單獨完成,也可以通過從層次結構面板中選擇多個GameObject來完成。

引用了關於照明和渲染的unity 5文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM