目錄 其他材料 |
距離——勾股定理,length()函數(shù) 我們有不同的理由需要測(cè)量?jī)牲c(diǎn)之間的距離——例如,書寫一個(gè)跨度計(jì)算腳本或創(chuàng)建鄰近效應(yīng)。正如我們前面討論的,要計(jì)算兩點(diǎn)之間線段的距離,我們只需對(duì)兩點(diǎn)的對(duì)應(yīng)的矢量進(jìn)行減法運(yùn)算,運(yùn)算后所得到的矢量的長(zhǎng)度就是兩點(diǎn)之間的距離。 在AE中,有兩種計(jì)算矢量長(zhǎng)度的方法,一種是復(fù)雜方法,另外一種是簡(jiǎn)單方法。首先讓我們了解一下復(fù)雜方法: 勾股定理 還記得我們中學(xué)幾何中學(xué)習(xí)的勾股定理吧,在該定理中規(guī)定了,直角三角形中斜邊的平方等于兩個(gè)直角邊的平方和: 在前面的教程中我們提到過(guò),任何一個(gè)二維矢量都可以組成一個(gè)直角三角形,所以我們可以使用勾股定理來(lái)計(jì)算任意兩點(diǎn)之間的線段長(zhǎng)度。首先我們通過(guò)計(jì)算來(lái)找到表示兩點(diǎn)之間線段的矢量,然后將它分離出來(lái),最后使用勾股定理就可以計(jì)算出這條線段的長(zhǎng)度。
根據(jù)Javascript語(yǔ)法對(duì)表達(dá)式的規(guī)定,我們需要書寫下面的表達(dá)式來(lái)完成上面的計(jì)算過(guò)程: // 拾取兩點(diǎn) 不是很復(fù)雜是么,但是還有一個(gè)更簡(jiǎn)單的方法。 length(vector) 在AE表示式中內(nèi)置了一個(gè)函數(shù)來(lái)計(jì)算矢量的長(zhǎng)度:length()函數(shù)。將該函數(shù)應(yīng)用到任何維數(shù)的矢量中就會(huì)返回矢量的長(zhǎng)度, 使用length()函數(shù),我們可以重新書寫上面的表達(dá)式: // 拾取圖層 使用這種方法不僅書寫簡(jiǎn)便而且理解記憶起來(lái)要比使用勾股定理要簡(jiǎn)便得多。這種方法還有一個(gè)優(yōu)點(diǎn)就是可以計(jì)算出任何維數(shù)矢量的長(zhǎng)度,我們也可以將勾股定理應(yīng)用到三維圖矢量中,但是非常麻煩。 實(shí)例應(yīng)用:交互模糊
在第一個(gè)合成中,我們分別對(duì)四個(gè)圖層應(yīng)用了快速模糊效果并為它們的模糊程度屬性加入了相似的表達(dá)式,同時(shí)使用一個(gè)名為"Drag Me"的黃色固態(tài)層來(lái)控制受控圖層的模糊程度。在表達(dá)式中我們使用了liner()插值算法將位移的范圍從0至80縮減到40至0,所以當(dāng)控制圖層接近受控圖層時(shí),模糊效果將會(huì)變得更加強(qiáng)烈。 完成上面的設(shè)置后,我們就可以通過(guò)調(diào)整控制圖層的位置來(lái)依次交互的影響四個(gè)受控圖層,在渲染前,將控制圖層的顯示開關(guān)關(guān)掉,這樣我們就可以完成整個(gè)動(dòng)畫了。 下面就是完整的表達(dá)式: // 為受控圖層加入快速模糊效果 實(shí)例應(yīng)用:縮放 在第二個(gè)合成中,我們將類似的表達(dá)式應(yīng)用在了受控圖層的縮放屬性上,創(chuàng)建一個(gè)動(dòng)態(tài)縮放的效果: 在這里表達(dá)式的書寫基本上與前一個(gè)合成中的相同,因?yàn)榭s放屬性是一個(gè)二維數(shù)組(如果轉(zhuǎn)化為3D圖層就是三維數(shù)組),我們只需要將最后一句重新調(diào)整一下就可以了, (要詳細(xì)了解矢量與數(shù)組單擊這里) //重新設(shè)定距離范圍,以使圖層越接近時(shí)縮放值越大,圖層距離越遠(yuǎn)時(shí),縮放值越小 |
所有內(nèi)容版權(quán)歸JJ Gifford.所有,翻譯權(quán)歸CG頻道所有,違者必糾。