[問題] gluLookAT()是否可以旋轉?

看板C_and_CPP (C/C++)作者 (Fantasy)時間15年前 (2011/03/31 11:21), 編輯推噓3(3012)
留言15則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2008 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenGL 問題(Question): 寫一隻太陽、地球、月亮公轉與自轉的程式,並以滑鼠或鍵盤控制視角。 程式開始執行是以God View的視點(能看到三個星球的運動模式),接著點滑 鼠左鍵則切換到站在地球上的視點,滑鼠右鍵則切換到月球視點,滑鼠中鍵 則切回God View。 目前遇到的問題與預期的結果: 1.我使用glPushMatrix()與glPopMatrix()來繪製整個運動的場景,假如 gluLookAt()丟到push和pop裡面會受到ratation和transformation的影響嗎? 2.我目前切換到地球視角試到的結果是,攝影機只會固定在某個點,看到地球與 月球從畫面由左而右經過,然後就一片黑畫面,我想是只看到公轉的某個部分 而已。請問我應該如何寫出正確結果的1.2之效果?謝謝。 預期的正確結果(Expected Output): 1.使用gluLookAT()來切換視角,當切到地球的時候,想讓攝影機與地球一同 旋轉(自轉),gluLookAt()可以做得到嗎? 2.第二個嘗試是讓攝影機綁在地球上,不隨著地球自轉,讓攝影機看向太陽的 方向並做公轉,畫面應該會呈現太陽與會移動的月球。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.107.152.85

03/31 11:48, , 1F
可視範圍的深淺?
03/31 11:48, 1F

03/31 12:02, , 2F
LookAt應該是設定攝影機所看的點 以ogre的觀點來看拉
03/31 12:02, 2F

03/31 12:04, , 3F
要作到攝影機跟地球作公轉或自轉 應該是作移動或旋轉
03/31 12:04, 3F
我目前使用glutSolidSphere()建立星球,目前的想法是取得地球的座標後, 再套用到gluLookAt()上,這樣攝影機應該就可以跟著地球做公轉,不知道這 個想法是否正確? 假如正確的話,那我應該使用甚麼方法來取得地球的座標呢? ※ 編輯: nick343401 來自: 120.107.152.85 (03/31 16:02)

03/31 17:03, , 4F
我是不知道怎麼從opengl取得地球的座標
03/31 17:03, 4F

03/31 17:03, , 5F
opengl的方面我是不太熟悉
03/31 17:03, 5F

03/31 17:04, , 6F
以你說的解法會變成攝影機固定不動的看著公轉的地球
03/31 17:04, 6F

03/31 17:04, , 7F
我不確定這是不是你想要的
03/31 17:04, 7F

03/31 17:09, , 8F
翻了一下書 你大概需要ModelView跟Projection Matrix
03/31 17:09, 8F

03/31 17:54, , 9F
glutSolidSphere() 建立地球時 在同一位置放 glutlookAt()
03/31 17:54, 9F

03/31 17:55, , 10F
所有對地球做的公轉與自轉動作都要對它做
03/31 17:55, 10F

03/31 17:57, , 11F
2同上 但自轉週期換成地球的公轉週期 ^^^多打了t
03/31 17:57, 11F

03/31 19:26, , 12F
這個程式好像我好幾年前寫過的作業...只是現在都忘記了ˊˋ
03/31 19:26, 12F

04/01 00:15, , 13F
原po的想法ok啊,只是地球座標你要自己做矩陣運算 =w=
04/01 00:15, 13F

04/01 00:17, , 14F
Matrix stack你就當成是一個額外的暫存區好了
04/01 00:17, 14F

04/01 09:29, , 15F
謝謝你們提供的意見,我再試試看
04/01 09:29, 15F
文章代碼(AID): #1Da_CeCv (C_and_CPP)
文章代碼(AID): #1Da_CeCv (C_and_CPP)