OC材質節(jié)點編輯猶如拼圖,需要組合和連接
【前言】
? ? ? 我翻看一下自己的簡書文章,發(fā)現(xiàn)《OC渲染器學習筆記》系列大家關注比較多。我這個人有個特點,就是網(wǎng)上有的東西,自己非常熟悉的東西,就不愿意研究,更不愿意寫。因為對自己來說,已經(jīng)沒有新鮮感了。所以,發(fā)了十多篇之后,再也不愿意動筆寫了。后來,很多網(wǎng)友還要求繼續(xù)寫下去,而且要求我重點談談OC渲染器的材質節(jié)點編輯和分層渲染問題。沒有辦法,那就接著寫吧。
? ? ? 其實,個人認為:材質節(jié)點編輯沒有什么難的?只不過是更換編輯材質的思路而已。相比較傳統(tǒng)的材質層式編輯而言,邏輯性更強,資源利用率和總體效率更高。有的人適合這種編輯方式,有的人不適應這種方式而已。當初3DSMAX材質剛剛使用節(jié)點編輯的時候,我就花了1個小時時間就掌握了,而且用的感覺很好、很直觀、很舒服。過了一段時間,3DSMAX專家們出的圖書,都故意回避材質節(jié)點編輯,還用過去的方式編輯材質。當時不知道他們?yōu)槭裁床挥茫膊恢朗菫楹危亢髞砻靼住2皇遣馁|節(jié)點編輯有多難,而是他們不想接觸新事物,根本不想用啊。人呢?越老越保守,越不愿意學習新的東西。
看了上面的OC材質節(jié)點編輯,你是不是很羨慕?真厲害啊,材質節(jié)點編輯多么復雜啊!其實,我覺得不然。OC材質節(jié)點編輯這么復雜目的是什么?不就是利用OC自身的節(jié)點資源,為給材質幾個通道,制作幾張合適的貼圖嗎?如果是我,我寧可使用SP繪制紋理貼圖,直接輸入給材質就可以了,我可不這么費勁!
? ? ? ? 有了以前的《軟件插件介紹之三十二 : RizomUV》文章作為鋪墊,下面就可以輕松研究OC材質節(jié)點編輯了。前言寫的有點多了。嘮叨半天,我想說:一是任何材質節(jié)點編輯都不難,很容易學習。更換一個材質編輯方式而已。二是復雜的材質節(jié)點,你也不用害怕,它的實質就是為材質通道制作一個恰當?shù)馁N圖而已。如果你不會復雜材質節(jié)點編輯,自己使用其他軟件制作一張,不就完了嗎?
【研究】
一、如何進入材質節(jié)點編輯呢?
OC有多種方式,常用以下三種。
1、一種方式是先建立材質,再點擊NODE EDITOR進入材質節(jié)點編輯窗口。
2、第二種方式:在LIVE VIEWER窗口,點擊菜單--MATERIALS材質--OCTANE NODE EDITOR 直接進入編輯窗口。
3、第三種方式,更直接。在OC渲染窗口,直接在模型上右鍵--菜單上選擇NODE EDITOR進入材質節(jié)點編輯窗口。
二、材質節(jié)點編輯窗口:
節(jié)點編輯窗口,節(jié)點過濾和SEARCH都是為了方便查找節(jié)點的管理工具。
每個節(jié)點就像一個模塊:從輸入端口進來數(shù)據(jù),通過節(jié)點進行處理。處理之后,再從不同輸出端口輸送出去。注意的是:每個輸入端口輸入是唯一的,不能有多個輸入,進入一個輸入端口,保證數(shù)據(jù)唯一性。而每一個輸出端口卻可以輸出很多。
三、材質節(jié)點編輯就是“材質編輯方式的改變”
下面簡單演示兩個材質的編輯方式:
第一種傳統(tǒng)層疊編輯方式:操作方便,邏輯性差,資源利用率重復。
2、添加一個IMAGETEXTURE節(jié)點。
3、載入一張大理石貼圖。其實你也可以直接載入紋理,但與IMAGETEXTURE節(jié)點相比,少了很多功能。下面再詳談。
4、更改為GLOSSY材質,設置ROUGHNESS粗糙為0.112左右。
5、點擊OC材質,通過C4DUV設置縮放比例為50%。
第二種材質節(jié)點編輯方式:邏輯清晰,資源利用率高,操作不太方便。(你需要找節(jié)點啊)
1、我們使用上面這種方式直接進入材質節(jié)點編輯窗口。
2、找到OCTANE MATERIAL節(jié)點,拖拽建立一個材質。
3、選中模型,在材質節(jié)點上右鍵,選擇APPLE TO OBJECTS傳遞給對象,把這個材質賦予模型。
4、選中這個材質節(jié)點,右側屬性--基本,設置材質類型為GLOSSY。
5、找到IMAGE TEXTURE節(jié)點,拖拽下來,在右側屬性面板,輸入相同的紋理貼圖。
6、也可以直接把紋理貼圖拽進了。OC自動建立一個IMAGETEXTURE載入這個紋理。
8、選擇OC材質節(jié)點,在右側面板找到ROUGHNESS屬性,設置0.1338左右。
9、如果你想用節(jié)點控制粗糙度也可以,使用FLOAT節(jié)點。可以調整粗糙程度。只不過,ROUGHNESS取值范圍在0-1,而FLOAT提供的數(shù)據(jù)超過了ROUGHNESS接受范圍,但也沒有什么,只要大于1的數(shù)據(jù),在ROUGHNESS看來就是1.
10、我們用傳統(tǒng)的材質編輯器打開就是這樣的。
11、使用OC材質節(jié)點編輯器,我們可以靈活控制OC材質每個通道的UV。添加上面PROJECTION投射節(jié)點和TRANSFORM傳遞節(jié)點。
11、PROJECT節(jié)點告訴IMAGETETURE節(jié)點,使用什么方式投射這個貼圖,默認是MESH UV,就是使用模型自帶UV方式。
12、使用TRANSFORM節(jié)點,我們可以控制UV的移動、縮放、旋轉。上圖,對UV進行縮放0.5 。
13、為了與上面的渲染結果有所區(qū)別,我們更換一個較深的背景。
四、材質節(jié)點研究
? ? ? 要想熟練使用OC材質節(jié)點編輯,首先,你必須熟悉每個節(jié)點的功能,否則,你如何能靈活應用?接下來,借助官方幫助文件,我?guī)ьI大家認認真真研究每一個節(jié)點。從哪個先開始講呢?
4.1? 材質類型節(jié)點:
這與在材質編輯器窗口,直接創(chuàng)建材質很類似。為什么材質節(jié)點沒有PORTAL 材質節(jié)點呢?PORTAL 材質就是一個門戶材質,主要為了“吸引室外光線進入室內”作用,建立就OK了,與任何材質沒有聯(lián)系,也沒有相關屬性。所以,材質節(jié)點編輯也不需要它。
拖入節(jié)點,選中它,右側出現(xiàn)屬性,通過每個通道屬性,進行設置。
4.2? IMAGE TEXTURE節(jié)點:
? ? ? 該節(jié)點用于在任何紋理通道上載入外部圖像。它還能優(yōu)化圖像、簡單處理圖像、處理圖像UV等功能。OC官方建議用這個節(jié)點載入外面的圖像。
IMAGE TEXTURE是顏色和紋理組中的一個重要節(jié)點,我們首先研究它,其他以后再說。
IMAGE TEXTURE節(jié)點使用非常頻繁,上圖實例,通過該節(jié)點,為材質各通道載入各種貼圖,然后再由TRANSFORM節(jié)點統(tǒng)一控制每個貼圖的大小。節(jié)點圖有點混亂,其實邏輯非常清晰。
其實,OC材質的紋理通道可以不通過IMAGETEXTURE節(jié)點,直接載入紋理。
直接載入紋理也可以,但這個BITMAP節(jié)點功能很少。
通過IMAGETEXTURE載入紋理,是OC官方的要求。最好按照官方要求做,不出毛病。
IMAGETEXTURE節(jié)點功能很多,調節(jié)圖像亮度,反向、貼圖重復設置、貼圖優(yōu)化、UV控制等。
4.2 -1 FILE
從這里載入外部圖像紋理。
4.2 -2 POWER:Controls the brightness of the image.
控制圖像的亮度。
4.2 -3 GAMMA:Controls the luminance of the input image.
控制輸入圖像的亮度。
4.2 -4 INVERT
反轉圖像的顏色值。這個功能尤其是使用阿爾法通道貼圖或反射、粗糙貼圖時,效果不對的時候,把圖像反轉,太方便了。
4.2 -4? BORDER MODE
? ? 看下圖,如果載入的紋理圖像沒有完全覆蓋整個模型,將怎樣覆蓋模型?重復、不重復、鏡像?由BORDER MODE來設置。
當紋理圖像很小,不能完全覆蓋模型時,由五種方案供你使用。
4.2 -5 TYPE
? ? ? ? 我們知道,OC渲染器它是GPU渲染,紋理貼圖是“吃”顯存的。如果顯存不夠,渲染就容易崩潰。所以,OC材質如果使用紋理貼圖,必須在這里進行優(yōu)化。如果為漫反射通道載入是彩色圖像,就默認使用“Normal”(翻譯為正常),整個圖像都會轉換為RGB值,保留了彩色信息。當然,這也將極大消耗顯存。如果載入是粗糙或反射貼圖,即使是RGB彩色圖像格式,一定選擇“Float”,把它強制轉化為灰度圖像,從而大大節(jié)約顯存。如果是阿爾法通道,一定要用“alpha”,從而高效地使用GPU 顯存。你明白了嗎?
? ? ? ? 考一考,如果你想載入置換貼圖,如何優(yōu)化?答案是一定選擇“Float”,因為置換需要一張灰度圖。如果載入是法線貼圖,如何優(yōu)化?答案是一定用“Normal”,因為法線貼圖使用RGB三個通道來保存法線坐標的,實際上它是一張彩色圖片。只不過你看不明白,它是給渲染器看的,哈哈。
我上面用一段話說明,但你一定要重視這個地方,否則,你的項目會不穩(wěn)定。
4.2 -6? UV接口
IMAGETEXTURE提供了兩個接口,用于控制紋理的投射和控制。你點擊兩個按鈕就能展開,但我們研究材質節(jié)點編輯,不打算這么用,下面詳談。
注意: IMAGETEXTURE節(jié)點不僅能載入靜態(tài)紋理,也可以載入動畫序列,從而能渲染制作紋理動畫。“動畫”選項卡要求使用“圖像序列”紋理,此選項卡中的選項基于Cinema 4D,邏輯是一樣的。但是有一些事情你需要注意。
一是不要使用MP4和其他電影格式。它們在OC渲染器下就不管用,只需使用圖像序列。二是使用圖像序列最有效的格式是:Tga、Jpeg、Tiff。雖然可以使用Png,但不是很有效。? 三是必須手動輸入幀范圍。
4.3 紋理UV控制組:
? ? ? 過去,我再三強調過,只要材質使用貼圖,就要考慮很多因素,一是顏色空間問題,二就是UV和映射問題。需要告訴OC渲染器,這個紋理怎么往模型上去貼。所以,下面研究的這兩個節(jié)點與紋理,尤其是與IMAGE TEXTURE節(jié)點有密切聯(lián)系。
PROJECTION投射節(jié)點告訴貼圖以什么方式來映射紋理。TRANSFORM對紋理進行縮放、移動和旋轉。
4.3.1 PROJECTION 投影節(jié)點:
此節(jié)點用于調整紋理的UV映射坐標。在許多情況下,在使用IMAGE TEXTURE節(jié)點時,將與“Transform”節(jié)點一起使用它。
注意:如果啟用這個投影節(jié)點,Cinema 4D材質自帶UV映射系統(tǒng)將被禁用。這個節(jié)點雖然不會改變模型的UV,只是在節(jié)點編輯器中對其連接的紋理,應用一個新的UV投影坐標。
【范例一】
1、建立一個OC材質,添加一個IMAGE TEXTURE節(jié)點,載入一個木紋紋理。把這個材質賦予模型。
2、在材質節(jié)點編輯器中,我們沒有為IMAGETEXTURE節(jié)點指定UV映射,所以,OC渲染器默認使用材質外面,C4D系統(tǒng)的UV投射方式。它默認的是UVW MAPPING,也就是說C4D系統(tǒng)使用的是模型自帶的UV映射坐標。當然,你也可以更改為盒子、球形等UV映射方式。
3、上圖,C4D映射默認的是使用模型自帶的UV來投射木紋紋理。顯示,紋理比例有點大了,紋理模糊不清。
4、在這里,調整UV的比例,對貼圖進行映射進行縮放。
5、渲染,清晰多了。模型紋理雖然有接縫,我們先忽略不計。
6、如果,我們?yōu)镮MAGETEXTURE節(jié)點添加PROJECTION映射節(jié)點,那么,它將接管C4D的UV映射系統(tǒng),也就是說C4D的UV映射系統(tǒng)不能用了。這張木紋貼圖在模型上的映射,由這個節(jié)點說了算。它也有很多種映射方式,默認的是MESH UV其實也是使用模型自帶的UV映射坐標。
4.3.1-1 BOX映射方式:如果模型是立方體形狀,最好使用這種方式投射紋理。紋理會從六個方向映射到模型上,缺點是投影平面之間的接縫可能在渲染中可見,這取決于表面的形狀。
4.3.1-2 CYLINDRICAL映射方式:圓柱投影將紋理映射封裝在具有圓柱形狀的表面上。圓柱投影提供了一種快速的方法來映射紋理在粗略的圓柱形狀的表面上沒有太多的失真,然而紋理的接縫可能在渲染中可見。
4.3.1-3 MESH UV映射方式:網(wǎng)格UV投影節(jié)點使用模型自帶的UV坐標,將紋理映射到表面,這是這個節(jié)點的默認方式。
4.3.1-4 PERSPECTIVE映射方式:? 透視映射采用世界空間坐標,并將X和Y坐標除以Z坐標。有點類似C4D的相機映射。
這個投影取世界空間坐標并將X和Y坐標除以Z坐標。這是有用的,如果你想模擬投影儀(即使用此投影的紋理作為分布,并使用黑色邊框模式)。圖像被映射到(- 1,1)-(1,1),因此默認情況下,對于投影機或攝像機映射,不需要使用偏移量。
【范例二】
1、建立OC相機,并激活。拖動到PROJECTION節(jié)點,該節(jié)點投射模式為PERSPECTIVE。使用該節(jié)點的內部變換屬性,修改貼圖縮放為0.5 。
4.3.1-5? SPHERICAL映射方式:球面投影為U和V坐標執(zhí)行經(jīng)緯度映射。
球面投影應用于盒子、圓柱和球體上的球面投影? 。該投影主要用于環(huán)境紋理和IES光分布。它對U和V坐標執(zhí)行經(jīng)緯度映射,對于程序紋理,W坐標是到原點的距離。若要繞垂直軸旋轉紋理圖像(例如HDR圖像),請將紋理環(huán)境圖像的投影轉換為球形,并通過球體轉換滑塊沿Y軸旋轉。
4.2.1-6TRIPLANAR 映射方式:? 從XYZ三個方面對紋理進行映射。等研究TRIPLANAR 節(jié)點時再細說。
4.2.1-7 XYZ TO UVW 映射方式:XYZ到UVW也稱為平面投影或平面映射。這種映射類型接受世界或對象空間中的坐標,并將它們用作UVW坐標。對于圖像,只有X和Y坐標是相關的,它們映射到U和v,換句話說,圖像使用沿Z軸投影的平面映射。 xyz-uvw這種貼圖坐標是可以自動選擇適配物體造型的最佳貼圖形式,不規(guī)則物體適合選擇此種貼圖方式。
XYZ到UVW投影應用于一個盒子、圓柱和球體,XYZ To UVW將圖像紋理映射到(- 1,1)-(1,1)范圍。圍繞Z軸旋轉映射將圖像圍繞中心旋轉,就像UVW旋轉所做的那樣。OC使用對象坐標空間的方式是,紋理投影位于每個實例的局部坐標空間中。如果需要UV映射,可以通過UV轉換在UV空間中應用轉換(平移/縮放/旋轉)。XYZ到UVW的結果取決于它是應用于程序紋理,還是導入紋理。使用XYZ到UVW的程序紋理以類似于盒子投影的方式定向,使用XYZ到UVW的導入紋理以平面方式定向。
從這里你可以設置哪個坐標系統(tǒng),使用其作為UVW。有兩個選項:“對象空間”和“世界空間”。對象空間基于場景中對象的本地坐標。世界空間是基于場景坐標的。
OBJECT SPACE依據(jù)模型的坐標,WORLD SPACE依據(jù)的是場景世界坐標。
【范例三】
2、使用的是OC SKY載入的HDRI照明。其實這個標簽,也是通過IMAGETEXTURE節(jié)點載入一個高動態(tài)貼圖。
3、既然,標簽使用IMAGETEXTURE節(jié)點,那么它也有UV控制兩個接口。
4、點擊PROJECTION投射按鈕,可以更改投射的方式,它默認的是MESH UV,天球對象的UV就是球體。
5、我們首先隱藏背景對象,選擇SPHERCIAL球體映射,渲染之后,結果與默認的MESH UV是一樣的。
6、當然,我們還可以通過PROJECTION節(jié)點自帶的INTERNAL TRANSFORM內部變換屬性,對貼圖UV進行縮放、旋轉、移動。
7、上圖是PROJECTION的映射方式改為XYZTOUVW.
4.3.2? TRANSFORM 變換節(jié)點:
? ? ? 此節(jié)點提供任何紋理的位置/旋轉/縮放控制。
在許多場景中,將其與“PROJECTION投影節(jié)點一起使用。
你也可以使用Cinema 4D的紋理變換工具,但還是TRANSFORM節(jié)點給你更多的UV控制。
IMAGETEXTURE、PROJECTION、TRANSFORM這三個節(jié)點一般都在一起使用。
4.4.1 TYPE 類型
使用哪種類型的轉換。
4.4.1 -1? 2D Transformation: 二維變換為x和y提供尺度和平移參數(shù),而不是z。旋轉參數(shù)將繞z軸旋轉或垂直于物體表面
4.4.1 -2 3D Rotation: 三維旋轉為控制x、y和z軸上的旋轉值提供了參數(shù)。
4.4.1 -3 3D Scale: 三維比例尺提供了控制x、y和z值的參數(shù),因為它們與物體表面紋理映射的比例尺有關。
4.4.1 -4 3D Transformation: 3D轉換為所有三個軸上的旋轉、縮放和平移提供了參數(shù)。
4.4.1 -5 Transform Value: 轉換值節(jié)點類似于3D轉換。
4.4.1 -6 AXES ORDER 軸順序:Type選項下面的下拉菜單用于確定軸的順序。根據(jù)你的目的,你可以選擇其中之一。這些選項為旋轉參數(shù)提供了更令人滿意的結果。
4.4.1 -7 RESET BUTTON 重置按鈕
R.X / R.Y / R.Z:在這里你可以調整你的紋理的旋轉。如果需要的話,您可以將其與類型和順序一起使用。
S.X / S.Y / S.Z:這里你可以調整紋理的比例。如果您選擇“鎖長寬比”,在所有三個參數(shù)中縮放值將是相同的。如果需要,可以使用帶類型和順序的scale值。
T.X / T.Y / T.Z:在這里你可以調整你的紋理的位置。
補充:
一是大多數(shù)材質貼圖都是為 3D 曲面指定的 2D 平面。因此,說明貼圖位置和變形時所用的坐標系與 3D 空間中使用的 X、Y 和 Z 軸坐標不同。特別是,貼圖坐標使用的是字母 U、V 和 W。
二是U、V 和 W 坐標分別與 X、Y 和 Z 坐標的相關方向平行。如果查看 2D 貼圖圖像,U 相當于 X,代表著該貼圖的水平方向。V 相當于 Y,代表著該貼圖的豎直方向。W 相當于 Z,代表著與該貼圖的 UV 平面垂直的方向。
三是2D平面需要象 W 這樣的深度坐標。一個原因是,相對于貼圖的幾何體對該貼圖的方向進行翻轉時,這個坐標是很有用的。為了實現(xiàn)該操作,還需要第三個坐標。另外,W 坐標對三維程序材質的作用非同小可。
【范例四】
1、首先場景建立一個立方體。建立的OC材質,IMAGETEXTURE節(jié)點,設置如上。
3、渲染結果如上。完全不用C4D的UV映射系統(tǒng),使用OC渲染器UV節(jié)點就可以解決了。
4、其實,TRANSFORM節(jié)點,你也可以不用。PROJECTION節(jié)點,內部自帶有“內部變換”屬性,一樣可以控制貼圖的大小、旋轉、縮放。OC渲染器看似簡單,到處有玄機,氣人不?
5、使用PROJECTION節(jié)點的內部變換控制紋理,渲染結果,效果是一樣的。
6、我們還可以使用外部控制變換操作。建立一個NULL空對象,我們用它的坐標位置。
7、PROJECTION映射方式改為BOX,把NULL對象拖進來。
9、點擊實時渲染,我們移動這個NULL對象,你會發(fā)現(xiàn)貼圖也在變換。
10、我們不用TRANSFORM節(jié)點,用NULL對象對貼圖PSR進行控制,這種方式叫外控制。你說OC簡單嗎?太TM靈活了。
【后記】
? ? ? 1、本篇研究的是OC渲染器的節(jié)點嗎?實際上我在研究紋理的載入、優(yōu)化,紋理的UV控制。同時研究了三個節(jié)點,其中IMAGE TEXTURE節(jié)點,這是OC最常用的節(jié)點。官方希望你用這個節(jié)點來載入紋理貼圖,而不是直接載入。還有兩個與UV有關的節(jié)點,PROJECTION映射和TRANSFORM變換節(jié)點。這三個節(jié)點總是配合使用,功能很多,有多種變化。是不是看起來有些發(fā)蒙?其實,上面的東西你知道就行了,在制作的過程中,應用起來并沒有那么復雜,對于簡單的貼圖映射,使用C4D材質外的UV系統(tǒng)控制就可以了,使用上述兩個節(jié)點控制反而顯得麻煩。
? ? ? 區(qū)別:PROJECTION映射和TRANSFORM變換節(jié)能對每個通道的紋理進行“單獨”地控制,而C4D材質外的UV系統(tǒng)只能對所有紋理貼圖統(tǒng)一控制。
? ? ? 2、OC渲染器我寫的文章還是太少了,看下圖,我才完成了兩個模塊的編寫啊! 其實,任何一款渲染器,基本都是這樣的框架,只要你搞懂一款渲染器,其他的按照下面的結構進行自學,很快就會就會熟悉第二個,這叫類比學習。
寫完材質節(jié)點編輯,再重點研究分層渲染和優(yōu)化吧,一步步寫吧,估計寫到年底吧!
? ? ? 3、最近看了貼吧,很多朋友買了1660TI顯卡,在使用OC渲染時,結果出問題了。因為OCTANE和諧版不支持它!OC3.07還是支持GTX1060或GTX1070、GTX1080系列,GTX1660TI與GTX10X0不是一個系列啊!大家要注意。但老顯卡,市場上很少有賣了,買的時候小心“礦卡”。建議你到閑魚上,找靠譜的賣家去買吧!