2013年12月17日 星期二

[openGL] 人在 3D 中前後移動及往左往右看

[一] 目的

    在 openGL 中,3D 畫面是透過計算畫出模擬人的位置往某個特定的方向看,

    所看某個物體的樣貌,而更進階的,為了朔造出不僅能讓人看某個東西所得

    的影像,還能更進一步的移動人的位置,而看不一定的角度和畫面,這一篇

    主要就是在講怎麼用 openGL 的函式庫達成

    在 3D 的畫面中移動,有兩種方法,第一種,移動整個場景,但是不移動眼

    睛所在的位置及眼睛所看的地方;第二種,移動眼睛所在的位置及眼睛所看

    的地方,但是場景不移動。

[二] 移動場景,不移動眼睛座標及視角

1.    想法: 當前後移動時,非常簡單,修改場景中所有的物體的 z 值就可以達成;

                 當要換方向看時,應該要讓場景中所有物體繞著眼睛所在的方向進行公轉,

                 公轉方法可以看上一篇

        (p.s) 當看的方向改變時,移動方向也應該改變,
                                                此時只要算 sin 和 cos 就可以得到各方向的移動距離囉

2.    因為這個比較簡單,所以就不寫 pseudo code 惹 XD

[三] 不移動場景,移動眼睛座標及視角

1.    想法: 首先,先將眼睛看的位置(position)放在離眼睛(eye)距離 1 的地方,當前

                 後移動時,將 eye 和 position 的 z 值同時加減 1 即可,一樣的,當看的方

                 向不同時,一樣要算 sin 和 cos,才能得到正確的各方向移動位置;而當

                 視角改變時,則是應該固定 eye 的位置,用 sin 和 cos 去調整 position 即可

2. 這 pseudo code 反而太麻煩,不想寫 = =

沒有留言:

張貼留言