SmallBurger encapsulates passion, convenience, and efficiency within its delicately crafted burger. Dedicated to delivering user-friendly rendering plugins and related tools that are simple yet effective.
SmallBurger
版主您好, Ogre如何做 Detect Mouse Collision的功能, 想用滑鼠按3d物件後觸發動作, 能教我做這功能嗎?謝謝版主
卡拉卡拉您好:首先你要先把滑鼠的作標換算成視窗大的的百分比(0.0~1.0),然後再利用Camera的getCameraToViewportRay取得射線,之後再用RaySceneQuery來取得碰撞到的物件,但這只能做到AABB層級,如果要更真實的碰撞,就要將OgreMesh的資料Convert成三角形,然後再一個個計算,希望這對你有幫助。相關參考資料如下:http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Raycasting+to+the+polygon+level&structure=Cookbook還有http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Snippets有用的資料很多,你可以來查查,應該對你有幫助。
非常感謝版主的提供相關參考資料, 等下來研究一下那兩個3D物件的碰撞,假設A快撞到B , A就會避開B, 這部分問題再請教版主如何做或者有什麼方法和參考資料
版主您好,我後來另外找到一篇類似你所說的方法, 但我不知道是不是正確http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Get+XZ+coordinates
這個方法用處不大,只能處理plane的問題還是乖乖看這篇吧!http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Raycasting+to+the+polygon+level&structure=Cookbook
了解~~謝謝版主~~~
我有個不懂地方Mouse Picking (3D Object Selection) and SceneQuery Masks跟 Detect Mouse Collision兩種方法差別在哪? 請版主賜教謝謝版主另外版主有沒有Line 或 FB, 想與你加個好友不知方不方便, 如果ok我們在私下交換
版主~~我有在FB上加你好友, chenminyi
你這樣問,感覺上可能對Pick碰撞偵測處理流程的概念不是很清楚。那些名詞只是說法的不同,基本上就是分成滑鼠作標換算成Ray及Ray intersection兩部份,這兩個處理本質上完全沒有關係。1.滑鼠作標換算成Ray:目的就是為了求Screen上的一個點,以目前鏡頭為方向所打的一條射線,而Ogre Camera的CgetCameraToViewportRay要求的參數是Screen的比例,所以要將座標換算成比例,代入後就可以求得Ray。2.計算Ray與物件是否有交集點:Ogre是提供SceneQuery來先幫你過濾掉Ray是否有Intersect到物件的AABB,有的話會將有hit到的物件清單提供給你,之後就可以這份清單來做更深層的Ray Intersect Triangle來求得相關的交集點資料(Intersect Point、Intersect Normal…等)PS:如果你的AABB、Ray intersect…等這些名詞不是很熟悉的話,那真得自己要好好做功課了…網路上有很多相關的文章,自己好好爬文吧!萬丈高樓平地起…這邊有一些介紹Ray Scene Query的Wiki:http://www.ogre3d.org/tikiwiki/Intermediate+Tutorial+2找時間把Ogre Wiki裡Tutorial那邊的文章都看一看吧!那個是基本工。
版主您好, Ogre如何做 Detect Mouse Collision的功能, 想用滑鼠按3d物件後觸發動作, 能教我做這功能嗎?
回覆刪除謝謝版主
卡拉卡拉您好:
回覆刪除首先你要先把滑鼠的作標換算成視窗大的的百分比(0.0~1.0),然後再利用Camera的getCameraToViewportRay取得射線,之後再用RaySceneQuery來取得碰撞到的物件,但這只能做到AABB層級,如果要更真實的碰撞,就要將OgreMesh的資料Convert成三角形,然後再一個個計算,希望這對你有幫助。
相關參考資料如下:
http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Raycasting+to+the+polygon+level&structure=Cookbook
還有http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Snippets有用的資料很多,你可以來查查,應該對你有幫助。
非常感謝版主的提供相關參考資料, 等下來研究一下
回覆刪除那兩個3D物件的碰撞,假設A快撞到B , A就會避開B, 這部分問題再請教版主如何做或者有什麼方法和參考資料
版主您好,
回覆刪除我後來另外找到一篇類似你所說的方法, 但我不知道是不是正確
http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Get+XZ+coordinates
這個方法用處不大,只能處理plane的問題還是乖乖看這篇吧!http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Raycasting+to+the+polygon+level&structure=Cookbook
刪除了解~~謝謝版主~~~
刪除我有個不懂地方
回覆刪除Mouse Picking (3D Object Selection) and SceneQuery Masks
跟 Detect Mouse Collision
兩種方法差別在哪? 請版主賜教
謝謝版主
另外版主有沒有Line 或 FB, 想與你加個好友不知方不方便, 如果ok我們在私下交換
版主~~我有在FB上加你好友, chenminyi
刪除你這樣問,感覺上可能對Pick碰撞偵測處理流程的概念不是很清楚。那些名詞只是說法的不同,基本上就是分成滑鼠作標換算成Ray及Ray intersection兩部份,這兩個處理本質上完全沒有關係。
刪除1.滑鼠作標換算成Ray:目的就是為了求Screen上的一個點,以目前鏡頭為方向所打的一條射線,而Ogre Camera的CgetCameraToViewportRay要求的參數是Screen的比例,所以要將座標換算成比例,代入後就可以求得Ray。
2.計算Ray與物件是否有交集點:Ogre是提供SceneQuery來先幫你過濾掉Ray是否有Intersect到物件的AABB,有的話會將有hit到的物件清單提供給你,之後就可以這份清單來做更深層的Ray Intersect Triangle來求得相關的交集點資料(Intersect Point、Intersect Normal…等)
PS:如果你的AABB、Ray intersect…等這些名詞不是很熟悉的話,那真得自己要好好做功課了…網路上有很多相關的文章,自己好好爬文吧!萬丈高樓平地起…
這邊有一些介紹Ray Scene Query的Wiki:
http://www.ogre3d.org/tikiwiki/Intermediate+Tutorial+2
找時間把Ogre Wiki裡Tutorial那邊的文章都看一看吧!那個是基本工。