2015-04-23 136 views
0

進入C++和OpenGL,從一個Python背景的,那就是你有applyMovement & applyRotation(當然,worldPositionworldOrientation)我覺得我錯過了OpenGL的東西。基本上,我有一個球員,一個立方體。如何移動/旋轉對象在OpenGL根據它的本地位置/旋轉

我希望立方體使用向上/向下箭頭鍵來回移動,始終在位置它面臨着。然後,用左/右箭頭,我想讓玩家圍繞它旋轉自己的原點。因此,我將結束與控制方案的一個老生化危機風格(坦克控制)

現在,glTransposeglRotate工作,但根據兩者我做第一,似乎在正確的移動方向,但圍繞世界原點旋轉。

OR

它繞其自身的軸線,但運動總是根據世界軸。

我不想移動/旋轉世界或世界+相機,因爲我正在尋找第3人修復相機遊戲。基本上我正在尋找做什麼apply移動/applyRotation在Python中完全相同。但是,我可以就如何實施這些想法接受我的觀點。

回答

0

由於您正在使用即時模式進行渲染,因此首先需要glTranslate對象中心的負向量,應用旋轉,然後glTranslate回到其位置。實際上:

glTranslate(-center.x, -center.y, -center.z); 
glRotate(...); 
glTranslate(center.x, center.y, center.z); 

現在這只是渲染部分。對於運動,您需要跟蹤立方體旋轉的角度,並使用正弦和餘弦來前後移動。