您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 胖纸_DHW 于 2020-6-10 09:54 编辑
在unity中,偶尔会出现模型漏光问题。 我这里展示出我遇到的两种问题,并给出解决办法。 第一种,不管是bake还是realtime,模型都会漏光: realtime,模型边缘有光线渗入 bake,模型依然漏光这个问题所在是,你的模型只有一面,在物理世界来说就是这个模型没有厚度。在真实世界中是没有只有这样一层没有厚度的表面的物体的,这时候你需要给物体添加厚度,在建模中,使用挤出 是很好的办法,之后你可以观察到: realtime,没有漏光
第二种,在bake模式下的模型漏光:bake模式,模型边缘漏光realtime,模型没有漏光这里很奇怪,为什么realtime就不漏光,bake反而漏光了?你想一想,问题肯定出现在bake这里,是bake设置/参数的问题。 我们需要知道bake是怎么实现良好的光照效果的? bake是提前把光照信息烘培到一张光照贴图中,然后运行的时候,按照贴图的指示来混合光照: UV Charts view modelight map for single object在bake情况下的漏光,light bleeding,实际上是因为光照贴图中,模型的面之间的间隙不够/重叠了,这样就导致两个面的光互相渗透,最终视觉上的表现就是出错: lightmap中各个面的间隙那怎么解决这个问题呢? 如果你是用unity自动生成光照贴图,那么请进入模型的import页面,修改generate lightmap 的Pack Margin参数,这个参数决定了光照贴图中各个面的间隙: 默认值为4,你可以适量调大。 还有一个参数也会影响漏光问题。那就是模型的Meshrenderer组件的Lightmapping单元中:Scale In Lightmap。 Scale In Lightmap,决定了自己在烘焙过程中光照贴图的大小,这个参数越小则贴图的分辨率越小,有些情况下也会造成漏光。 按照上面的说明,我修改了margin和scale,得到一下结果: |