Ogre射線場景查詢

2021-05-23 10:10:25 字數 1039 閱讀 2023

昨晚在看中級教程二的時候,發現vs2005竟然總是無法在我輸入.後顯示成員列表,並且我自己補全後,還提示我並沒有該成員函式。我左看看**,右看看**,覺得總是沒錯。幸好ogre還是開源的,我順著類乙個個往上翻,更加無比的確認了自己的是對的,冒著「萬般」的危險按下了f5,結果程式通過了……

事後一想,這個是用到了c++裡的反射機制。這個我不是太了解,曾經在老師帶的乙個專案裡接觸過,但那是老師負責,自己也放過了自己,所以到現在也還是不懂。大意應該就是直到執行的時候才確定那個容器裡的物件是什麼類的例項化物件吧。所以那會vs2005沒法提示,也自己補全了也會發出警告。我想,05裡面可能沒能很好的支援反射。所以,等這次自學完後,要換系統了。

不過,通過這個東西,了解到了ogre裡的射線,場景查詢等,確實不錯。做筆記如下吧。

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中就儲存了查詢的結果。

rayscenequeryresult 定義如下:

typedef std::vector rayscenequeryresult;

這是乙個查詢結構的列表,列表的每個條目定義如下:

struct _ogreexport rayscenequeryresultentry

};

ogre射線場景查詢

1.建立射線場景查詢物件,記得最後銷毀 mrayscenequery mscenemgr createrayquery ray 銷毀的 是 mscenemgr destroyquery mrayscenequery 2.設定要查詢的射線,下面 是以攝像機豎直向下的射線對場景進行查詢 vector3 ...

ogre場景查詢 簡單學習

一.簡要概述 在ogre中場景查詢主要使用scenequery及其子類。場景查詢主要有三中 rayscenequery即射線場景查詢 regionscenequery即區域場景查詢 intersectionscenequery即相交場景查詢 而regiontionscenequery又分為 sphe...

在ogre中進行精細射線檢測

ogre有乙個rayscenequery的類,在預設場景管理器下,這個類返回一組rayscenequeryresultentry,他們都是通過包圍盒進行的檢測,由於包圍盒過於簡陋,我們可以再進行更精細的基於面的射線碰撞檢測。主要注意的就是mesh的構造方式,是否用了index,index是16位還是...