unity3d 烘焙有黑点

2019-01-07 22:25:10 qq_15509383 阅读数 0
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

第一次创作也不知道写什么好,希望能一直持续更新下去,那么今天来个大家分享一个最近我遇到的unity烘焙室外大场景一个bug,我当时在max做了一个大概范围为20公里的一个场景,但是在max里面没有把整体模型的中心点归零,当我把物体导入unity的时候,观察每一个物体都在10公里的范围以外,结果烘焙的时候出现黑斑,经过长达一个礼拜的测试,最后与技术总监共同测试之后,说这个是unity的一个bug,把模型在max归到物体中心点就好了,经过测试之后烘焙没有了问题,

总结

1.在max制作模型是要规范,

2.导入unity烘焙出现大面积黑块是现看模型是否有2通道uv,然后在看物体在max是否归零。

3.以上都OK的话就看烘焙的设置和物体的设置了。

4.使用软件是max2018和unity2018.3。

 

本人属于当记事本记录,不是技术性文章,看完之后不,懂的朋友可以加我微信:saenxmq,希望大家留下宝贵的意见,后续慢慢更新。

 

2018-01-24 15:46:38 zx1091515459 阅读数 8546
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。



LightMap烘焙技巧

前言:弱弱的说我是一个程序猿。科普名词解释:全局照明(GI):是指除了直接光之外包括天空,物件之间间接光照的总和。环境闭塞(AO):是指间接光在物件间相互遮挡反射不充分导致的微弱阴影。通常在直接光照的暗部才会比较明显。天光:从头顶来的天空颜色造成的间接照明,特别是在晴朗的天气。LightMap:光照贴图HDR:颜色高动态区间,指颜色亮度可以超过1,移动平台暂且不支持间接照明(间接反射):指光源照亮A物体,A物体变亮以后充当间接光源对近距离内B物体有照亮的作用。这种现象只有当物体B在直接光照(比如阳光)的阴影里才会明显。

足够多的明暗对比

  • 适当打平灯光以增加阴影面积(暗部更多更容易做效果)


  • 适当增大模型增加阴影面积(暗部更多更容易做效果)


  • 通过只投射不接收来增加假阴影(作假)(不接受投影是因为看不见所以可以节省这种物体的渲染和它占用的litmap面积)


模拟全局光照

  • 足够充分暗部照明(暗部会有一种明快的感觉,用美术语言说就是暗部很“通透”)



  • 天光的使用:
    • 理论上越晴朗的天气阴影暗部越偏蓝(同理也是为了有全局照明的效果,用美术语言说就是暗部很“通透”)(哪天北京晴空万里的时候去大楼的阴影里看看是不是有蓝色,为了对比饱和度的覆盖问题,可以拿一张白纸)


  • 间接反射夸张
    • 比如守望先锋花村的樱花树下会有很强烈的蓝紫色,实际上是模拟粉红的樱花与天光蓝色的叠加造成的视觉,不过暴雪的美术有更加夸张的表达。(实现方法实际是在暗部增加与区域环境颜色相似的点光,实时GI现在效率跟不上,另外也不可能这么强。)
    • 小幅夸张


  • 更夸张的做法:现实世界中不会有这么强烈的间接反射,就像叶子把光间接反射出来了一样,守望先锋就是例子


  • 其实以上技巧都是借鉴自守望先锋
    • 这是一个人的分析,只要有心去找,仔细去看,去思考,网上有很多文章有可以借鉴的地方(因为实时GI还开销太大,暴雪真是能通过技巧把能用的东西用到最好)原文链接



  • 祭上守望先锋的场景,很夸张的暗部间接光照,实际上是通过暗部打烘焙点光来实现的。更多细节请参考我的另外一篇文章


AO的使用

  • AO能更真实的模拟现实世界,能使暗部有更明显的立体感,用美术的话说就是暗部足够“实”,“不飘”
    • 基础知识请参考这篇文章,这里讲了什么是AO,什么是间接反射等
    • 暗部的接缝处AO效果最明显


