GameDesign 板


LINE

※ 引述《NDark (K1下次要買搖滾區)》之銘言: : ※ 引述《prjryu (橘)》之銘言: : : 在寫程式的過程我不斷遇到對單一軸旋轉另兩軸跟著轉的問題 : : 也就是 glRotatef( angle, x,y,z ); 這個函數 : : 轉glRotatef( 90, 1,0,0 ); 後,y軸和z軸 也一起對x軸轉了九十度 : : 所以之後y z的轉動就不是原本坐標軸的y和z了。 : : 上次發問後有個人推薦我去看一篇為平衡環鎖的文章 : : http://www.programmer-club.com.tw/ShowSameTitleN/opengl/2000.html : : 以上為網址,照跑出來的的確是我想要的結果,但我看不太懂。 : : void init_mo() : : { : : memset( mo, 0, sizeof(mo) ); : : mo[0]=mo[5]=mo[10]=mo[15]=1; : : glutPostRedisplay(); : : } : : 這個函數的作用? 為什麼這樣寫? : : void update_mo( float angle, float x, float y, float z ) : : { : : glPushMatrix(); : : glLoadIdentity(); : : glRotatef( angle, x,y,z ); : : glMultMatrixf(mo); //這行是做什麼? : : glGetFloatv( GL_MODELVIEW_MATRIX, mo ); //這行是做什麼? : : glPopMatrix(); : : glutPostRedisplay(); : : } : : ------------------------------------------------------ : : 或是有什麼其他的解決方法也請多指教, : : 希望可以指教的詳細一點,拜託大家了。 : 簡單來講.你要的就是一個簡單的trackball.也就是上述mo的實作. : Trackball原本的功用就是依照目前滑鼠拖拉的方向算出轉軸, : (以你的case就是你認為的世界座標系) : 然後把旋轉乘入目前trackball的狀況(矩陣)來達到新的結果.再存回trackball : 複雜一點的trackball實作就是一個簡易的3D編輯軟體, : 可以對空間中的任一物件做三軸旋轉. : google "opengl trackball"第三個link : Implementing a Virtual Trackball : http://www.cse.ohio-state.edu/~crawfis/Graphics/VirtualTrackball.html : 中 "We need to apply the rotation as the last transformation" 的部份 : 是不是跟mo的寫法很類似? 可否詳述call update_mo時 void update_mo( float angle, float x, float y, float z ) { glPushMatrix(); glLoadIdentity(); glRotatef( angle, x,y,z ); glMultMatrixf(mo); //這行是做什麼? glGetFloatv( GL_MODELVIEW_MATRIX, mo ); //這行是做什麼? 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矩陣和目前的矩陣不一樣的嗎? 可以一行一行解釋嗎? -- 郵差又來送羊奶了 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.149.185
1F:推 darkflier:opengl就是這點很鳥囧rz...建議你 05/18 08:11
2F:→ darkflier:一行一行試試看 看拿掉會有什麼結果 05/18 08:11
3F:推 darkflier:pop 跟push 搞清楚他是幹嘛的 05/18 08:14
4F:推 Bencrie:push跟pop對目前在OpenGL裡的矩陣(你看不到)做動作 05/18 12:37
5F:→ Splash5:總覺得是線性代數的問題 囧.. 05/18 13:00
6F:推 Splash5:它的pushMatrix跟popMatrix只對目前所使用的矩陣.. 05/19 00:58
7F:→ Splash5:所以push就等於暫存一份起來 之後loadidentity蓋掉matrix 05/19 01:00
8F:→ Splash5:作下面幾行運算最後得到我們要的東西後 再把剛剛push的 05/19 01:01
9F:→ Splash5:matrix再pop回來 05/19 01:01
10F:→ killman:補充一下 所以pop就是把上一個push"之前"的matrix取回 05/19 07:39
11F:→ Splash5:我是想push pop應該是data structure的東西 應該不用講XD 05/19 14:05
12F:→ prjryu:恩 資料結構沒問題 05/21 04:53







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燈, 水草

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

TOP