看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) GLUT 、glm.h/.c(用來載入obj檔的) 問題(Question): 因為目標是要點擊讀取到的object使之消失或顯示 但因為translatef之後obj並不在(0,0,0)上,所以點obj的時候會產生錯誤 這問題好難敘述... 總之就是 因為translatef之後object不在原點 但selection mode下會以為obj還在原點, 所以要點"預期從原點原點展開obj的範圍"才會使不在(0,0,0)上的obj消失/顯示 而不是點"實際object的位置"讓他產生消失/顯示的動作 點obj的方法是照此網頁上的教學做的 這網頁上是教把obj1在obj2上用滑鼠畫軌跡移動 所以程式內容我有點大更動 但pick_func(float x,float y)幾乎是沒有更動 補充說明(Supplement): -- 不知道有沒有人聽得懂我的說明... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.157.161
cuteclare:看不懂~><~ 05/13 16:50
就是假如我有一顆球.obj (預設半徑為1好了 然後把他glCallList(ball)後 他會在原點(0,0,0)的位置載入(因為沒有translate 那這個時候假如點距離(0,0,0)小於1的點時(也就是點圓內的點 這顆球就會消失,這樣是正確的 但當我先gltranslatef(1.0,0,0)之後 球會在點(1,0,0)的位置載入 我預期當滑鼠點擊距離(1,0,0)小於1的點時(圓內的點 球會消失 但現實情況卻不是這樣 現實情況還是跟前者一樣 他要點(0,0,0)為圓心的圓內(但實際上這邊我並沒有在(0,0,0)載入圓) 才會使(1,0,0)這顆球消失 不知道這樣說明會不會比較好... 目前的問題就是卡在點擊錯誤 ※ 編輯: jay060191 來自: 122.117.157.161 (05/13 16:55)
cuteclare:先"掃描"過所有select or feedbak的物件 05/13 16:51
cuteclare:再來決定要不要畫 05/13 16:51
※ 編輯: jay060191 來自: 122.117.157.161 (05/13 16:57)
cuteclare:嗯~我是偏向於~設計方面可能要稍微改進 05/13 17:06
cuteclare:http://ideone.com/xV9w7 05/13 17:08
cuteclare:甚至是要把object 的 act(translate scale) 之類的 05/13 17:10
cuteclare:要抽出來~在計算check 跟 draw 的時候都要呼叫到一次 05/13 17:10
謝謝C大 因為我才剛學openGL一段時間.. 我會努力改進的
NDark: selection mode畫的時候也要一起轉 05/13 19:09
linotwo:Selection mode 畫之前要乘上個別物件的 global matrix 05/13 19:38
linotwo:push matrix→translate→draw triangles→pop matrix 05/13 19:42
原來我是那邊沒translate... 謝謝N大,L大 我先去試試 ※ 編輯: jay060191 來自: 122.117.157.161 (05/13 20:29) 問題解決了,感謝各位幫忙 ※ 編輯: jay060191 來自: 122.117.157.161 (05/13 20:37)
damody: 建議用 openmesh 來做mesh的處理會比較好 05/14 04:37
※ 編輯: jay060191 來自: 122.117.157.161 (05/15 22:58)