Re: [程式] 關於openGL球滾動的問題
看板GameDesign (遊戲設計)作者littleshan (我要加入劍道社!)時間16年前 (2008/10/04 09:37)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/2 (看更多)
※ 引述《liamgallager (絕對可能)》之銘言:
: 小弟想畫一顆球在地上滾動
: 球會隨著移動方向跟著轉動
: 小弟是這樣寫的
: glRotatef(zrot,1.0f,0.0f,0.0f);
: glRotatef(xrot,0.0f,0.0f,1.0f);
: gluSphere(quadratic,0.2f,32,32);
: 就是先根據z方向的移動速度來轉動球
: 然後再根據x方向的移動速度來轉動球
: 在最一開始的時候如果只根據x方向移動,球的轉動是正常的
: 可是當z方向的移動出現之後,球的旋轉方向似乎被打亂了
: 反之,一開始從z方向移動正常,x方向移動出現後,轉動也被打亂
: 請問各位大大我該如何讓球滾動正常呢?
: 我用的介面是OpenGL
: 謝謝@@
你的作法之所以會有問題
是因為「旋轉」並不是一項可前後交換的運算
「先以 X 軸旋轉 90 度,再以 Z 軸旋轉 45 度」
和「先以 Z 軸旋轉 45 度,再以 X 軸旋轉 90 度」
結果是完全不同的 (你可以自己拿顆球轉看看)
正確的作法是把這顆球的旋轉用矩陣存起來
每次轉動的時候去更新這個矩陣
最後在 render 前把這個矩陣乘上 model-view matrix 即可
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.163.153.8
※ 編輯: littleshan 來自: 218.163.153.8 (10/04 13:42)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章