交流的前提是建立在追求真實感的材質基礎上的。 我看到很多練習渲染的人,喜歡做一些復雜的模型或者場景。然后會花大量的時間去處理貼圖。而主要精力會放在顏色貼圖和凹凸貼圖上。偶爾還會多加一張高對比的高光貼圖。 這種做法其實是從游戲那邊流傳過來的三張貼圖的做法。 但是你知道,游戲行業講究的是高效,沒有渲染代價,而真實與否是放在其次考慮的。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 發一些比較明顯的靠顏色貼圖撐腰的圖。基本上都是早些年很厲害的圖了。但是這種制作方法放到今天來說的話,顯然不夠看了。 往往這樣的方法做出來的圖吧,真實感幾乎全部來源于你顏色貼圖的選擇,以及燈光的使用。燈光這次我們不討論吧。就說材質。光靠顏色貼圖撐起來的畫面,離真實總是有很遠的距離。就算效果好,也往往是因為場景做得復雜,讓人看得眼花繚亂。 你要知道,這種做法就相當于把真實的貼圖貼在模型上面,再通過燈光渲染出來。得到的最終效果跟你處理的顏色貼圖很接近。基本上你的顏色貼圖是啥樣,最后渲染出來的圖就是啥樣的。你想如果你把照片往模型上面貼,在打點光渲染出來。得到的結果,肯定是跟照片差不多,很真,但這真里面又帶點假。 一開始你可能不知道這點假是假在哪兒。我大概可以跟你說明,就缺在反射上面。 這里說的反射是reflection,而當聽到我說反射的時候,很多人腦子里出現的概念其實是 specular。 這是兩個不一樣的東西,良好地區分這兩樣東西,是你開始懂材質的第一步。 現在停留在使用software渲染器的人估計已經很少了。而在mental ray里使用blinn材質的我相信應該還有很多。 有一個說法是blinn材質是個萬能材質,什么都能做,所以深受大家喜愛。心里想著,管是做什么東西,用blinn肯定沒有錯。一張color一張bump,一張specular就可以出效果。 而這張specular貼在哪個通道里?有的人是貼在specular color上,有人是貼在specular roll off上面。可能還有許多人并不知道specular roll off是控制菲尼爾反射的。這是題外話。反正不管你貼在哪兒,blinn材質在默認情況下是無法得到真實反射的,它只能得到高光。這里的高光,其實是指對于燈光的反射。 也就是說,blinn可以很方便地得到這樣的一個材質:具有反射能力,但是只能反射燈光,卻不能反射周圍的物體和環境。你想象一下,在你的物體邊上緊靠著一個很明亮顏色很純的物體。明明你現在在做一個很高反射的材質,比如說金屬,但是卻只能反射頭上的燈光,卻不能反射身邊很亮很鮮艷的物體,豈不是很滑稽。 這也是為什么很多人總是會問,金屬材質該怎么做?玻璃材質該怎么做? 你發現沒,這兩個材質都是高反射材質。就連懂得很少的新人都能夠看出來,如果用不調整的blinn材質直接去做金屬和玻璃,得到的效果很不對。因為缺少的是真反射,缺少的是reflection!就是缺少了這個東西,才導致材質看起來很不對。 對于很明顯的效果,大家都能觀察出來。但是如果是反射相對模糊一些或者弱一些的材質,比如說塑料,橡膠。因為反射弱了或者模糊了。你用blinn去做的話,一眼看上去也像,但并不是那么像,只不過這種不像還沒有讓你抓狂去問別人這材質到底該怎么做。最后就得過且過了。 甚至反射極其模糊,比如說石頭,有點濕潤的土壤,下過雨半干不干的路面。往往大家做這種東西結果就是挺真實,不過是由于照片貼上去的真實,真實里卻少了一點味道,離照片級的真實還是有差距。 回復 ![]() 說這些都是為了強調reflection的重要性。 現在可以明確一下概念了。在cg里,specular這個屬性基本可以理解為,物體反射燈光得到的高光。這里的燈光,特質軟件里自帶的燈光。有些人做產品渲染,要自己手動做反光板,就是用一塊面片,給一個強度很高的surface shader。以此來當燈光用,出來的效果和模擬真實的面光源效果差不多。但是在cg里面,這樣手動做出來的燈光就不叫燈光,渲染出來的高光,也不要specular,而叫reflection。 也就是說,對于燈光的反射叫specular,對于除燈光以外的物體的反射都是reflection。 這么說來,或許有人要問,為什么這個specular要特殊一點。因為這個specular,如果真要說是反射,其實是抬舉它了。在cg行業初期,計算光線追蹤是很奢侈的,像反射這種效果基本沒法做。但是燈光的反射在很多物體上都是特別明顯的,又不能沒有,所以就有一些近似的blinn和phone算法出現。這些材質上面的高光,并不是通過光線追蹤的算法去計算出來的,而是通過燈光的位置,和物體的位置以及攝像機的位置模擬出來的近似效果。 這種算法的優勢是極其快,都可以在軟件里面實時預覽。但是隨之而來的問題就是假。要知道,在三維軟件里面的基本燈光,是沒有體積的。而印在物體上的高光卻可以是一個圓形,還可以通過材質上的參數變大變小。并且你沒法改變高光的形狀,永遠都是圓形。 所以在后來的渲染器里。像mental ray和vray,你找不到specular這個參數,反射只有reflection。 而且在vray里,最基礎的燈光就是面光源,和現實生活一樣,是有體積的光源。這個光源照在材質上面,再也不是一坨圓形了。而是跟你的光源大小形狀一致。可以說是對現實生活很精確的模擬了。 說句題外話。在vray渲染器里,大家基本上手就用面光源,并且面光源默認就開了二次衰減。mental ray其實都有這些功能,只不過不是默認的。導致很多人覺得mental ray 的效果沒有vray真實。這兩款渲染器在真實性上,其實是差不了很多的。mental ray是稍微差一點,但還沒到一般人一下子就能區分出來的那么明顯的差距。 二次衰減是啥?跟線性衰減是一回事么? 線性衰減是一次衰減啊。線性衰減是光強=k(1/距離),二次衰減或者說平方衰減= k(1/距離的平方)。現實生活中光強是平方衰減的。 http://filmicgames.com/archives/547 http://filmicgames.com/archives/557 這里貼兩片當年對我影響非常大的文章。 兩篇文章分別說的是,每個物體都有反射,每個物體的反射都是菲涅爾反射。 這也是以后指導我做材質的基礎。有了這些思路以后,世間的材質在本質上瞬間就一樣了,卻別就在于一些參數的量上有些不同。 ![]() ![]() ![]() ![]() ![]() 這些是反射上面處理得很好的圖。我發的是一些比較明顯的圖。基本上現如今做的好的作品,沒有誰的反射處理得不好的。但也同樣是因為這些圖處理得方方面面都太好,導致很多人注意不到反射是怎么處理的。 第一張圖很多人臨摹過。仔細看門上墻上的高光,都是方形的,跟窗子一樣的形狀。這就是靠真實反射計算出來的高光。包括地上的那一塊兒高光,已經看不太清楚什么形狀了,是由于材質本身的反射比較模糊,但可以明確,依然是通過窗子的真實反射得到的結果。 你可以用這一套圖對比一下上面那套圖。就能發現,反射是多么的重要。 尤其是這最后一張地面上污漬的效果。很多人會說是用層材質做的。要我說,很有可能是一張貼圖插在reflection glossness通道里得到的結果。 對于反射來說,反射模糊glossiness是非常重要的參數。 比如說同樣顏色的塑料和橡膠,區別就在于塑料的反射清晰一些,橡膠的反射更模糊一些。就只有glossiness這一個參數有區別。 而陶瓷,也是有高光陶瓷和亞光陶瓷的區別,完全就只在這一個參數上。 很多時候,一些看起來像是lambert的材質,也都是有反射的,只不過反射很模糊。也就是glossiness這個值開得比較小。那樣算出來的高光幾乎很難察覺,但卻屬于關鍵細節,沒有的話,就少了那么點味道。 ![]() 放一下春節順手做的小練習。可以說,我的場景里,沒有不反射的東西,并且所有的反射都是菲涅爾反射。 |