unity lookat导致物体颠倒怎么解决_U3d | 浅谈unity中的模型漏光问题

在Unity中遇到模型漏光问题,可能是模型只有一面或者光照贴图设置不正确。解决方法包括在建模时给物体添加厚度,以及调整Unity的光照贴图参数,如增大PackMargin和调整ScaleInLightmap,以减少光照贴图中面之间的间隙和防止光照渗透。
摘要由CSDN通过智能技术生成

edfb4bc24f045926b85b6aceb0c2c3cf.png

在unity中,偶尔会出现模型漏光问题。

我这里展示出我遇到的两种问题,并给出解决办法。

第一种,不管是bake还是realtime,模型都会漏光:

39b743f6fcd641e57ea711c6b535de28.png
realtime,模型边缘有光线渗入

40e1e0bebf7ada2977337487821a20f5.png
bake,模型依然漏光

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

9f8336e4cccdc2af0ce44c78b78618dd.png
realtime,没有漏光

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

24fc803e3235d0e200adeb7aa938c835.png
bake模式,模型边缘漏光

39842cf06b11570736d29c893d341e56.png
realtime,模型没有漏光

这里很奇怪,为什么realtime就不漏光,bake反而漏光了?你想一想,问题肯定出现在bake这里,是bake设置/参数的问题。

我们需要知道bake是怎么实现良好的光照效果的?

bake是提前把光照信息烘培到一张光照贴图中,然后运行的时候,按照贴图的指示来混合光照:

419692ffc9845b554979e326fc7dad15.png
UV Charts view mode

c8949e1ffb7b8267afb138fb43511032.png
light map for single object

在bake情况下的漏光,light bleeding,实际上是因为光照贴图中,模型的面之间的间隙不够/重叠了,这样就导致两个面的光互相渗透,最终视觉上的表现就是出错:

6f0e87cce5f8807b3f7d212c511b36ab.png
lightmap中各个面的间隙

那怎么解决这个问题呢?

如果你是用unity自动生成光照贴图,那么请进入模型的import页面,修改generate lightmap 的Pack Margin参数,这个参数决定了光照贴图中各个面的间隙:

4e50198abc958d71ec824237855e20ae.png

默认值为4,你可以适量调大。

还有一个参数也会影响漏光问题。那就是模型的Meshrenderer组件的Lightmapping单元中:Scale In Lightmap。

Scale In Lightmap,决定了自己在烘焙过程中光照贴图的大小,这个参数越小则贴图的分辨率越小,有些情况下也会造成漏光。

按照上面的说明,我修改了margin和scale,得到一下结果:

412587b5c3944bd6d0475b142756eb3c.png

参考资料 :

https://docs.unity3d.com/Manual/ProgressiveLightmapper-UVOverlap.html​docs.unity3d.comUnity - Manual: UV overlap https://docs.unity3d.com/Manual/ProgressiveLightmapper-UVOverlap.html​docs.unity3d.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值