U3d | 浅谈unity中的模型漏光问题
3D建模技术文章教学modeling 1822 1
实名

通过了实名认证的内容创造者

发布于 2020-6-10 09:51:21

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

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,得到一下结果:
1.jpg

评分

参与人数 1活跃度 +12 展开 理由
慕先灵因铭... + 12 路障的解决办法+1

查看全部评分

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
Paint_小熊  发表于 2020-6-11 08:40:17  
2#
真棒!
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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