[問題] 請問openGL中 針對物體本身座標平移的方法?

看板C_and_CPP (C/C++)作者 (林老師賣的冰淇淋)時間16年前 (2010/05/18 13:07), 編輯推噓2(2016)
留言18則, 2人參與, 最新討論串1/1
各位先進大家好 想請問 glTranslatef() 這個是針對眼睛座標系(世界座標系)來做平移 是否有其他的function可以針對物體本身的座標系作平移呢? 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.151.68

05/18 13:28, , 1F
glTranslate是產生一個matrix並乘入current matrix, 是
05/18 13:28, 1F

05/18 13:28, , 2F
你的current matrix為ModelView, 你才會覺得它作用在
05/18 13:28, 2F

05/18 13:28, , 3F
Eye Space; 另外雖然OGL把Model和View綁成同一matrix,
05/18 13:28, 3F

05/18 13:29, , 4F
但是Eye space與World space還是視為兩個座標系比較好@@
05/18 13:29, 4F

05/18 13:30, , 5F
至於物體本身的座標系要平移, 其實就是glVertex的座標
05/18 13:30, 5F

05/18 13:31, , 6F
下在(0,0,0,1)以外的位置, 那就是object/model space自
05/18 13:31, 6F

05/18 13:31, , 7F
己的座標....@_@"
05/18 13:31, 7F

05/18 13:33, , 8F
如果你只是想針對scene裡某個object平移, 畫它之前的
05/18 13:33, 8F

05/18 13:34, , 9F
translate之前, 先push ModelView, 畫完再pop回來即可.
05/18 13:34, 9F

05/18 13:39, , 10F
感謝v大 針對第一個問題 眼睛座標 要視為
05/18 13:39, 10F

05/18 13:39, , 11F
攝影機延伸出來的座標系嗎?
05/18 13:39, 11F

05/18 13:40, , 12F
那這樣世界座標 要怎麼去看他?
05/18 13:40, 12F

05/18 13:59, , 13F
obj(model) -> world -> eye(camera) -> ...
05/18 13:59, 13F

05/18 14:00, , 14F
本來transform的流程如上(到clip/proj前), 只是GL把
05/18 14:00, 14F

05/18 14:01, , 15F
ModelView綁起來, 看起來obj就直接->到eye space了.
05/18 14:01, 15F

05/18 14:01, , 16F
你也可以自己抽象的另外分離出Camera用的matrix, 之後
05/18 14:01, 16F

05/18 14:02, , 17F
每個obj的model matrix再另外乘上抽象的view matrix就好
05/18 14:02, 17F

05/18 14:02, , 18F
印象中D3D就有獨立的camera可以設...@_@"
05/18 14:02, 18F
文章代碼(AID): #1ByY2dAy (C_and_CPP)
文章代碼(AID): #1ByY2dAy (C_and_CPP)