Unity和Substance Painter的Look Dev显示校准

 

首先,我们需要分别在SP和Unity里搭建一个相同的场景。本小节对应的资源路径为LookdevCalibration\MeetMat_Substance\1_Setup.spp和LookdevCalibration\MeetMat_Unity\Scenes\1_Setup.unity。

 

这两个场景的搭建环境如下:

 

将上述HDRI、模型和贴图分别导入SP和Unity后,两者的项目设置分别如下:

 

1. Substance Painter设置:

  • 在Environment Settings里进行设置(参见图1),以正确设置SP的环境光部分。
  • 确保关闭Camera Settings里的所有后处理(参见图2),以排除后处理对渲染结果的影响。
  • 确保材质使用的Shader是pbr-metal-rough(参见图3),并把相应贴图赋给对应的通道上。

 

2. Unity设置:

  • 确保项目的颜色空间为Linear(参见图4),以保证我们能在线性空间下进行计算和渲染。
  • 在项目ProjectSettings/GraphicsSettings.asset里将m_LightsUseLinearIntensity设为1,以保证我们能正确读取光源面板上的光源颜色和亮度信息。
  • 设置相机位置和参数(例如FOV等)以保证和SP保持一致。
  • 设置天空球。为了便于读者完全理解整个系统的原理,我们选择使用自己编写的Skybox Shader(LookdevCalibration\MeetMat_Unity\Assets\Shaders\CustomSkybox.shader)来创建天空球材质。这个Shader的基本逻辑与Unity内置的Skybox/Panoramic完全相同,只是去掉了无关的功能和Unity的兼容性代码。在Lighting Settings里把我们的天空盒材质球设置到Skybox Material属性上(参见图5)。如果读者使用的是Unity默认的Skybox/Panoramic材质,则需要注意要想让Skybox的颜色无偏地来自于HDRI,需要保持材质属性Exposure为1、Tint为(0.5, 0.5, 0.5)。这是因为,可能是出于某些历史版本的效果兼容原因,Unity会在Skybox/Panoramic的代码里把颜色值乘以unity_ColorSpaceDouble,因此我们要保证材质属性为0.5才能与其抵消。
  • 设置模型材质球。这里我们暂时使用Unity内置的Standard Shader(参见图6)。
  • 点击Lighting Settings里的Generate Lighting,来让Unity根据我们设置的HDRI正确计算相应的Ambient SH和Reflection Map,这是让Shader能读取到正确光照参数的关键。

 

http://note.youdao.com/yws/public/resource/07d35855f08d46dab85503ef6724badb/xmlnote/E9F43B82C4D04C97AB2CCE4C4DD1A0EB/25206 图1:1_Setup.spp的Environment Settings

 

 

http://note.youdao.com/yws/public/resource/07d35855f08d46dab85503ef6724badb/xmlnote/306C021FFC744C99814C1BB36B8BE2C0/25215 图2:1_Setup.spp的Camera Settings

 

 

http://note.youdao.com/yws/public/resource/07d35855f08d46dab85503ef6724badb/xmlnote/BC0990FB78484083861FCAA79E37B7EB/25246 图3:1_Setup.spp的Shader Settings

 

 

http://note.youdao.com/yws/public/resource/07d35855f08d46dab85503ef6724badb/xmlnote/4E5E21E59A0C4E24BC87D6BF661917D4/25255 图4:Unity的颜色空间设置

 

 

http://note.youdao.com/yws/public/resource/07d35855f08d46dab85503ef6724badb/xmlnote/10FF3DA07D3F4FD5A34344CDFBF06896/25262 图5:Unity的天空盒设置

 

 

http://note.youdao.com/yws/public/resource/07d35855f08d46dab85503ef6724badb/xmlnote/6713DA8900104A20945A6609EFDA5B1C/25259 图6:Unity的1_Setup场景使用的材质球

 

按照如上进行设置后,我们可以在SP和Unity里得到效果非常相近的结果,如下图所示:

 

http://note.youdao.com/yws/public/resource/07d35855f08d46dab85503ef6724badb/xmlnote/B8A9D14454BB4831A2DB2DCA6301FA5E/26804 左图:Substance Painter的1_Setup场景,右图:Unity的1_Setup场景

 

这看上去似乎很像!但现实是,此时我们没有添加任何Tone Mapping等后处理计算。与此同时,绝大多数情况下我们会根据项目需要定制Shader,而不会直接使用自带的Standard Shader。在这些情况下,仅使用上述设置就无法保证在两个环境中可以得到一致的效果。在下面的内容里,我们会学习如何解决这些问题。

进入UWA学堂,查看全文,目前正在限时优惠中~

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章