標籤:

SP導出貼圖導Redshift渲染效果不同的問題

文中使用模型貼圖來自網友 散仙 分享。

很長一段時間內一直有人問我,為什麼從substance painter里導出的貼圖在maya里渲效果差別挺大的。

我當時很納悶,因為這套流程我搞得久,研究得透,基本上說還原度是非常高的。但是一些朋友給我發了有問題的文件,測試了之後發現確實有問題。

以下是我探究的過程,心急的朋友直接翻到下面看問題產生的原因以及解決方法。

探究過程

後來我發現一個共通點,就是導出的時候都是使用的Redshift template。之後我就測試了很久Rs渲染器相關的問題,以為問題出現在渲染器上。然而無果。

問題最大的地方就出在反射模糊程度上。

這張是SP直接截圖的

這張是使用SP的Redshift template導出的貼圖,用正確的方式在maya中重建了材質渲染的。

可以看出第二張的反射看起來更加模糊,明顯和sp效果不同。於是又嘗試導出最原始的貼圖試了試(因為sp里使用的是metal/rough流程,所以原始的貼圖應該是roughness 貼圖)。

一開始用的glossiness 貼圖

之後嘗試了roughness貼圖

而一連上roughness貼圖,反射效果居然就對了。

所以這就只能說明問題出在這張glossiness map 上了。我將glossiness 貼圖導入ps 進行了反向的操作。因為從數學上來說,roughness = 1 - glossiness 。所以反向之後的glossiness 應該和roughness 完全一致。

結果你可能 猜到了,居然不一樣!!??這都能不一樣?僅僅是一個反向的操作,在SP導出的時候到底發生了什麼??能夠讓反向都出問題??

左邊是glossiness 右邊是反轉的roughness ,理論上應該完全一致。

我找到SP里導出Redshift的template,發現了這個秘密。原來這個預製導出glossiness貼圖的時候,並沒有導出正常的glossiness貼圖,而是導出的glossiness貼圖的平方!

為了驗證正確性。我又做了這樣的操作:將原始roughness貼圖反轉,那麼將得到真正正確的glossiness貼圖,然後,我再對這個glossiness貼圖做平方操作,看看是否和SP預製導出來的圖一致。

平方的操作是通過在PS里使用multiply(正片疊底,演算法上是A*B,自己和自己相乘等於是平方)疊加模式來完成的,得到的結果果然完全一致!!不信可以把這張圖拖到ps里吸顏色,我已經吸過了。

---------------------------------------------------------------------------------------------------------------------------

結論

以上總算是搞明白是咋回事兒了—— Substance Painter 在使用Redshift template 導出貼圖的時候,會錯誤地導出一張不適合的glossiness2 貼圖,使我們的最終渲染效果和SP預覽效果相差明顯

解決方案是,導出的時候自己手動把glossiness2 貼圖替換成 正常的glossiness貼圖;或者使用原始的roughness貼圖輸出都行。反正千萬不要用glossiness2貼圖。

---------------------------------------------------------------------------------------------------------------------------

那麼為什麼?

我也去Redshift的論壇和Substance painter的論壇發了帖子詢問這個事情,現在還沒人回答。不過通過不斷地搜索閱讀,我也大概知道了是怎麼回事。(雖然沒有得到正面回答不能下定論)

首先是Redshift論壇的一個帖子,討論去年RS除新版本新材質球的時候的一些技術細節。

doca.m - 26 November 2015 01:28 AM

Second is a question about roughness intensity curve. If I am right in arnold, roughnes curve is linear, but in v-ray roughness has its own strange curve. Redshift had it own curve similar to mental ray. That was one thing that I didn』t like at all. So, mu question is are you going to preserve that intensity curve as it was, or will roughness curve be linear?

The new Beckmann (Cook-Torrance) BRDF will have the same roughness curve as Arnold. GGX BRDF will have the same curve as the Disney shader and probably all other materials that use the GGX BRDF. We have a 『linear』 version of Ashikhmin-Shirley (our current BRDF), which we』ll be deploying in the new material, although we』re going to try to keep our old materials backwards compatible.

這些討論的內容大概的意思是說,以前的RS 反射模糊(glossiness) 這個數值調起來很奇怪,因為感覺不線性,像mental ray當年的感覺。

mental ray你要用過就知道,那建築材質的反射模糊,突出一個噁心,廣為詬病。在0.5 - 1這個數值之間,基本就沒啥差別,都是反射很清晰的效果,然而數值一旦調到0.5以下,材質效果立即變得模糊起來。很不符合人的思維,很不科學,很不線性

這是一張視頻里的截圖,視頻鏈接在下面,是Redshift presentation on NVIDIA booth at SIGGRAPH 2016。

這一個畫面當中,他正在解釋,新版本的Redshift的一些革新,其中就包括材質球的反射模糊手感會變得更線性。 他截了一些圖,其中大家仔細看一下第一排的球,是早期Redshift使用的材質,從右向左,glossiness 數值均勻地由 1 變成0 ,那麼這個過程中材質的反射效果也是由清晰變模糊。

特別需要注意的是,我用框框住的右邊一排球,你會發現,他們的反射幾乎沒什麼變化,反射都很清晰。這就是前文提到的,glossiness值大於0.5的時候,數值變化不敏感的現象。

youtube.com/watch?

而以上說的這些,其實就是為什麼會有glossiness2 這種奇怪的東西存在的原因了。這張截圖是SP幫助文檔對於mental ray對接的介紹。其中就提到了,mental ray的glossiness 需要進行平方操作,才會得到好的效果。

後來我心裡算了一下。0.7 * 0.7 = 0.49 ,也就是說,像mental ray的glossiness 調到0.5的時候,才相當於別人材質的0.7,怪不得效果不是很顯著了。就是有個平方的演算法在這裡面搞鬼啊。

而且Redshift以前的材質球也是這個得性,只不過後來改版把這個毛病給改掉了。 而我在這裡大膽猜測,由於algorithmic工作人員要對接的其他平台太多了,總有照顧不周的時候,可能他們沒有了解到更新改版以後的Redshift 材質,已經丟棄了glossiness2 的落後演算法, 也一直沒有更新他們的Redshift template才導致這麼個烏龍情況出現的。(只是猜測)

好歹最後問題都搞明白了,解決方法也很簡單。我們的SP to maya的流程再一次挺立起來。完美小人也算是放下了一塊大石頭可以安心休息了。

---------------------------------------------------------------------------------------------------------------------------

相關閱讀

如果對substance painter 到maya的流程感興趣的話,一定不要錯過以前的精彩文章。從理論到實際操作,到快速完成工作的腳本,一應俱全。

最近研究了很多有意思的東西,慢慢更新。

如何在影視渲染中使用PBR流程 - 知乎專欄

在maya中還原substance painter材質效果(視頻教程) - 知乎專欄

SP2M工具發布,以及使用方法介紹 - 知乎專欄

sp2m_v1.03發布,支持redshift渲染器 - 知乎專欄
推薦閱讀:

【《Real-Time Rendering 3rd》 提煉總結】(一) 全書知識點總覽
遊戲開發相關實時渲染技術筆記12篇
【UnrealEngine4】從虛幻四的著色模型到NPR

TAG:渲染 | redshift |