[問題] opengl-關於點擊物件(已解

看板C_and_CPP (C/C++)作者 (小J)時間14年前 (2012/05/13 16:43), 編輯推噓4(407)
留言11則, 4人參與, 最新討論串1/1
開發平台(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

05/13 16:50, , 1F
看不懂~><~
05/13 16:50, 1F
就是假如我有一顆球.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)

05/13 16:51, , 2F
先"掃描"過所有select or feedbak的物件
05/13 16:51, 2F

05/13 16:51, , 3F
再來決定要不要畫
05/13 16:51, 3F
※ 編輯: jay060191 來自: 122.117.157.161 (05/13 16:57)

05/13 17:06, , 4F
嗯~我是偏向於~設計方面可能要稍微改進
05/13 17:06, 4F

05/13 17:08, , 5F

05/13 17:10, , 6F
甚至是要把object 的 act(translate scale) 之類的
05/13 17:10, 6F

05/13 17:10, , 7F
要抽出來~在計算check 跟 draw 的時候都要呼叫到一次
05/13 17:10, 7F
謝謝C大 因為我才剛學openGL一段時間.. 我會努力改進的

05/13 19:09, , 8F
selection mode畫的時候也要一起轉
05/13 19:09, 8F

05/13 19:38, , 9F
Selection mode 畫之前要乘上個別物件的 global matrix
05/13 19:38, 9F

05/13 19:42, , 10F
push matrix→translate→draw triangles→pop matrix
05/13 19:42, 10F
原來我是那邊沒translate... 謝謝N大,L大 我先去試試 ※ 編輯: jay060191 來自: 122.117.157.161 (05/13 20:29) 問題解決了,感謝各位幫忙 ※ 編輯: jay060191 來自: 122.117.157.161 (05/13 20:37)

05/14 04:37, , 11F
建議用 openmesh 來做mesh的處理會比較好
05/14 04:37, 11F
※ 編輯: jay060191 來自: 122.117.157.161 (05/15 22:58)
文章代碼(AID): #1FhtGm3o (C_and_CPP)
文章代碼(AID): #1FhtGm3o (C_and_CPP)