Unity和C#:如何改变整体世界照明而不仅仅是地面?其他未使用RenderSettings点亮的对象?

Unity和C#:如何改变整体世界照明而不仅仅是地面?其他未使用RenderSettings点亮的对象?,第1张

概述我刚刚使用Unity 3d进入照明,现在有一个功能可以逐步加深我的场景照明.我通过渲染设置完成了这项工作,并尝试了3种不同的照明方法,我收到了相同的结果: RenderSettings.ambientLight = Color.Lerp (RenderSettings.ambientLight, colors2 [currentColor], changeTime * Time.deltaTime 我刚刚使用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实现了一个通常结合了实时和预先计算的照明的照明系统.您看到的影响地面的环境光可能是预计算的.但是,地面顶部的块不包含在预先计算的照明中.因此,将这些块标记为静态会将它们添加到预先计算的照明中,但也会使它们在运行时不可编辑.请查看以下链接以获取更多信息.

TL; DR:

Only static geometry is consIDered by Unity’s precomputed lighting solutions. To begin the lighting precompute process we need at least one GameObject marked as ‘static’ in our scene. This can either be done indivIDually,or by shift-selecting multiple GameObjects from the hIErarchy panel.

Quoted from the unity 5 documentation about lighting and rendering

总结

以上是内存溢出为你收集整理的Unity和C#:如何改变整体世界照明而不仅仅是地面?其他未使用RenderSettings点亮的对象?全部内容,希望文章能够帮你解决Unity和C#:如何改变整体世界照明而不仅仅是地面?其他未使用RenderSettings点亮的对象?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1226929.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存