unity5 为什么unity5 动态加载lightmapss中没有东西

升级Unity5-----Unity5灯光烘焙与Unity4 灯光烘焙实际应用中的差别
Unity5终于正式发布了,我们也赶紧尝试着把现在的项目升级到Unity5.0,升级的过程遇到了不少问题,估计也是大家将来会遇到的,分享出来供大家参考。有不足的地方欢迎大家补充。
一、先说说Unity4 烘焙面板里常用的参数
&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/1503/thread/2_a1c46b1978a.jpg');" />
Quality 烘焙质量一般会选择高
Bounces 反弹 &这个值一般选1,如果选2,烘焙的时间会增长50%左右,所以设置这个值要谨慎。
Sky Light Intensity 天空光强度 这个一般我也不会设置的太高
Bounce Boost 反弹增强,同一单位面积内增大光的反射数量,相比较来说,这个值增大会直接影响渲染时间。
Bounce Intensity 增强光的反射强度
Contrast Threshold 对比度,这个只是偶尔会调。
下面是我烘焙大场景时用到的参数,基本是在效果和时间上达到了一个合理的平衡点。
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/1503/thread/2_5f95509c9d.jpg');" />
二、再说说 Unity5.X,和4.X的区别,首先光照烘焙技术就不同,
Unity4.X版本采用的是Autodesk的Beast技术
Unity5.X版本采用的是PowerVR Ray Tracing和Enlighten技术,所以Lighting Window 面板里的参数差别就很大。
整体的参数介绍这个官网的网址里有,
/Manual/GlobalIllumination.html
我只说说常用的。
(一)Object面板
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/1503/thread/2_39300_ef8.jpg');" />
Lightmap Static: 必须把烘焙的物体设置成静态
Scale in Lightmap: 数值的大小与该物体的表面积有关,这个值影响烘焙时间,值越大时间越长。这个值也影响光影图的数量。(效果如下图) & & Scale
In Lightmap 设置成0.1时的效果
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/1503/thread/2_3932b8f53.jpg');" />
&& & Scale In Lightmap 改成1时的效果
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/1503/thread/2_1d3a553841.jpg');" />
Preserve UVs: 如果物体没有在3dmax里展好UV,那么这里必须勾选。
(二)Scene面板
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/1503/thread/2_eb.jpg');" />
Skybox:会直接影响你的环境光
Ambient Source:环境源,这里选 的skybox
Ambient Intensity: 环境光的强度值,也就是环境光的亮度值
Reflection Source:反射源,这是Unity4.X里没有的。烘焙后会在场景文件的同名文件夹中多出一个名为 &LightmapSnapshot的文件。
Realtime Resolution:实时分辨率,这个物体所产生的GI对其它物体的影响程度,值越大影响越大。例如
&Realtime Resolution 参数设成比原默认的小10倍即 0.2 &,这个值调成1后,墙上的绿玻璃颜色,能更多的影响地面了
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/1503/thread/2_346cc9a253.jpg');" />
Realtime Resolution 参数改成 0.4后的效果绿色墙所产生的环境光,影响范围变小了。
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/1503/thread/2_3d45e27e547d.jpg');" />
Baked Resolution:烘焙分辨率,如果数值是10,那么就是每个单位里分布10个纹理元素,实际测试的效果如下
Baked Resolution的参数值调成10后,阴影的边变实了
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/1503/thread/2_39300_bd287b00ba6d5a0.jpg');" />
Baked Resolution的参数值调成1后,阴影的边变的很虚了
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/1503/thread/2_ce60a1dd94.jpg');" />
Indirect Intensity:间接强度,这个和unity4.x里的参数有些像,可以简单的理解为光的反射强度。
Bounce Boost:反弹强度,同一单位面积内增大光的反射数量,相比较来说,这个值增大会直接影响渲染时间。
Default Parameters:默认参数,这里还可以自己创建自己的参数。一般情况在预烘焙时选择最低设置。
Atlas Size:烘焙图的大小,以前4.X版本只能通过脚本来调整,现在好了。
(三)灯光参数
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/1503/thread/2_3dd.jpg');" />
这里需要注意的是Baking & 选项里要设置成Baked ,否则烘焙不起作用。
剩下的两个参数,基本和Unity4.X的参数功能相同。
最后说一下,下面这几个参数一定要注意,它们影响烘焙速度和光影图数量,当初就在这上面吃过亏,场景太大,参数没调小,烘了一晚上啥也没出来。
“Scale In Lightmap 、Realtime
Resolution、Baked Resolution、Atlas Size”
总体来讲要想提高烘焙速度,就从这Scale In Lightmap 、Realtime Resolution、Baked Resolution三个参数入手基本就可以了。
其实升级到Unity5 ,我们遇到了很多问题,很多以前的脚本、插件都不好用,都需要我们一步步解决。
下面是内容文档
本部分内容设定了隐藏,需要回复后才能看到
共3条评分,
感谢分享,嘿嘿
要评论请先&或者&
挺好~学习了.
楼主好人啊 &学习了
非常给力啊。
感謝分享,最近剛好升級。
好强大~正为这个发愁呢~感谢分享~
很实用,很强大,感谢分享!
&楼主是原创吗?我在游戏-蛮-牛也看见这篇了。
很给力!!!
:很实用,很强大,感谢分享! 谢谢支持!  能搜到这的应该是被新的烘焙系统坑了少时间,4.x到5.x美术必须重新烘焙,关于美术的没什么说的,只有---重新烘焙!
  新的烘焙系统,为了兼容5.x的多场景编辑功能,将烘焙信息从mesh全部挪到了一个中间件xxx.assets,这个资源文件在5.x烘焙完成后和光照贴图存放在一起,然而关于这个资源文件,我是查来查去没有找到任何接口可以访问。
  只能百度谷歌,发现方案基本都是序列化,因为上面提到的烘焙信息没有在mesh中保存,而是一个鸡肋资源文件,发布时xxx.assets可以删了。
  序列化哪些数据,在编辑器面板能看到,在下面代码中也能看到。
  编辑器脚本PrefabLightmapDataEditor.cs:
