AE小教程:讓3D圖層的大小不受距離影響(近大遠(yuǎn)?。?/h5>



發(fā)表時(shí)間:2019年06月01日 12點(diǎn)07分
你一定遇到過在AE里調(diào)整三維圖層的麻煩:在PS或AI中畫了一個(gè)場(chǎng)景,前中后景都有,把圖層變成3D層,你要往前往后拉開距離,因?yàn)橥敢暎ń筮h(yuǎn)小),還要回頭調(diào)一下圖層的縮放,來讓畫面跟你原本畫的平面圖一樣——好費(fèi)勁。
這時(shí)候你可能想過,如果我拉開距離的時(shí)候,圖層遠(yuǎn)了自動(dòng)放大,近了自動(dòng)縮小,在攝像機(jī)里看,整個(gè)畫面沒有發(fā)生變化(縮放補(bǔ)償了透視),這不就完美了!——那么問題來了:圖層往后100像素,它應(yīng)該放大多少,才能在相機(jī)里和以前看起來一樣大呢!中間有什么特殊算法嗎?
答案當(dāng)然是有,以下就是算法:
縮放*(距離差/(1/36*鏡頭焦距*合成寬))
翻譯成表達(dá)式就是:
n = 1/36*35*thisComp.width; //1/36*鏡頭焦距*合成寬
d = position[2]-thisComp.layer("Camera 1").transform.position[2]; //距離差
scale * (d / n); //縮放*(距離差/(1/36*鏡頭焦距*合成寬))
把這句表達(dá)式加在每個(gè)圖層的縮放屬性上,大功告成。
有人可能會(huì)疑惑,為啥會(huì)有個(gè)1/36呢,為什么一定是1/36呢——我也不知道,這是我試出來的,別想為什么,直接用。

可能是因?yàn)槟沐^點(diǎn)不在畫面中央,這個(gè)方法要保證錨點(diǎn)最初位置在合成中央。
大佬,為什么我移動(dòng)Z軸圖片在視圖中的位置會(huì)變,你的GIF里卻沒有變
給樓主一個(gè)大大的贊,太有用了
樓主不了解攝像機(jī)原力,靠蠻力測(cè)出來的
學(xué)習(xí)了 剛研究了一下 好像1/36 是攝像機(jī)里面膠片密度的選項(xiàng) 不知道是否正確
學(xué)習(xí)了 剛研究了一下 好像1/36 是攝像機(jī)里面膠片密度的選項(xiàng) 不知道是否正確
忘了說了,你所有圖片的錨點(diǎn)必須在合成中心!,這樣才不會(huì)在x,y平面偏移
大佬,為什么我移動(dòng)Z軸圖片在視圖中的位置會(huì)變,你的GIF里卻沒有變
大佬,為什么我移動(dòng)Z軸圖片在視圖中的位置會(huì)變,你的GIF里卻沒有變
距離差指物體和攝像機(jī)Z方向上的距離
好東西啊 樓主辛苦 不過你說的 距離差指的是?
好東西啊 樓主辛苦 不過你說的 距離差指的是?
有一點(diǎn)忘了說了,計(jì)算距離的時(shí)候,最好把攝像機(jī)的Z軸也就是position[2],固定一個(gè)默認(rèn)值,也就是剛創(chuàng)建相機(jī)時(shí)候它的z軸的像素值。 這樣不會(huì)讓推拉相機(jī)的時(shí)候,圖片大小也跟著改變,而僅僅在推拉圖片的時(shí)候,圖片才會(huì)自動(dòng)縮放。 n = 1/36*35*thisComp.width; //1/36*鏡頭焦距*合成寬 d = position[2]-(剛創(chuàng)建相機(jī)時(shí)它的默認(rèn)Z軸數(shù)值); //距離差 scale * (d / n); //縮放*(距離差/(1/36*鏡頭焦距*合成寬))
好東西啊 樓主辛苦 不過你說的 距離差指的是?
有一點(diǎn)忘了說了,計(jì)算距離的時(shí)候,最好把攝像機(jī)的Z軸也就是position[2],固定一個(gè)默認(rèn)值,也就是剛創(chuàng)建相機(jī)時(shí)候它的z軸的像素值。 這樣不會(huì)讓推拉相機(jī)的時(shí)候,圖片大小也跟著改變,而僅僅在推拉圖片的時(shí)候,圖片才會(huì)自動(dòng)縮放。 n = 1/36*35*thisComp.width; //1/36*鏡頭焦距*合成寬 d = position[2]-(剛創(chuàng)建相機(jī)時(shí)它的默認(rèn)Z軸數(shù)值); //距離差 scale * (d / n); //縮放*(距離差/(1/36*鏡頭焦距*合成寬))