2013-01-02 120 views
3

中心場景的-I有一個場景這基本上是一個正方形底板測量15×15(具有座標(0,0,0四)(0,0,15)(15,0,15) (15,0,0))。OpenGL的旋轉相機圍繞

我已經設定的中心的場景是在(7.5,0,7.5)。問題是我無法弄清楚如何在相機場景中心水平旋轉攝像機(也就是讓攝像機圍繞場景中心做一個360度的水平圓)。我知道你需要用罪和cos做點什麼,但不知道究竟是什麼。

下面是代碼(純C):

//set camera position 
//camera height is 17 
GLfloat camx=0, camy=17, camz=0; 

//set center of scene 
GLfloat xref=7.5, yref=0, zref=7.5; 

gluLookAt(camx, camy, camz, xref, yref, zref, 0, 1, 0); 

//projection is standard gluPerspective, nothing special 
gluPerspective(45, (GLdouble)width/(GLdouble)height, 1, 1000); 
+0

嗯,你只是定義。要實際旋轉它,你需要改變camx,camy,camz,並讓它看起來(xref,yref,zref)。因此,如果代碼中有update()方法,則應該圍繞所需旋轉軸計算正確的x,y和z增量。你對旋轉矩陣有什麼瞭解嗎? – ChaoSXDemon

+1

*我知道你需要做一些與罪和cos有關的事情,但是不知道究竟是什麼。* Y你沒有先讀過關於數學的書嗎?我不想讓你灰心,但3D圖形至少需要*一些*數學知識。如果我只是「向您發送代碼」,您將在5分鐘後回到類似的問題。看看http://arcsynthesis.org/gltut,它有很好的數學背景。 –

回答

4

您需要修改CAMX和camz變量。

要穿過的點位於圓上,其座標由x = r*sin(alpha) + 7.5, z = r*cos(alpha) + 7,5確定,其中r是圓的半徑,alpha是xy平面與攝像機當前位置之間的角度。

當然,角度取決於旋轉速度以及動畫開始的時間。基本上,你需要做的唯一事情就是設置正確的角度,然後從上面的表達式計算座標。

有關圓座標的詳細信息,請參見維基:本照相機的看着http://en.wikipedia.org/wiki/Unit_circle

1

我認爲有兩種方法可以使用:

您可以使用正弦/餘弦來計算你的camxcamz位置。 This圖片是一個很好的例子,它是如何工作的。

另一種方法是將攝像機移動到7.5, 0, 7.5,然後用你想要的相機角度旋轉的攝像頭。之後,您移動相機-7.5, 0, -7.5