包含4節(jié)視頻教程
關(guān)注4.3萬(wàn)次
講解face robot運(yùn)動(dòng)捕捉表情動(dòng)畫(huà)的綁定教程。face robot是xsi的獨(dú)立模塊,專(zhuān)門(mén)制作高精度電影級(jí)表情動(dòng)畫(huà)。
手動(dòng)創(chuàng)建的結(jié)果是跟使用層預(yù)制是一樣的,只不過(guò)你可能要稍微理解一下節(jié)點(diǎn)的原理與相互的連接方式,這樣你可以更加深刻地理解到我們Z通道的原理。
我們要使用三個(gè)節(jié)點(diǎn),分別是samplerInfo、setRange和multiplyDivide。其中,samplerInfo是用來(lái)計(jì)算場(chǎng)景中的各種距離法線(xiàn)角度等信息用的,手動(dòng)連接菲涅爾節(jié)點(diǎn)的時(shí)候時(shí)常會(huì)用到,大家不會(huì)陌生。setRange節(jié)點(diǎn)則是一個(gè)映射節(jié)點(diǎn),將原先的綠色變成現(xiàn)在的藍(lán)色,把原先的紅色變成現(xiàn)在的黃色。multiplyDivide就是乘除節(jié)點(diǎn),做一些簡(jiǎn)單的乘除運(yùn)算用的。
我們將samplerInfo節(jié)點(diǎn)的pointCameraZ連接到乘除節(jié)點(diǎn)的input1X,將乘除節(jié)點(diǎn)的input2X設(shè)置為-1,運(yùn)算方式為multiply(乘)。pointCameraZ這個(gè)參數(shù)會(huì)記錄場(chǎng)景中物體上的點(diǎn)到相機(jī)的距離,但是這個(gè)距離測(cè)出來(lái)是負(fù)值,所以我們需要乘除節(jié)點(diǎn),將這個(gè)值乘以-1,變成正值來(lái)使用。
再將乘除節(jié)點(diǎn)的outPutX連接到setRange節(jié)點(diǎn)的valueX。
然后setRange節(jié)點(diǎn)的oldMin、oldMax,Min和Max這幾個(gè)參數(shù),分別代表原來(lái)的最小值和最大值,以及將要映射成為的最小值和最大值。
如果你使用層預(yù)制去做景深材質(zhì),會(huì)默認(rèn)將samplerInfo節(jié)點(diǎn)的cameraNearClipPlane和cameraFarClipPlane分別連接到oldMin和oldMax,而且這兩個(gè)數(shù)值一般是0.1和10000。上一次教程已經(jīng)分析過(guò)了,這個(gè)參數(shù)在很多時(shí)候是非常不合適的。
所以我們手動(dòng)連節(jié)點(diǎn)的時(shí)候,完全不需要去連這個(gè)地方,這些參數(shù),全部由我們自己手動(dòng)控制。使用之前提過(guò)的measure tool里的measure distance tool來(lái)測(cè)出場(chǎng)景的大小。設(shè)置合理的參數(shù)。
對(duì)于一些帶透明通道的物體,如果我們直接使用上述方法直接渲染的話(huà),本來(lái)該是透明的物體會(huì)被渲染成實(shí)心的,不是我們想要的結(jié)果。
(想要的帶透明通道的效果)
(實(shí)際經(jīng)常渲染出來(lái)實(shí)心的效果)
解決這個(gè)問(wèn)題的方法是,在手動(dòng)連接好zdepth材質(zhì)以后,將我們的alpha通道連入材質(zhì)的透明。但是如果你使用surface?shader的話(huà),會(huì)發(fā)現(xiàn)得到非常奇怪的結(jié)果。
原因是,surface?shader的out?color計(jì)算方法像是incandescence屬性,是在所有的結(jié)果計(jì)算完畢以后再加上out?color的數(shù)值。所以,只要你的out?color不為0?的時(shí)候,帶透明的surface?shader計(jì)算結(jié)果都不是我們預(yù)期的結(jié)果。
那么我們要怎么解決這個(gè)問(wèn)題呢?我們會(huì)把一個(gè)lambert材質(zhì)做成surface?shader的效果。具體的做法是將lambert材質(zhì)的diffuse調(diào)為0,ambient?color顏色調(diào)到純白。這個(gè)時(shí)候,我們的lambert材質(zhì)就完全不會(huì)受到燈光的影響,看起來(lái)跟surface?shader完全一樣。這個(gè)時(shí)候,我們將連接好的zdepth節(jié)點(diǎn)連到我們自己做好的lambert材質(zhì)的color里面,再把我們想要的透明信息輸入到transparency屬性里面,就可以渲染出我們期望的效果了。
我將一張渲染好的結(jié)果,分別保存為exr文件(雖說(shuō)是16位,但是具有32位圖片的性質(zhì)),以及png文件(8位圖片)。
對(duì)他們使用fl?out?of?focus進(jìn)行同樣程度的模糊。把合成切換到32bpc,把系統(tǒng)設(shè)置改到sRGB色彩空間,勾選linearize?working?space進(jìn)入線(xiàn)性工作空間。使整個(gè)項(xiàng)目進(jìn)入線(xiàn)性工作流,這樣可以最大程度發(fā)揮32位圖片的功能。
這個(gè)時(shí)候你可以觀察到,雖然是同樣內(nèi)容的圖片,但是在進(jìn)行了同等程度的模糊以后,得到的結(jié)果卻是不同的:
(8位圖片模糊以后的效果)
(32位圖片模糊以后的效果)
可以看出來(lái),主要的區(qū)別在于8位圖片模糊以后,高光沒(méi)有我們32位圖片那么亮。主要的原因是,8位圖片會(huì)把我們的亮度范圍限定在0-1(0-255)的范圍之內(nèi),而32位的圖片卻沒(méi)有這個(gè)限制,它們可以擁有無(wú)限大的亮度。
所以,當(dāng)我們把鼠標(biāo)放在高光點(diǎn)上面的時(shí)候,AE的info面板會(huì)給我們提供像素的亮度信息,8位圖片最亮就是1了,而32位的這張圖片卻可以高到4。
在模糊以后,圖片上高光的能量會(huì)有所分散,于是原先有1的亮度的高光就變得比較暗淡了。但是32位的圖片里,高光本身強(qiáng)度都很大,模糊以后雖然能量分散了,但是還是比8位的要大一些,甚至有些地方的亮度依然有1,為純白色。
從結(jié)果上來(lái)看,我們32位圖片在做后期景深的時(shí)候,往往由于它承載了更多的信息而能獲得更良好的高光虛化。非常的漂亮。所以,當(dāng)我們對(duì)最終結(jié)果要求比較高的時(shí)候,建議大家使用32位圖片來(lái)做后期,并且使用完整的線(xiàn)性工作流。
當(dāng)我們?cè)谥谱饕恍┯兄该鞅又?lèi)的靜物場(chǎng)景,并且想要在后期軟件中制作景深效果的時(shí)候。頭疼的問(wèn)題就來(lái)了。如圖所示,當(dāng)我把焦點(diǎn)設(shè)置在杯子上的時(shí)候,杯子本身是清晰的,通知透過(guò)杯子看到的背景也是清晰的。在真實(shí)世界中卻不是這樣。
產(chǎn)生這種效果的原因和之前的類(lèi)似,因?yàn)槲覀兪褂玫膠depth計(jì)算的是模型,也就是把杯子當(dāng)成一個(gè)實(shí)心的物體,透過(guò)杯子看到的背景被當(dāng)做是在杯子的表面。所以杯子實(shí)的時(shí)候,透過(guò)杯子看到的背景也實(shí),杯子虛的時(shí)候透過(guò)杯子看到的背景也虛。
那么我們要怎么解決這個(gè)問(wèn)題呢?
首先我們要明確產(chǎn)生問(wèn)題的原因在于,使用的z通道,把透過(guò)杯子的背景也理解為在杯子上?磮D,杯子本身是透明可以看到后面的東西和地面的,但是z通道因?yàn)橹挥?jì)算模型本身,所以會(huì)把這些像素都理解是長(zhǎng)在杯壁上的。于是計(jì)算景深的模糊效果以后,會(huì)得到不正確的結(jié)果,尤其是紅色區(qū)域。
可以看到,當(dāng)我們把焦對(duì)準(zhǔn)杯子本身的時(shí)候,背景已經(jīng)模糊了,然后透過(guò)杯子看到的背后的東西依然是清晰的,原因就是這些地方的像素計(jì)算的是上圖的z通道,會(huì)把它們都理解成在杯子上,于是也是清晰的。這當(dāng)然是我們不希望看到的結(jié)果。
那如何解決呢。非常的簡(jiǎn)單:在渲染z通道的渲染層里,把杯子本身的材質(zhì),改成我們場(chǎng)景里的玻璃材質(zhì),于是在計(jì)算z通道的時(shí)候,杯子也會(huì)發(fā)生折射,也會(huì)看到背后物體的深度。就可以得到我們想要的z通道。
這樣的z通道上的黑白信息,就可以比較好地反映像素在場(chǎng)景中真正的深度了。
我們給兩個(gè)不同的z通道重新命一下名。原來(lái)的z通道叫做normalZdepth,后來(lái)做的帶折射的z通道叫做refractiveZdepth。
我們使用refractiveZdepth對(duì)我們的圖片進(jìn)行一個(gè)景深模糊,情況比之前好了很多,但依然有新的問(wèn)題:
當(dāng)我們把焦點(diǎn)對(duì)準(zhǔn)杯子最靠近相機(jī)的高光處時(shí)(圖片紅圈處),杯口處是清晰的,但同時(shí),杯子背后的牙膏居然也是清晰的。明明杯口離我們相機(jī)的距離要比牙膏離我們相機(jī)的距離近很多,卻被理解成同樣一個(gè)深度,都是同樣的清晰。這樣的結(jié)果當(dāng)然也是不正確的。
產(chǎn)生這樣的偏差的原因是,我們杯子的反射、高光和污漬,并不像折射那樣,反映的是背后的物體,而是說(shuō)它們本身就附在杯壁上的。所以對(duì)于反射、高光和污漬,我們要使用normalZdepth作為它們的深度信息,而折射則要使用refractiveZdepth作為它的深度信息。
那么怎么分別對(duì)不同的通道使用不同的景深呢?首先你要在渲染的時(shí)候把我們一張完整的渲染圖拆分成幾個(gè)渲染通道,可以再后期中重新合成最終渲染效果的。在vray里的設(shè)置方法如圖:
然后我們將所有渲染出來(lái)的通道(vray里叫element),放到AE的時(shí)間條上。因?yàn)槲覀兪褂玫氖菢?biāo)準(zhǔn)的線(xiàn)性工作流,所以圖層的疊加模式只要全部選擇ADD模式就可以完美地復(fù)原我們的beauty?pass了。
這個(gè)時(shí)候,我們對(duì)除了refraction以外的通道,全部使用normalZdepth進(jìn)行景深模糊,而對(duì)于refraction通道,我們單獨(dú)使用refractiveZdepth進(jìn)行模糊。這樣,我們就解決了剛才面臨的問(wèn)題了。
(當(dāng)我們的牙膏清晰的時(shí)候,我們的杯口是模糊的)
(當(dāng)我們的杯口是清晰的時(shí)候,牙膏是模糊的)
但是觀察最后這一張圖片,你會(huì)發(fā)現(xiàn)杯子周?chē)幸蝗α吝。產(chǎn)生的原因是由于折射通道在被模糊以后,范圍擴(kuò)散了,散到杯子的外面去了。所以我們用一個(gè)杯子的alpha通道來(lái)遮擋一下。
杯子周?chē)陌走呄Я,但是感覺(jué)alpha切的太生硬了。我們將對(duì)杯子進(jìn)行模糊的效果復(fù)制一份到alpha圖層上面去。讓alpha也有一定程度的模糊。
得到一個(gè)折中的結(jié)果。當(dāng)然還可以通過(guò)更多的手段對(duì)這個(gè)alpha通道進(jìn)行更細(xì)微的調(diào)整,來(lái)達(dá)到更接近我們心理預(yù)期的效果。
最終呢,我們得到一個(gè)類(lèi)似這樣的效果。
雖說(shuō)視覺(jué)上或多或少還是有一些問(wèn)題的。但是畢竟是后期軟件中模擬的結(jié)果。速度比在三維軟件中渲染的要快得多。
在景深虛化不是特別強(qiáng)烈的情況下,這種制作方法是能夠在一定程度上制作出還比較令人滿(mǎn)意的景深效果的。但是如果景深虛化太厲害,那么畢竟后期軟件,模擬的效果就不會(huì)太盡如人意,如果特別想要追求質(zhì)量,那么就只能在三維軟件里面直接渲染景深啦。要多花好多時(shí)間哦。
本期的教程到這里也告一段落了。由于這次教程錄制花費(fèi)的精力有點(diǎn)多,而且錄制得特別晚了,個(gè)人精力有所下降,可能視頻講解部分有一些問(wèn)題,而且視頻畫(huà)面也有一些抖動(dòng),還有一些爆音,音量似乎也不夠大,出現(xiàn)了諸多問(wèn)題,還望各位觀眾海涵。以后我會(huì)為大家?guī)?lái)更多質(zhì)量精良的教程。
朱峰社區(qū)網(wǎng)頁(yè)版(手機(jī)掃描-分享-添加到屏幕)
朱峰社區(qū)微信公眾號(hào)(微信掃一掃-關(guān)注)
未知用戶(hù)
2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號(hào)-1
2005-2025 ZhuFeng Community All Rights Reserved
VIP