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學堂,查看全文,目前正在限時優惠中~

 

 

 

 

 

 

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