找回密码
 立即注册
查看: 506|回复: 0

Unity3d | 常见的模型漏光问题及解决

[复制链接]
发表于 2021-1-9 13:21 | 显示全部楼层 |阅读模式
在unity中,偶尔会出现模型漏光问题。
我这里展示出我遇到的两种问题,并给出解决办法。
第一种,不管是bake还是realtime,模型都会漏光:

realtime,模型边缘有光线渗入
bake,模型依然漏光
这个问题所在是,你的模型只有一面,在物理世界来说就是这个模型没有厚度。在真实世界中是没有只有这样一层没有厚度的表面的物体的,这时候你需要给物体添加厚度,在建模中,使用挤出 是很好的办法,之后你可以观察到:
realtime,没有漏光


第二种,在bake模式下的模型漏光:

bake模式,模型边缘漏光
realtime,模型没有漏光
这里很奇怪,为什么realtime就不漏光,bake反而漏光了?你想一想,问题肯定出现在bake这里,是bake设置/参数的问题。
我们需要知道bake是怎么实现良好的光照效果的?
bake是提前把光照信息烘培到一张光照贴图中,然后运行的时候,按照贴图的指示来混合光照:
UV Charts view mode
light 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,得到一下结果:




参考资料 :
Unity - Manual: UV overlap

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-20 10:51 , Processed in 0.114292 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表