ogre射線場景查詢

2021-04-20 18:16:36 字數 910 閱讀 1222

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位還是...