包含33節(jié)視頻教程
關(guān)注29.5萬次
社區(qū)推出高端女性角色的基礎(chǔ)上,打造具有中國風(fēng)十足的古式女性盔甲戰(zhàn)士系列教程。主要使用maya建模、ps和mari材質(zhì),vray渲染等,本項(xiàng)目技術(shù)可用在次世代和影視級角色的制作上,采用4k高解析度。內(nèi)容涵蓋完整的制作流程和豐富的老師經(jīng)驗(yàn)談,創(chuàng)作思路和創(chuàng)作技巧融于其中,其細(xì)致程度和老師的專業(yè)性是不可或缺的。
渲染樹木可以說是非常困難的一件事,因?yàn)闃涓珊蜆淙~有著不一樣的著色需求,它們各自還需要連接到合適的動畫和交互之上。
早期用于生成這種幾何圖形的工具是Paint Effects,因?yàn)樗軌蚍浅3晒Φ刈龀鲎匀坏乃夭,特別是當(dāng)多邊形在RMS的真實(shí)著色器中轉(zhuǎn)換和著色的時候。雖然Paint Effects擁有一定的優(yōu)勢,但是要成功制作樹木還是會有一些困難。原來我是打算使用新的GP Paint Effects著色器的,但是Paint Effects本身還存在一些缺陷,比如說它不能處理UV,所以我決定將畫面中的多邊形都轉(zhuǎn)換成Paint Effects。我做出這個決定時,首先擔(dān)心的是畫面的復(fù)雜度,大型的多葉樹木可能會有大量的多邊形,尤其是可以看到所有樹木的場景。這時候就需要用到Alembic緩存和RenderMan RibArchives。
對于這個項(xiàng)目來說,非常重要的一點(diǎn)是同步動畫和原始Paint Effects節(jié)點(diǎn)之間的變動,所以在生成樹木的過程需要采用非破壞性的方法。你首先會注意到的是一個被命名為“oakTree_LeavesUV”的隱藏節(jié)點(diǎn),這是“oakTree_Leaves”的副本。該副本是用于將UV轉(zhuǎn)移到原始的“oakTree_Leaves”節(jié)點(diǎn)的,因?yàn)镻aint Effects會嘗試生成每一幀的UV,這樣實(shí)際上會重置每一幀樹葉上的UV,但是我們需要每一幀的UV保持一致。
我也將橡樹分成了3個獨(dú)立的對象,這樣可以盡可能高效地處理它們,這三部分分別是樹葉、枝干和樹干。我將樹干和枝干獨(dú)立出來是因?yàn)榇蟛糠值闹Ω啥紩粯淙~遮蓋,因此對于我們的鏡頭來說,不使用材質(zhì)貼圖來著色枝干也是可以接受的。樹干成為了獨(dú)立的幾何圖形之后,我們要處理的多邊形數(shù)量就降低了,意味著我們可以高效地進(jìn)行造型和繪圖,而且文件大小也可以變得很小。
RMS的其中一個優(yōu)勢是它能夠很好的處理PTEX文件。這些文件可以為不帶UV的模型添加材質(zhì)。通常來說材質(zhì)填充器會在2D畫布上填充像素,但是PTEX文件可以在3D畫布上填充Texel,因此模型本身就不再需要(UV)2D表示。有幾個繪圖和造型軟件都可以很好地兼容PTEX,包括Mari和Mudbox。
為了實(shí)現(xiàn)合適的Mudbox工作流,我們在導(dǎo)入和導(dǎo)出時需要考慮某些屬性的問題。還有一點(diǎn)很重要的是,素材在最終完成之后的拓?fù)浣Y(jié)構(gòu)不能更改,因?yàn)镻TEX會對每個表面分配一個ID,所以如果更改拓?fù)浣Y(jié)構(gòu)的話,分配到的ID就會出錯。
Mudbox的PTEX設(shè)置
我們首先要做的是先了解PTEX的工作流和向量置換(vector displacement)。為了提取準(zhǔn)確的貼圖,我們需要確保導(dǎo)入的基礎(chǔ)網(wǎng)格在整個繪圖和造型過程當(dāng)中不會受到影響,所以就需要在一個副本網(wǎng)格中完成所有的操作。在一個新的圖層中進(jìn)行造型也是很好的做法,這樣就可以避免影響到原來的幾何圖形。
為了準(zhǔn)備好導(dǎo)入的幾何圖形,我們需要進(jìn)入“Mesh”>“PTEX Setup”,然后你會看到下圖所示的窗口。這個窗口可以對你的幾何圖形應(yīng)用Texel分辨率,這個選項(xiàng)可以在調(diào)整的過程中隨時改變。對于樹木,我選擇的是4百萬Texel,相當(dāng)于2K的材質(zhì)。Texel的數(shù)量越多,文件的大小就越大。這是我們需要記住的一點(diǎn),因?yàn)镻TEX文件會比傳統(tǒng)的光柵圖像大得多。
Mudbox的PTEX向量置換
為了確?梢詼(zhǔn)確導(dǎo)出向量置換,請將原始模型設(shè)置成“Target Model”,并將副本網(wǎng)格(帶有全部細(xì)節(jié))設(shè)置成“Source Model”。這樣做可以確保你會將VD貼圖分配到Maya中沒有改動過的幾何圖形。請不要選擇“Smooth Target UVs”,因?yàn)槟阍诩?xì)分和準(zhǔn)備原始幾何圖形的時候已經(jīng)完成這項(xiàng)操作了。
請不要改動Texel的“Density”,因?yàn)檫@樣做會覆蓋掉模型原來的Texel分辨率。最好是將“Use PTEX Setup”選擇為“Texel Distribution”,這樣就可以禁用前面的兩個屬性。你還需要確保將“Object”選擇為“Vector Space”,這是PTEX文件唯一可以用于不含UV的幾何圖形的方法。通常我們在“Data Format”設(shè)置中都需要選擇一種浮點(diǎn)圖像格式,這樣做是為了有足夠的數(shù)值來保存細(xì)節(jié)。
你在導(dǎo)出文件之后就可以在“ptxview”中查看它,你會在里面看到帶有3D幾何圖形信息的PTEX文件。
GP著色器向量置換
GP著色器擁有針對向量置換的內(nèi)置設(shè)置。我們首先要做的是將“Displacement Mode”設(shè)置成“Mudbox Vector (Obj)”,這樣可以將PTEX貼圖分配到模型的局部坐標(biāo)空間中。這個向量空間對于不含UV和變形的幾何圖形來說很有用。樹干部分能夠完美的適應(yīng)這兩種類型!癉isplacement Scale”應(yīng)該保持在“1.0”,除非你需要做出一些明確的改動。它能夠?qū)?yīng)Mudbox的準(zhǔn)確置換量。正如我們在Car Chapter中所看到的,PTEX貼圖必須連接到“Vector Displacement”屬性的主輸入中,如果你嘗試將它連接到每個通道的話是不行的。
一般的Maya文件節(jié)點(diǎn)都能很好地適用于PTEX文件,不過請確保添加一個RenderMan材質(zhì)屬性,用于過濾和gamma控制。
PTEX Support
另外一個非常重要的屬性是PTEX Support,它是添加在幾何圖形形狀節(jié)點(diǎn)上的,具體位置“Attributes”>“RenderMan”>“PTEX Support”,如果沒有這個設(shè)置的話,渲染器不能渲染PTEX文件。請保持這些屬性為默認(rèn)狀態(tài),除非你明確需要補(bǔ)償PTEX參數(shù)。
請通過使用SGA面板分配PTEX Support屬性到多個形狀節(jié)點(diǎn)上,這樣可以幫助你追蹤多個對象的嵌套屬性。
置換屬性(Displacement Attributes)
另外一個重要的屬性是對象的Displacement Bound。RenderMan里面所有的對象都有一個相關(guān)的邊界框(bounding box),它能夠高效地將對象讀取到內(nèi)存當(dāng)中。為了保留這種高效性,Displacement Bound屬性會向渲染器指示表面邊界框的擴(kuò)展程度,這樣的話它就能包圍表面的置換點(diǎn)。通常來說,你可以將Displacement Bound設(shè)置成“Displacement Scale”乘以“Float Displacement”(或者“Vector Displacement”)的結(jié)果,然后如果你看到任何的置換警告或者畫面假象的話,可以適當(dāng)增加Displacement Bound。如果設(shè)置值太高的話就會占用大量的內(nèi)存,所以要盡可能地取一個準(zhǔn)確的值。GP著色器有一個用于Displacement Bound的自動估值器,不過我認(rèn)為手動設(shè)置這個值會更安全一些,特別當(dāng)你的置換貼圖較大的時候。
這些單元代表的是標(biāo)準(zhǔn)的Maya單元,而且會隨對象的大小改變,所以在沒有鎖定變形的情況下,請謹(jǐn)慎調(diào)整對象的大小,因?yàn)槟阌锌赡軙玫街脫Q量和不正確的Displacement Bound。請點(diǎn)此了解更多相關(guān)信息。
一個非常重要的屬性是將光線追蹤設(shè)置為“Trace Displacements”。在默認(rèn)狀態(tài)下,RenderMan不會對置換進(jìn)行光線追蹤,這是為了避免計(jì)算每個有置換貼圖產(chǎn)生的細(xì)節(jié)的反射和陰影。雖然這種做法在深層陰影工作流中可以快速做出優(yōu)秀的結(jié)果,但是會在對陰影進(jìn)行光線追蹤時會在負(fù)置換值上增加許多不必要的假象。
如果將Trace Displacements設(shè)置成“None”,置換就會被忽略,這樣可能會造成不必要的陰影和反射假象,因?yàn)楣饩沒有考慮到置換,所以只會追蹤原始的形狀。如果將該屬性設(shè)成“All”,光線會追蹤置換貼圖生成的每個多邊形,這樣的話成本就會很高,但這是最準(zhǔn)確的方法。另外一個有趣的選項(xiàng)是將Trace Displacements設(shè)成“FIne”,這樣的話光線就會只追蹤光源或者光線變窄的位置。
著色器的網(wǎng)絡(luò)非常簡單,它獨(dú)特之處在于帶有Maya 3D Brownian材質(zhì)的高光分散(specular breakup)。它可以在光線照到的樹干邊緣添加一些微光。不用害怕空白的材質(zhì)預(yù)覽和樣本,這是Maya對PTEX和某縣光柵化文件的限制。即使著色器看起來沒有經(jīng)過編譯,但是它渲染起來不會有問題。請使用腳本編輯器重復(fù)檢查可能的錯誤。
樹葉
對于渲染器來說,渲染樹木是一項(xiàng)成本高昂的工作。樹葉需要有透明度(transparency)和半透明度(translucency),所以如果我們沒有準(zhǔn)確理解GP著色器的話,對成千上萬的樹葉進(jìn)行光線追蹤會消耗大量的時間。
我們的視覺發(fā)展需要的是秋季的大樹,上面長滿各種顏色的樹葉,這樣就可以柔和的背景產(chǎn)生良好的對比。這種樹葉會造成一些技術(shù)方面的挑戰(zhàn),包括樹葉變化和恰當(dāng)?shù)陌胪该髦。為了做出樹葉變化,我利用djPTFXUVs這個來自David Johnson的優(yōu)秀腳本,將它們的UV隨機(jī)分成4個UV殼。我也能夠通過使用primvas隨機(jī)化每片葉子的材質(zhì)查找來實(shí)現(xiàn)這點(diǎn),不過這樣做可能會給葉子生成數(shù)千個節(jié)點(diǎn),然后會讓Maya(更不要提RIB生成了)的速度變得非常慢。
SideMask
我們的樹葉著色器使用了一個叫做SideMask的節(jié)點(diǎn),來自RMS4。這個節(jié)點(diǎn)可以使用表面的前后法線,你可能會問為什么不使用帶有Maya節(jié)點(diǎn)的翻轉(zhuǎn)法線(flipped normal)呢?其實(shí)原因很簡單,RenderMan Pro Server 17改變了表面定位的方法,它使用全新的光線追蹤遮蔽器來準(zhǔn)確定義背面剔除。你可以點(diǎn)此了解相關(guān)信息。
為了做出每片樹葉應(yīng)有的細(xì)節(jié),我在葉子的兩面使用了不同的材質(zhì)。我也添加了一個multiplyDivide節(jié)點(diǎn),加倍材質(zhì)的數(shù)值,不過只是針對般透明度,所以能夠毫無障礙接收光線的樹葉會比其他樹葉更加明亮。
透明度
開始時我嘗試了一些折中的方案,希望加快渲染的速度,比如說不使用透明度。我覺得深色的陰影會是一個很好的折中方案,但在經(jīng)過一些測試之后,我決定采用一個更加細(xì)致和真實(shí)的方法,就是使用半透明度來做出透明的樹葉。這種做法會犧牲一些渲染時間,你們可以在下面的例子看到這點(diǎn),但是樹葉看起來會變得自然得多,特別是在動畫當(dāng)中。
透明度只有在oakTree_Leaf_Shader當(dāng)中的Computes Opacity設(shè)置準(zhǔn)確的時候才能正確使用。為了做出準(zhǔn)確的陰影,我們需要選擇“Compute”(用于透明表面)或者“View Dependent”(用于類玻璃表面)。對于樹木我選擇的是“Compute”,因?yàn)閷τ谌绱舜罅康臉淙~來說,選擇“View dependent”的成本太高了,而且它也不會帶來額外的好處。后者最適合與GP Glass著色器結(jié)合使用,利用Shadow Darkness屬性來模擬玻璃和彩色的陰影。
在開始進(jìn)行透明度計(jì)算之前,請先研究樹葉的類型。
某些干燥和厚重的樹葉的透明度較低,所以它們不需要進(jìn)行透明度計(jì)算。
半透明度
GP Shader的Translucency屬性在模擬燈光吸收時可以起到很大的幫助,它的成本要比SSS低得多,而且能夠做出很好的超薄幾何圖形,如果采用次表面散射的話,計(jì)算量會非常浩大。不過要記住的一點(diǎn)是Translucency只在啟用Transparency和Computes Opacity設(shè)置成“Calculate”的情況下有效,不然的話你不會看到任何的效果,除了一些奇怪的噪點(diǎn)之外。還有一點(diǎn)要注意的是半透明度只在現(xiàn)有的表面上可見,你不會在表面的前方看到這種效果。
我們使用的是著色樹葉的韋恩圖,我們使用分層材質(zhì)在顏色貼圖上疊加這個韋恩圖。這樣就可以更加真實(shí)地實(shí)現(xiàn)半透明的效果。
RibArchive工作流
我們在RMS18中最有趣的功能之一是全新的RibArchive工作流,尤其是當(dāng)它結(jié)合到Alembic緩存的時候。使用RibArchive的好處有很多,因?yàn)樗軌驅(qū)⒋罅康臄?shù)據(jù)(比如說我們的樹木)轉(zhuǎn)換成單個.zip格式的RIB文檔,這個文檔能夠作為單個邊界框來讀取,因此能夠在Maya上釋放大量的內(nèi)存,減少所需的計(jì)算量,并大幅提升RenderMan的速度,因?yàn)樗恍枰诒砻嫔线M(jìn)行ribgen操作。例如,你可以想象場景里面有1000棵樹木,每棵樹都有幾千個節(jié)點(diǎn),但你可以預(yù)覽1000個表示樹木的邊界框,這樣就不會導(dǎo)致Maya崩潰。接下來我們再想象同一個場景,但是邊界框換成了Alembic緩存,這樣你就可以看到帶有動畫的完整樹木!Alembic緩存和RibArchive結(jié)合起來可以達(dá)到很強(qiáng)大的功能。
除了能夠帶來視窗和ribgen的大量加速之外,你在制作流程方面得到很多好處。你可以對原始素材進(jìn)行重新著色,而且RibArchive可以理解重新編譯的著色器,并一下子將其應(yīng)用到整個制作流程!RibArchive也能夠很好地適用于Dynamic Binding系統(tǒng),你可以在這個系統(tǒng)中重新著色一個RibArchive,甚至完全不會影響到原來的著色器。我們會在以后的章節(jié)中進(jìn)一步探討這方面的內(nèi)容。如果想了解深入的解釋,請觀看RibArchive docs。
GPU Alembic緩存
針對我們的橡樹,我使用了結(jié)合RIbArchive的GPU Alembic緩存。為了實(shí)現(xiàn)這點(diǎn),我們需要確保選中主要的oakTree組,并進(jìn)入Animation > Pipeline Cache > GPU Cache > Export Selection選項(xiàng)框。確!癘ptimization Threshold”有較高的取值,這樣我們就可以預(yù)覽樹木大部分的細(xì)節(jié),大概40000個頂點(diǎn)就有很好的效果了。請保留其他所有屬性為默認(rèn)值,這樣我們就可以估計(jì)每一幀的動畫。一個比較方便的工作流是將Alembic Cache和RibArchive命名為準(zhǔn)確對應(yīng)的名字(區(qū)分大小寫)。
GPU Alembic緩存會存放在顯存當(dāng)中,它的大小會比系統(tǒng)內(nèi)存更低。
有時候使用傳統(tǒng)的Alembic緩存來保存GPU資源會更好。
RibArchive
現(xiàn)在我們的橡樹可以被轉(zhuǎn)換成一個RibArchive。要做到這點(diǎn),我們需要選中主要的oakTree組,然后使用RenderMan > Rib Archives > Create Node and Write Archives選項(xiàng)框。我們需要確保選中“Start/End”,這樣就可以保存帶有動畫的RibArchive。很重要的一點(diǎn)是要記得啟用“Render Globals”中的“Motion Blur”,這樣會稍微降低ribgen的速度,但是我們可以靈活地啟用和禁用最終場景的Motion Blur。
RMS完成ribgen之后,它會在$PROJ/renderman/ribarchives路徑中保存文檔,這是所有RibArchive保存的位置。著色器也會以同樣的文件結(jié)構(gòu)保存,你在保存RibArchive時產(chǎn)生的GPU緩存也會保存在同一位置。這樣的話文件之間的傳輸會方便得多。RibArchive會限制于$PROJ/renderman/ribarchives/objectRibArchiveShape/shaders路徑下的著色器,不過你可以在該文件夾覆蓋任何的新著色器,不會影響到RibArchive。
Alembic+RibArchive
想要整合新生成的素材,我們可以采用如下的幾個工作流:第一個是將GPU Alembic Cache導(dǎo)入到一個新場景中,并在選中Alembic節(jié)點(diǎn)的同時生成一個RibArchive節(jié)點(diǎn)。這樣可以生成一個自動帶有同一命名的GPU緩存節(jié)點(diǎn)的RibArchive節(jié)點(diǎn)。(我之前說過將兩個節(jié)點(diǎn)命名為同一個名字會很方便!)在默認(rèn)狀態(tài)下,RibArchive會通過Content屬性的“Siblings”與Alembic緩存交換數(shù)據(jù),因此可以在渲染期間使用RibArchive覆蓋Alembic文件。
第二個的步驟跟前面的一樣,但是這次沒有使用“Siblings”,而需要使用Content屬性中的“Exisiting RIB Archive”。這樣可以確保RibArchive不會跟父文件交換數(shù)據(jù)。不過這種方法的缺點(diǎn)是需要將Archive放到它們各自的分組,并手動從RibArchive中分離Alembic Cache。這時我們明顯需要隱藏Alembic的節(jié)點(diǎn)(或者將它們變成模板)來避免渲染它們。
第三種工作流是在編寫RibArchive的時候勾選Export GPU Cache。這樣可以同時做出RibArchive和GPU緩存,并自動將它們整合到Maya場景中。值得注意的一點(diǎn)是,新生成的GPU緩存不會保存到標(biāo)準(zhǔn)的Maya位置中,而是在上面所說的RenderMan文件夾結(jié)構(gòu)中。請確保時刻跟蹤這種情況,避免出現(xiàn)重復(fù)的文件。
回顧
使用PTEX文件來發(fā)揮幾何圖形的優(yōu)勢,不然的話它的UV會需要過多的處理時間。
確保使用正確的向量編碼,謹(jǐn)記不要在分配好PTEX文件之后對拓?fù)浣Y(jié)構(gòu)進(jìn)行改動。
RenderMan的其中一個優(yōu)勢是它處理置換速度。請盡可能地多使用置換,避免場景中出現(xiàn)過多的幾何圖形。
確保在著色器中使用“SideMask”節(jié)點(diǎn),準(zhǔn)確使用表面定位。
透明度和半透明度可以增加真實(shí)感,不過需要增加渲染時間。
結(jié)合使用RibArchive和Alembic Cache,提升視窗性能和制作流程的靈活性。
朱峰社區(qū)網(wǎng)頁版(手機(jī)掃描-分享-添加到屏幕)
朱峰社區(qū)微信公眾號(微信掃一掃-關(guān)注)
未知用戶
2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號-1
2005-2025 ZhuFeng Community All Rights Reserved
VIP