當(dāng)前位置:首頁>軟件教程>maya教程>教程內(nèi)容

Maya教程:分析衰減深度帖圖陰影(4)

來源:網(wǎng)絡(luò) 作者:admin 學(xué)習(xí):4688人次

 

 

導(dǎo)言:

這套教程是我很久以前收藏的,雖然教程比較老,但個(gè)人感覺對(duì)衰減深度貼圖陰影分析的非常好,今天拿出來與大家分享,希望對(duì)大家能夠有所幫助。

下面教程開始。

我們可以用使用深度帖圖陰影來模擬柔和的光線追蹤 (RayTracing) 的效果。

衰減 (ATTENUATED) 這個(gè)詞的含義是消減和柔化陰影。在以下的例子中,我們通過調(diào)整陰影的顏色來減弱陰影的亮度。我們這里所演示的技巧在某些場(chǎng)景中是十分有效的。他能極大的減少渲染時(shí)間。例如當(dāng)光線通過使用了透明帖圖的物體或有顏色的透明表面時(shí),就要必須使用光線追蹤。

下面兩圖是左邊用光線追蹤右邊是衰減深度帖圖渲染。效果差不多但是光線追蹤的渲染時(shí)間要多 2.6 倍。(圖01)

圖01

 

Section1

打開場(chǎng)景,包含一個(gè)椅子模型和一個(gè)加上了 attenuated dmap shadow 效果的聚光燈,其名稱為 dmapSoftShadow。(圖02)

 

圖02

 

Section2

在 Hypershade 窗口中的 light 選項(xiàng)卡下選擇 dmapSoftShadow,并點(diǎn)擊 Show Upstream Connections 按鈕,便可以看到這個(gè)聚光燈的網(wǎng)絡(luò)節(jié)點(diǎn)。這個(gè)網(wǎng)絡(luò)是為了從最近點(diǎn)到最遠(yuǎn)點(diǎn)淡化陰影而設(shè)置的,它包含3個(gè) Locators,一個(gè)燈光信息節(jié)點(diǎn)以及一些能驅(qū)使兩個(gè) Ramp textures 調(diào)整陰影的過濾尺寸和顏色屬性的數(shù)學(xué)節(jié)點(diǎn)。

 

Section3

Locator 的作用是在空間里標(biāo)定位置。第一個(gè) Locator 的位置就是聚光燈的位置,他和聚光燈之間有 constrained 的聯(lián)系。另外兩個(gè) Locator 分別在陰影的開始和結(jié)束的位置。(圖03)

 

圖03

 

 

Section4

這3個(gè) locators 與2個(gè) Distance Between 節(jié)點(diǎn)連接,Distance Between 節(jié)點(diǎn)是用來計(jì)算聚光燈和另外兩個(gè) locator 的距離的。

 

Distance Between 節(jié)點(diǎn)輸出的是3D空間上兩點(diǎn)間的距離,是通過下面的公式計(jì)算的。(圖04)

 

圖04

 

(x1、y1、z1) 和(x2、y2、z2)分別是兩個(gè) locator 的坐標(biāo)。

 

注意:必須用MEL命令來創(chuàng)建 Distance Between 節(jié)點(diǎn),輸入 createNode distanceBetween; 命令。這個(gè)節(jié)點(diǎn)不會(huì)在 Hypershade 出現(xiàn),你必須在Outliner 中用鼠標(biāo)中鍵把它拖到 Hypershade 中去。(圖05)

圖05

 

Section5

然后把聚光燈到兩個(gè) locator 的距離連接到 plusMinusAverage Utility 節(jié)點(diǎn)上,并將此節(jié)點(diǎn)設(shè)為 Subtract 方式,這是一個(gè)將聚光燈到兩個(gè) locator 的距離相減的工具,我們可以了解到兩個(gè)距離之差(注意這里是遵循矢量加減法則)。

這個(gè)距離上的差值將決定兩個(gè) Ramp texture 節(jié)點(diǎn)如何影響 dmap shadow 的 Filter Size 和 Shadow Color。(圖06)

圖06

 

 

Section6

為了確定聚光燈到某個(gè)點(diǎn)的距離,必須使用 Light Info Utility 節(jié)點(diǎn)和 Sampler Info 節(jié)點(diǎn),Light Info 節(jié)點(diǎn)與其他節(jié)點(diǎn)連接時(shí)能提供某個(gè)被渲染點(diǎn)的信息。

 

Light Info 與 Sampler Info 不同之處在于需要將一個(gè)燈光信息連接到 Light Info 上。你會(huì)注意到在渲染網(wǎng)絡(luò)中 dmapSoftShadow 聚光燈的 worldMatrix[0] 屬性連接到了 Light Info 節(jié)點(diǎn)的 worldMatrix 屬性上,它告訴了 Light Info 從場(chǎng)景中的什么地方計(jì)算輸出屬性 Sample Distance。

 

Sample Distance 是從聚光燈中心到某個(gè)被渲染點(diǎn)的距離。

 

注意:Light Info 節(jié)點(diǎn)在確定 Sample Distance 時(shí)十分有用。(圖07、圖08)

 

圖07

圖08

 

Section7

Section7 和 Section5 的方法類似,我們用另一個(gè) plusMinusAverage 節(jié)點(diǎn)來確定 Sample Distance 和聚光燈到 startShadow locator 的距離差。為方便起見,這個(gè)差值命名為 sample point difference。(圖09)

 

圖09

 

Section8

