1.建立射線場景查詢物件,記得最後銷毀
mrayscenequery = mscenemgr->createrayquery(ray());
銷毀的**是 mscenemgr->destroyquery(mrayscenequery);
2.設定要查詢的射線,下面**是以攝像機豎直向下的射線對場景進行查詢
vector3 campos = mcamera->getposition();
ray cameraray(vector3(campos.x, 5000.0f, campos.z), vector3::negative_unit_y);
mrayscenequery->setray(cameraray);
3.執行場景查詢
rayscenequeryresult &result = mrayscenequery->execute();
這樣,result中就儲存了查詢的結果。
};射線可能和場景相交,也可能可其他可移動的物件(movableobject)相交,但一次只可能和其中乙個,所以 movable和
worldfragment總有乙個為null,distance儲存了交點到射線起點的距離,其中還提供了射線距離比較的運算子,這樣就很容易
根據離射線起點的距離對相交的movableobject或worldfragment進行排序。
如果和場景相交,則得到worldfragment儲存相交的結果。
worldfragment定義如下:
struct worldfragment ;
其中第乙個成員就是worldfragment的型別,這是個列舉型別,定義如下:
enum worldfragmenttype
;對於射線場景查詢,只要用到第三個型別的列舉值,因為射線和場景的交點是個座標值,儲存在
其中第二個列舉值
Ogre射線場景查詢
昨晚在看中級教程二的時候,發現vs2005竟然總是無法在我輸入.後顯示成員列表,並且我自己補全後,還提示我並沒有該成員函式。我左看看 右看看 覺得總是沒錯。幸好ogre還是開源的,我順著類乙個個往上翻,更加無比的確認了自己的是對的,冒著 萬般 的危險按下了f5,結果程式通過了 事後一想,這個是用到了...
ogre場景查詢 簡單學習
一.簡要概述 在ogre中場景查詢主要使用scenequery及其子類。場景查詢主要有三中 rayscenequery即射線場景查詢 regionscenequery即區域場景查詢 intersectionscenequery即相交場景查詢 而regiontionscenequery又分為 sphe...
在ogre中進行精細射線檢測
ogre有乙個rayscenequery的類,在預設場景管理器下,這個類返回一組rayscenequeryresultentry,他們都是通過包圍盒進行的檢測,由於包圍盒過於簡陋,我們可以再進行更精細的基於面的射線碰撞檢測。主要注意的就是mesh的構造方式,是否用了index,index是16位還是...