2011-07-20 47 views
4

我會精確的提出我的問題,我有一個在二維世界(X,Y)中移動的二維對象,並且我想在Z軸上僞造一個運動。所以我相信最好的方式就是玩它的範圍(寬度,高度)和位置。 但是,如何確定尺寸爲(w,h)的物體的新範圍並從相機(Z軸)前方1米處移動?這個函數的參數是什麼?如何僞造在Z軸上移動的2D精靈?

在此先感謝您的幫助。

+0

讓精靈變大還是變小?如果您使用的是2D等軸視圖,則還需要曲線移動。 –

回答

6

由2D投影(K*X/(Z+K),K*Y/(Z+K))由來自攝像頭的平面K單元上面存儲對象的真實(X,Y,Z)座標和顯示屏用投影,其中+Z移動遠離相機。

要更改高度,寬度將遵循與精靈的真實大小和(K*DX/(Z+K),K*DY/(Z+K))明顯(繪製)大小相似的模式。

要做到這一點,你可以按照這FlipCode文章的建議。

+0

感謝您的鏈接! – Silouane

2

主要參數是到相機的距離和孔徑角度。

new_size = size/distance確定新的尺寸很簡單。 注意,沒有距離的物體的大小是無限的。 爲了得到孔徑角度的效果,您希望包含另一個因子fnew_size = f * size/distance 其中f是單位大小的距離。單位大小的距離是圖像以原始大小繪製的距離。 當然,這也不能爲零。通過這個距離,你可以非常確定孔徑角度。

當我談論大小我的意思是寬度和高度,所以公式適用於兩者。

我希望你可以按照我的解釋。

+0

是的我明白你的意思,謝謝你的回答。 你認爲「單位大小的距離」可以用某種方式計算嗎?像相機的特徵(fov,比率)。 – Silouane

+0

你可以進一步改進:new_size = f * size /(f + distance)。這樣,距離爲0的尺寸將爲1,距離爲f的尺寸爲原始尺寸的一半,等等。 – tehvan

+0

右側偏移距離並將「zeropoint」移動到相機後面。 – Nobody

0

寬度和高度將與觀看者的距離成反比。如果它們距離兩倍,那麼尺寸就是一半。所以,如果觀衆的「自然」距離是A,新位置是A + Z,則需要將原始寬度和高度乘以A /(A + Z)。這也適用於Z值較小的負值(物體距離觀看者越近並且看起來越大)。