加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Unity和C#:如何改变整体世界照明而不仅仅是地面?其他未使用Ren

发布时间:2020-12-15 21:00:05 所属栏目:百科 来源:网络整理
导读:我刚刚使用Unity 3d进入照明,现在有一个功能可以逐步加深我的场景照明.我通过渲染设置完成了这项工作,并尝试了3种不同的照明方法,我收到了相同的结果: RenderSettings.ambientLight = Color.Lerp (RenderSettings.ambientLight,colors2 [currentColor],chan
我刚刚使用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,都会发生这种情况.

如何均匀照亮整个场景?这里出了什么问题?

问题:

enter image description here

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读