上一步中得到的 sample point difference 是用來調(diào)整陰影的。如果這個(gè)值比較小,那么被渲染的點(diǎn)就離 startShadow locator 比較近。如果這個(gè)值比較大,那么被渲染的點(diǎn)就離 startShadow locator 比較遠(yuǎn)。

 

但是這個(gè) sample point difference 地值可以是從0到一個(gè)很大的數(shù),這個(gè)無限的范圍不太適合用于 Ramp 節(jié)點(diǎn) .Ramp 節(jié)點(diǎn)適合于0-1的范圍,為了解決這個(gè)問題,需要使用一些數(shù)學(xué)手段來把這個(gè)距離差值轉(zhuǎn)化到0-1的范圍內(nèi)。

 

我們把 Section5 中得到的聚光燈到 startShadow locator 和 endShadow locator 的距離之差稱為 total difference。

 

使用 Multiply Divid 節(jié)點(diǎn),計(jì)算出 sample point difference 與 total difference 的比值。即 sample point difference 在 total difference 所占百分比。這樣就把 sample point difference 轉(zhuǎn)換到了0-1范圍內(nèi)。

 

注意:對(duì)于位預(yù) startShadow locator 與聚光燈之間和 endShadow locator 之外的點(diǎn)的返回值將不在0-1之間,我們將在下一個(gè)節(jié)點(diǎn) Clamp 中調(diào)整,因此locator 的位置并不需要十分精確的位于陰影開始和結(jié)束的地方。我們可以以后在做調(diào)整。(圖10)

 

圖10

 

 

Section9

Clamp節(jié)點(diǎn)能把輸入值限制在一定范圍內(nèi)輸出,Multiply Divide 節(jié)點(diǎn)在被連接到 Ramp 節(jié)點(diǎn)的 vCoordinate 屬性之前,將通過先 Clamp 節(jié)點(diǎn)來限制范圍。Clamp 的 Min 和 Max 分別設(shè)為0和1,這意味這從 Multiply Divide 節(jié)點(diǎn)過來的輸入值在0-1之間的保持不變,小于0的按0輸出,大于1的按1輸出。(圖11)

 

圖11

 

注意:在 clamp 節(jié)點(diǎn)中只使用 x-channel,這是因?yàn)榫嚯x這個(gè)屬性是單值的,當(dāng)輸入的是 3 值類型的數(shù)據(jù)時(shí) ( 例如顏色的 RGB 值 ) 就要用到其他的 channel。(圖12)

 

圖12

 

在這個(gè)渲染網(wǎng)絡(luò)中,clamp 節(jié)點(diǎn)的輸出值將連接到 Ramp 節(jié)點(diǎn)的 vCoordinate 屬性上。0表示 vCoordinate 在底部,1表示 vCoordinate 在頂部。(圖13)

 

圖13

 

我們可以通過調(diào)整 ramp 的位置和數(shù)值來控制輸出,最后 ramp 將連接到聚光燈的 Filter Size 和 Shadow Color 屬性上。注意: 如果輸入的數(shù)據(jù)沒有經(jīng)過clamp 節(jié)點(diǎn),在 0-1 范圍之外的數(shù)據(jù)將重復(fù) coordinate 的值,會(huì)導(dǎo)致一些不可預(yù)料的結(jié)果。(圖14)

 

圖14

 

Section10

最終將用2個(gè) ramp 節(jié)點(diǎn)來控制 dmap shadow 的 Filter Size 和 the Shadow Color 屬性。

 

Filter Size 將影響 dmap shadow 的柔化和模糊效果,本例中它被 blurInterpolationRamp 節(jié)點(diǎn)控制。這個(gè)節(jié)點(diǎn)有兩個(gè) color entries,在底部設(shè)為2,在頂部設(shè)為 32。

 

這意味著 Filter Size 的最小值為2,這個(gè)值用于渲染離 startShadow locator 最近的點(diǎn),而最大值32將用于渲染離 endShadow locator 最近的點(diǎn),這能給dmap shadow 產(chǎn)生柔化的衰減效果。

 

下圖是將 Filter Size 設(shè)為1和不設(shè)置的比較。(圖15)

 

圖15

 

為了加強(qiáng)最終效果,我們把另一個(gè) ramp 節(jié)點(diǎn)連接到 Shadow Color 屬性上,這個(gè) ramp 的兩個(gè) color entries 的值分別設(shè)為 0.5 和 -0.5. -0.5 將startShadow locator 附近的陰影變暗。而0.5使 endShadow locator 附近的陰影變亮和透明。(圖16)

 

圖16

 

結(jié)論

以上例子證明了我們可以用一個(gè)衰減深度帖圖的渲染網(wǎng)絡(luò)來節(jié)省渲染時(shí)間,在許多情況下能代替光線追蹤的方式。

學(xué)習(xí) · 提示

  • 一定要打開PS,跟著教程做一遍,做完的圖到這交作業(yè):提交作業(yè)
  • 建議練習(xí)時(shí),大家自己找素材,盡量不要用教程提供的素材。
  • 教程有看不懂的地方,可以到論壇發(fā)帖提問:新手求助
  • 加官方微信,隨時(shí)隨地,想學(xué)就能學(xué):ps_bbs,或掃右側(cè)二維碼!
  • 關(guān)注我們學(xué)更多,每天都有新教程:新浪微博 抖音視頻 微信小程序
- 發(fā)評(píng)論 | 交作業(yè) -
最新評(píng)論
暫無評(píng)論,交個(gè)作業(yè)支持一下吧~

關(guān)注大神微博加入>>

網(wǎng)友求助,請(qǐng)回答!