unity3d烘培5.X的场景烘培速度慢到令人发指是什么原因

【Unity5 烘焙】Unity5烘焙的问题,这是Bug吗?
如图,测试unity5的烘焙,发现一个问题,单面物体烘焙后阴影效果不准确,不知大家发现这个问题没。
我们项目用的是简模,一些看不到的面都是不做出来的,但结果就是在unity4内烘焙没问题,到了unity5烘焙就出现黑面。经过测试,似乎确实是单双面的问题。如图,模型都是用内部的cube和plane拼凑的,上方的两个横面一个实单面(单个plane)一个实双面(两个位置相同,方向相反的plane),结果双面投影,正常,单面投影出现严重色斑。
估计原因是unity5阴影计算方式是模拟真实的光线折射计算的,而现实中是不存在“单面”物体的,所以造成光线折射不准确。不知大家遇到过没?这个算是Bug吗?有没有解决方法呢?
726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1504/thread/2_dd68ce23373.jpg');" />726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1504/thread/2_26900_3fee2f29e04b2e0.jpg');" />726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1504/thread/2_cfdbf714a9.jpg');" />726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1504/thread/2_79d437d2e2.jpg');" />
要评论请先&或者&
额……没人遇到过吗?还是我叙述的不清楚……这个问题个人认为很严重啊,很多可以省掉的面都必须要保留,对优化和工作量都会造成很大压力啊……
是啊是啊,我同意这个很多的面都减不了了我马上我也试试看,看和你的结果一样不
:是啊是啊,我同意这个很多的面都减不了了我马上我也试试看,看和你的结果一样不 嗯,麻烦你也测试看看啦!如果能找到解决问题的方法就更好啦!
刚刚试了一下,果然有问题,单面物体的法线背面是不被U3D所识别的,简单说就是背面挡不了光,这个场景中的盒子上有个Plane物体,但是光线还是直接照到了盒子内
把面反过来对着光线就可以挡住光线了,但是阴影有问题
不好意思,我一开始犯了个错误!这个场景盒子上的面片忘了勾选静态了
这是我又从烘焙的场景,正面朝盒子内,从外面看,看不到面,这回勾选了静态的哦!阴影居然比正面朝外正常
我在翻过来在试一次
翻过来阴影还是那样不正常,难道一个桌面必须要有个背面给它兜着?不然阴影就会有问题!3153人阅读
Unity 3D(26)
&&有时候我们需要动态加载场景(比如场景比较大,或者一些无限重复的自动生成的场景),这时如果对场景又使用了烘培,那么在unity5里面就会有一些小问题。
&&1.在这种需求下我们一般会把场景物体存成一个预置,需要的时候加载进来,但是在unity5里面,物体的lightmap信息(index和偏移)并不会记录在预置上,这导致你直接把预置加载进来看不到烘培效果,这里要这样,在加载之后手动的赋值这个lightmap信息,(你可以在烘培时预先保存这个信息),使用render的lightmapIndex和lightmapScaleOffset来设置它的烘培信息。
2.然而使用上面的方法对于一些shader还是会看到错误的结果(编辑器正确,至少android设备上是错的),因为unity5在某些设备上,对于这种动态加载的物体,无论你是否设置它的renderer的&lightmapIndex和&lightmapScaleOffset,&它都不会为其shader设置LIGHTMAP_ON这个关键字,如果看一下unity&支持light&map的shader的源码,可以发现这个
LIGHTMAP_ON是控制显示烘培图的关键,但是这种情况unity5不会设置,并且你自己手动设置也不行。这里有一个方法,就是修改这个shader,自己加一组关键字,比如叫做DYNAMIC_LIGHTMAP_ON,就算没有定义LIGHTMAP_ON,定义了DYNAMIC_LIGHTMAP_ON也会触发lightmap的贴图,然后在代码里加载完毕动态场景后,设置这个keyword就行了
UNity4据说没有这个问题,对于动态场景,直接加载就自动有lightmap里了,因为unity4会把lightmap信息存储在预置里。

&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:784547次
积分:6995
积分:6995
排名:第3480名
原创:133篇
转载:18篇
评论:147条
文章:25篇
阅读:209817
(2)(1)(2)(3)(1)(1)(1)(7)(1)(3)(2)(2)(1)(1)(3)(4)(1)(1)(2)(1)(9)(1)(5)(3)(3)(7)(7)(3)(3)(11)(1)(1)(2)(1)(1)(4)(3)(3)(1)(3)(5)(3)(2)(3)(9)(3)(3)(1)(6)(1)(2)(1)

我要回帖

更多关于 unity5.6烘培设置 的文章

 

随机推荐