GameDesign 板


LINE

在解釋之前,先有個概念: 「物體的旋轉、移動、放大縮小等全部可以用矩陣運算來表示」 也就是物體的座標在乘上某個矩陣後,就可以得到旋轉、移動、放大縮小的結果。 現在我們來看看這幾個操作... ※ 引述《prjryu (橘)》之銘言: : 可否詳述call update_mo時 : void update_mo( float angle, float x, float y, float z ) : { : glPushMatrix(); 把目前 OpenGL 正在使用的 matrix 推進一個 stack 中 OpenGL 內部會去管理這個 stack 所以你只要用 push 就會保留現在的座標轉換方式 可以在稍後用 pop 恢復 : glLoadIdentity(); 把目前的 matrix 設定為 ideneity matrix identity 對應到的座標轉換就是「不做任何轉換」 : glRotatef( angle, x,y,z ); 把目前的 matrix 乘上 rotation matrix 因為在上一行中,目前的 matrix 是 identity 所以這一行實際作用就是讓現在作用中的 matrix 設定為 rotation matrix rotation matrix 對應的座標轉換就是「以某個向量為軸旋轉」 : glMultMatrixf(mo); //這行是做什麼? 把目前的 matrix 乘上 mo 這個 matrix 假設前面的 rotation matrix 叫作 R 那麼目前的 matrix 就是 R*mo R*mo 是什麼意思呢?R 是指旋轉,而 mo 是什麼我們不知道, 但它也是個 matrix,可以進行座標轉換,所以合起來說就是 「先進行旋轉後,再進行 mo 這個座標轉換」 : glGetFloatv( GL_MODELVIEW_MATRIX, mo ); //這行是做什麼? 這行的意思是把目前用的 modelview matrix 存到 mo 裡面 若和上兩行結合起來就是如下的意思: R = RotationMatrix(angle, x, y, z); mo = R * mo; 所以整體的意義就是「mo 儲存了某個座標轉換,在經過這些運算後, mo 除了原本的效果(可能是旋轉平移放大縮小)外,還追加了旋轉的效果」 : glPopMatrix(); 上面的運算會影響到 OpenGL 內部使用的 matrix 為了消除這個副作用 就用 glPopMatrix 把它恢復原狀 : glutPostRedisplay(); : } : 在程式中的運作順序及結果? : 我看來是這樣: : push : ↘ : │glGetFloatv( GL_MODELVIEW_MATRIX, mo ); │ : │glMultMatrixf(mo); │ : │glRotatef( angle, x,y, ); │ : │glLoadIdentity(); │ : └────────────────────┘ : pop(所以執行順序變成) : glGetFloatv( GL_MODELVIEW_MATRIX, mo ); //把現在的矩陣存到mo : glMultMatrixf(mo); //把目前的矩陣乘上mo : glRotatef( angle, x,y, ); //轉角度 : glLoadIdentity(); //回到原來的狀態 : 此處MODELVIEW_MATRIX矩陣和目前的矩陣不一樣的嗎? : 可以一行一行解釋嗎? push 和 pop 並不會影響其後指令的執行順序喔 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2
1F:→ Splash5:loadidentity應該也帶有initialize a matrix的意思 05/19 14:03
2F:推 prjryu:mo[16]={1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}; 05/20 22:30
3F:推 prjryu:非常感謝littleshan大鉅細靡遺的講解,受益良多m(_ _)m 05/20 22:37
4F:推 prjryu:上面是mo的陣列初始,請問和mo相乘在此處的效果是? 05/21 04:51
5F:→ littleshan:mo 初始就是 identity matrix,效果為「無效果」 05/21 14:30
6F:→ Splash5:那個 原po可以手算這兩個矩陣相乘阿XD.. 你就知道為啥叫 05/22 00:37
7F:→ Splash5:identity matrix (單位矩陣) 果然還是線性代數XD 05/22 00:38







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP