ActionScript
TypeScript
JavaScript

Unity导出LayaAir光照贴图的流程与注意事项

发布时间:2017-02-15

     LightingMap技术可以使用最小的代价提升静态场景光照效果 ,LayaAir的默认材质支持lightingMap,而生成lightingMap的工具可使用3DMAX等建模软件,也可使用Unity3D引擎IDE,LayaAir的unity插件可以支持导出场景模型和光照贴图等,本文详细介绍Unity导出LayaAir光照贴图于的流程和注意事项。


步骤一:Unity3D中烘培光照贴图需要标记Static属性,同样LayaAir也需要这个属性,具体如图所示。

blob.png

 

blob.png



步骤二:烘培光照贴图需要模型自身具有LightmapUV数据对光照贴图进行采样,具体如图所示。

 blob.png

blob.png


步骤三:烘培光照贴图需要把场景中的光源调整为Baked模式才能烘培成功,如需阴影可选择Shadow Type选项。

 blob.png


步骤四:Unity3D中材质非常繁多,目前Mobile/Diffuse材质最为接近LayaAir引擎的默认材质,为纯静态光,后续会继续增加更多材质支持静态光和动态高光混合的光照模式。

 blob.png


步骤五:点击Windows=》Ligthing=》Scene,图示为几处需要注意的选项,其余选项可自行查阅Unity资料,设置好选项点击右下角Build即可生成光照贴图。

 blob.png


步骤六:烘培完成后选择Lightmaps界面,可以预览生成的光照贴图,但此光照贴图为后缀EXR的HDR格式,为保证资源大小和下载速度, 一般压缩为JPG格式后再通过放大图片范围还原HDR颜色范围,此过程需要使用LayaAir Unity插件导出场景(此处不详细介绍),再用PhotoShop进行格式转换,然后通过在引擎中修改材质颜色范围达到目的。注意:此方式会损失光照精度和造成轻微颜色偏差,有利有弊。


(1).Unity中生成的光照贴图。

 blob.png


(2).用unity插件导出资源后用PhotoShop打开xx.exr图片,依次点击图像=》模式=》8位通道,在弹出的提示框中可以选择合并图层或者不合并图层,一般选择合并。

 blob.png


(3).不合并photoshop不会弹出参数调整窗口,如果选择合并的话会弹出参数提示窗口如图,注意细节和曝光度这里没有采用默认值,而是都设置位0,推荐采用此方式,经实践可以最大还原HDR图片本色,然后点击确认。

  blob.png


(4).然后我们便可导出PNG或JPG到原EXR文件目录并加载显示场景此时我们一般会发现光照的对比度和U3D中比相对偏弱,亮度也有偏差,因此我们可再次使用PhotoShop调整光照贴图的对比度或者亮度等参数,例如:我们点击图像=》调整=》亮度对比度=》把亮度减去30,开发者可根据实际情况灵活调整,效果如图。

 blob.png



步骤七: 然后我们再次加载场景,因为我们已经将EXR图片调整JPG或PNG,因为我们要扩大图片颜色范围模拟HDR,因为在程序的StnadardMaterial中我们可以通过设置albedo为(2.0,2.0,2,0,1.0)和(3.0,3.0,3,0,1.0)之间来调整场景亮度范围,通常ambientColor也需要设置为(0.0, 0.0, 0.0)),以上参数并非固定,程序可根据实际情况灵活调整。光照贴图的精度和颜色会产生丢失和偏差,但经过人为矫正和调整基本上是可以还原在unity3D中的效果,而且光照贴图最重要的明暗细节变化没有损失,后续LayaAir也会考虑直接解析EXR格式的光照贴图,以下是LayaAir中的打光对比效果。

blob.png