1 using UnityE
2 using UnityE
4 public class PrefabLightmapDataEditor : Editor {
[MenuItem("Ojcgames Tools/保存该场景预制件的烘焙信息", false, 0)]
static void SaveLightmapInfoByGameObject()
GameObject go = Selection.activeGameO
if(null == go)return;
PrefabLightmapData data = go.GetComponent&PrefabLightmapData&();
if (data == null)
data = go.AddComponent&PrefabLightmapData&();
//save lightmapdata info by mesh.render
data.SaveLightmap();
EditorUtility.SetDirty(go);
//applay prefab
PrefabUtility.ReplacePrefab(go, PrefabUtility.GetPrefabParent(go), ReplacePrefabOptions.ConnectToPrefab);
  被绑定在预制件父级上的序列化脚本PrefabLightmapData.cs:
1 using UnityE
2 using System.C
3 using System.Collections.G
5 public class PrefabLightmapData : MonoBehaviour
[System.Serializable]
struct RendererInfo
public int
public Vector4
lightmapOffsetS
15 #if UNITY_EDITOR
[UnityEngine.SerializeField]
Texture2D[] lightmapT
//当前场景的灯光贴图
[UnityEngine.SerializeField]
RendererInfo[] rendererL
#if UNITY_EDITOR
public void SaveLightmap()
Renderer[] renders = GetComponentsInChildren&Renderer&(true);
RendererInfo rendererI
rendererList = new RendererInfo[renders.Length];
int index = 0;
for(int r = 0, rLength = renders.L r&rL ++r)
if (renders[r].gameObject.isStatic == false) continue;
rendererInfo.renderer = renders[r];
rendererInfo.lightmapIndex = renders[r].lightmapI
rendererInfo.lightmapOffsetScale = renders[r].lightmapScaleO
rendererList[index] = rendererI
//序列化光照贴图
LightmapData[] ldata = LightmapSettings.
lightmapTexs = new Texture2D[ldata.Length];
for(int t = 0, tLength = ldata.L t&tL ++t)
lightmapTexs[t] = ldata[t].lightmapF
void Awake()
this.LoadLightmap();
60 #if !UNITY_EDITOR
void LoadLightmap()
if(null == rendererList || rendererList.Length == 0)
Debug.Log(gameObject.name +
" 的 光照信息为空");
Renderer[] renders = GetComponentsInChildren&Renderer&(true);
for(int r = 0, rLength = renders.L r&rL ++r)
renders[r].lightmapIndex = rendererList[r].lightmapI
renders[r].lightmapScaleOffset = rendererList[r].lightmapOffsetS
#if UNITY_EDITOR
if(null == lightmapTexs || lightmapTexs.Length == 0)
LightmapSettings.lightmapsMode = LightmapsMode.NonD
LightmapData[] ldata = new LightmapData[lightmapTexs.Length];
LightmapSettings.lightmaps = null;
for(int t = 0, tLength = lightmapTexs.L t&tL ++t)
ldata[t] = new LightmapData();
ldata[t].lightmapFar = lightmapTexs[t];
LightmapSettings.lightmaps =
Texture2D[] lightmapT
是我为了方便美术测试,发布项目中,我手动管理何时加载光照信息和光照贴图,至此代码已提供完。下面说点碰到的坑:1、PC正常,发布到android或ios完全看不到光照信息,并且序列化参数都正确,光照贴图也加载正常,LightmapSettings.lightmapsMode = LightmapsMode.NonDirectional 设置正常:  在发布时,Edit - Project Settings - Graphics - Shader Stripping - Lightmap modes - Manual  关于该选项的官方说明:By default, Unity looks at your scenes and lightmapping settings to figure out which Fog and Lightma and skips corresponding shader variants. This saves game build data size, and improves loading times.  也就是说,如果你想用脚本动态的控制,那么就得将这里设置为手动模式。2、最后一个坑就是不能完全相信搜索结果,他人记录的可能只是针对其出现的问题。
阅读(...) 评论()为什么我的Unity5里面的GI的light bounce无效?_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:60,105贴子:
为什么我的Unity5里面的GI的light bounce无效?收藏
我在实时GI下增强light bounce一点效果都没有是怎么回事,哪位遇到过Directional lightmaps cannot be decoded on SM 2.0& 跟这个有关吗?drictional light参数显示的
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 unity5 light probe 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信