LightMap面积的优化

  • LightMap面积(精度)说明:(一个格子就是一个像素点,也就是占用在lightmap上面的面积)
  • 通过Scale In LightMap这个参数可以单独调整单个物体的精度


  • 更合理的分配LightMap面积(想要好效果又要节省lightmap面积,就是要研究,并总结经验,没有捷径
    • 只投射不接受的物件Scale In Lightmap填0就行
    • 地面 > 物件,重要物件 > 一般物件, 视觉中心 > 边远地区,大物件 > 小物件


  • 全部(或者几乎全部)在明处或者全部在暗处的可以用最低分辨率烘焙(比如当前光线下的这个椅子和不管影子多么正都是在暗处的这面墙壁,这种情况下,这两个lightmap精度可以填0.01),需要注意的是必须参加烘焙只是精度可以很低(因为纯白或者纯黑被压缩大小是不会损失精度的)


    • 地面以下,地图的侧面,或者根本看不见的东西,烘焙占用面积请控制到最小(最惨的情况请参考下面说的浪费)
  • 避免完全没有必要的浪费
    • 像这种完全在别的物体以下,还参加烘焙的完全没有必要,而且浪费很大


  • 树叶花草等透贴类似的推荐只投射,不接受,而且接受烘焙阴影效果不见得好,会很“脏”


技巧及问题

  • 发现阴影比较虚,不实
    • 检查是否间接光照反弹次数过大(可以理解成有过大的衍射效果)
    • 增加被投影物体的大小(比如放大花盆)(很显然)
    • 增加投影至物体所占lightmap面积(比如树叶投影到地面比较虚,则提高地面的精度)
  • 效果不好或者黑点、漏光过多
    • 检查2u是否打开
    • 检查顶点分布是否有异常,uv分布是否均匀或过少
    • 如果都没问题而且这个物件很重要,则增加精度
    • 自定义2u(高级,不推荐使用)
  • 过小物体效果太差
    • 如果确实过小,先看能不能放大,或者说这么小的东西有没有存在的必要或者是否可替代(很显然)
    • 如果确实需要,可以不参加litmap烘焙,而直接去diffuse贴图上花盆贴图的底部蹭两笔黑的
    • 这个花盆之前参加烘焙会有很大的漏光和黑点,其实不需要参加烘焙,而且效果比烘焙更好,还能节省lightmap


压缩的效果优化

  • 通过我烘焙的经验,以kasaierxueyuannew场景为例,发现烘焙10-12张1024压缩到512,比直接烘焙2-3张1024的贴图来的精度和效果都更好
    • 10张512 = 2.5张1024,而以之前的烘焙策略烘焙3-4张1024效果没有我这个好
    • 此外通过合理分配lightmap精度,能节省2-3张lightmap,没有仔细分配之前,保证效果的情况下能烘焙14张左右,现在这版只使用了11张,如果还细抠还能省1张甚至更多


  • 从1024压缩到512肯定会损失精度,但是通过仔细的分配lightmap精度能使这种损失达到最小
    • 方法一:地面最有用,所以怎么省都不要吝啬地面的精度,地面不管接受多少阴影,所占用的lightmap面积是一样的,所以多打点阴影(不增加消耗,还可以做效果,何乐而不为)
    • 方法二:纯背光纯亮光区域可以减少lightmap精度,因为压缩不影响(就像纯黑纯白的贴图压缩大小没有损失一样),而复杂的结构并且能同时受到阳光和阴影的影响,则也不需要节省精度,因为如果本来精度就不高,则压缩更惨
    • 方法三:压缩大小比压缩格式带来的损失小,如果压缩格式影响巨大,可以不压缩格式,而在其他地方想想办法怎么省(省的办法参考上面)。所以推荐烘焙高质量的光照图来压大小
    • 方法四(重要):尽量使用大阴影,在不压缩情况下本来就很小很虚的阴影,被压缩了只会更惨,优化方法参考以上
    • 方法五:不推荐使用复杂的结构,酌情使用,在压缩的时候很容易损失过大

个人经验

  • 暗部补光,感觉上并不是光越多越好,最好灯光颜色来表达周围环境的间接光照,过多颜色的灯光会让人觉得没有重点和乱
  • 点光通过减小光照强度增加照明范围能得到更好的环境间接光的效果,还能防止有比较突兀的亮斑
  • 个人倾向于用天空材质球来代替全局环境光来烘焙,如果是晴朗天气,用默认纯蓝的天空即可
  • 白模的情况下感觉lightmap很舒服而且很干净,而最终效果图的lightmap效果没有那么明朗。所以猜测为diffuse贴图的饱和度问题,因此推荐使用较低饱和度的颜色,否则lightmap的颜色很容易被盖掉(不保证正确,希望美术同学尝试)

跨平台的问题

  • 因为烘焙Lightmap用的exr,也就是HDR颜色编码,而现在手机平台不支持HDR编码,导致在手机平台和PC平台的解码方式不一样,所以不能使用过强的光来烘焙光照图,否则会造成android与pc差异巨大,因此不推荐使用光照强度超过3的灯光来渲染。

演示




作者:徐小厨
链接:https://www.zhihu.com/question/38140464/answer/164860198

2018-07-12 11:42:48 dan_SHI 阅读数 831
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

光照系统

unity3D光照系统Lighting菜单中,一共有6个选项,分别为Directional Light(平行光),Point Light(点光源),Spotlight(聚光灯),Area Light(区域光),Reflection Probe(反射探头),Light Probe Group(光照探头组)Light菜单 
其中前四个为unity中的灯光,后两个会实现一些特殊的效果,后边会讲到。

Directional Light(平行光)

平行光是unity中最常见的一种灯光,其原理与太阳光近似,不受position与scale的影响,Rotation会影响到光线照射的方向。下图显示出了平行光的照射方向。平行光 
除了transform组件,所有的Light还有Light组件Light组件 
Type(种类):在此项中可以对灯光的种类进行设置,方便快捷,如果建立灯光出错,可以在这里进行修改。

Baking(烘焙模式):有Realtime(实时烘焙),Baked(仅对静态物体烘焙),Mixed(对静态非静态物体都进行烘焙)。 
Color(颜色):选择灯光的颜色,包含RGBA四种属性,后边的小笔 
可以进行取色。

Intensity(强度):光照的强度,数值在0~8之间。 
Bounce Intensity(反射光强度):光照射到物体上反射出去的强度,数值在0~8之间。

Shadow Type(阴影种类):包含三个选项,分别是No Shadow(无阴影),Hard Shadow(低质量阴影),Soft Shadow(高质量阴影)。Hard Shadow和No Shadow对性能消耗的比较小。选择伊宁之后,会出现新的小菜单。Strength代表阴影的强度,数值在0~1之间,1时阴影最明显,0时无阴影。Resolution代表阴影的分辨率,Use Quality Setting表示在游戏开始时根据玩家的选择来设置阴影质量,其他四个依次代表从低分辨率到高分辨率。剩余的三个属性我目前也不知道什么意思,具体的作用是什么,如果有哪位大神指导,请指教~

Cookie(具体不知道该咋翻译,总不能翻译成蛋糕吧,手动滑稽~):通过设置具有Alpha通道的图片,使阴影出现相对应的图案。 
Cookie

Draw Halo(光晕):勾选之后,灯光周围会出现一圈光晕。 
美丽的光晕

Flare(耀斑):按照Asset→Import Package→Effect依次导入,再点击Flare后的小圆圈,会有三个选项出现,这三个选项都比较接近真实的物理光照,达到逼真的效果。这里要注意,Directional Light的Flare设置,是对天空盒上的太阳进行修改,其他三个Light则是对场景中的灯光组件进行更改 
这里写图片描述 
Render Mode:这个我暂时也不知道,哭脸~~

Culling Mask(剔除遮罩):通过设置物体的Layer层,使得该层的物体接受(或不接受光照)。 
这里写图片描述
这里在红色箭头指示的位置添加了No Light层,并将场景中球的Layer设置为No Light。在Directional Light的Culling Mask中,把No Light勾选掉,场景中的小球就不再接受光照。

Point Light(点光源)

点光源顾名思义,就是从一个点向四周发散光线,和蜡烛的光线类似。点光源
其Light组件与Directional Light基本相同,用法也基本相同,不同之处在于,点光源多了一个Range(范围),在图中可以清楚地看到由线条组成的一个圆,即点光源的范围。

Spotlight(聚光灯)

聚光灯是由一个点沿一个方向发射的束状光线,与生活中的手电筒类似。其Light组件与Directional Light基本相同,不同在与,他多了Range,与Spot Angle两个属性。Range代表照射光线的远近,Spot Angle代表照射的范围。 
这里写图片描述

Area Light(区域光)

区域光是这四种灯光中最奇特的一种,选择区域光之后,我们可以发现,在Type后,有Baked Only这个提示,这种灯光仅限于烘焙使用。它只能作用于静态物体,通过烘焙来生成光照贴图,从而极大的减少了性能的开销。这里的Plane设置成了静态
区域光没有阴影选项
区域光没有阴影选项,且极大的节省的性能的消耗,一般可以用在房屋壁灯或者显示器等光照效果中。


反射探头(Reflection Probe)在后边的材质(Material)中会讲到,光照探头(Light Probe Group)我会放在下一篇讲。

以上属个人见解,如有错误,请指出,会及时修改,如果有大神能帮忙补充,感激不尽!!

此文章转载于@研究者18        https://blog.csdn.net/qq_30687901/article/details/53792155

感谢这位作者的撰写

2016-03-18 16:42:04 bn030514 阅读数 10078
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

因为一些特殊需求,美术制作一些物件的时候,需要纹理坐标与3d坐标有个简单的对应关系,但是也带来了问题,lightmap烘焙错误


经过查看是可以确认黑斑源于lightmap


试过各种修改lightmap 烘培参数的方法都无效

后来查资料发现这样可以解决



原因不详,反正解决办法大概是这样子~

2020-04-17 00:58:24 yinfourever 阅读数 59
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

很多Unity3d初学者在烘焙场景时,由于没有经验,模型上常常出现一些怪异的"黑斑"、“撕裂”、”硬边”、“漏光”现象(如下图所示),反复调试,问题依然得不到解决,搞得精疲力尽,甚至产生了放弃的念头,本文将针对Unity3d烘焙时常见的几种“黑斑”现象进行逐一分析和图解,希望对遇到这样问题的朋友有所帮助。

1. 图一,图二所示的黑斑,是因为模型没有光照贴图坐标,烘焙后光照图错乱造成的,清零烘焙数据,按照下图所示的步骤,勾选"generate lightmap UVs(创建光照贴图坐标)“选项,重新烘焙即可消除。

2. 图三所示的墙角的黑斑,实为漏光所致,很多人按照Unity3d的要求,采用最优化精简的单面建模构建的室内场景,因为墙背面是镂空的,灯光从室外照进来,烘焙后出现了"漏光”,可按下面两图所示步骤操作,并将Cast Shadows的选项改为“Shadows Only”,然后重新烘焙即可消除。


3. 图四、图五所示的黑斑,有人称之为“烘焙硬边”,是由于这些模型的UV在光照图中所占的比例太小,按照下图所示的步骤操作,并将“Scale In Lightmap”参数适当调大,然后重新烘焙即可消除


如果还有个别模型有硬边,按下图所示,将面光源移至窗户框以内,重新烘焙即可。

以上为笔者的个人经验,仅供大家参考,如有谬误,请指正!若您制作商业项目,可去网上找些Unity3d烘焙相关的教程,也可参看本人编制的Unity3d布光与光影烘焙及后处理实战视频教程。希望以上的解答对有此类问题的朋友有所帮助,谢谢!

 

Unity3D灯光详解

阅读数 2154