這幾個(gè)demo上星期平安夜做的,感覺效果不錯(cuò),就放在出來,分享給大家。
要在二維空間模擬出三維的效果,就需要把三維的坐標(biāo)轉(zhuǎn)換成二維坐標(biāo)。一個(gè)最基本依據(jù)是:東西越遠(yuǎn),看到大小就越小,坐標(biāo)越往消失點(diǎn)靠攏。
透視公式:
scale = fl / (fl + z);
scale是大小的比例值,0.0到1.0之間,fl是觀察點(diǎn)到成像面的距離,通常這個(gè)值是固定,z就是物件的三維空間中的z軸。
在寫這些代碼之前,我喜歡用面向?qū)ο髞砻枋鑫覍懙倪@些東西,比如我需要一個(gè)場景,場景是個(gè)空間,空間內(nèi)是可以容納各種物件的,物件是個(gè)對象,物件是是x,y,z三個(gè)維度的,場景可以插入任意多的物件,物件就會以它的坐標(biāo)值,顯示在場景的特定位置,由場景來負(fù)責(zé)物件的顯示位置。
一些demo,請使用鼠標(biāo)移動及滾輪來控制。
效果1:
提示:可修改后代碼再運(yùn)行!
效果2:
提示:可修改后代碼再運(yùn)行!
效果3:
提示:可修改后代碼再運(yùn)行!
效果4:
提示:可修改后代碼再運(yùn)行!
本文來源:博客園 作者:OD BLOG