PhysX 3 2中的場景查詢 1 基礎

2021-06-14 02:31:33 字數 1699 閱讀 8391

physx sdk一直都為遊戲開發提供高效可靠的場景查詢(scene query)功能,到了3.2中,也是如此。這乙個系列中,就給大家介紹physx 3.2中場景查詢功能的使用。

這一篇中,我們重點介紹這一功能的一些基本概念和基礎用法。

首先,physx 3.2中,場景查詢的種類支援三種,分別是raycast,sweep和overlap檢測。其中:

raycast檢測是從一點,投射一根一定長度的線段,檢測物理世界中跟這個線段相交的碰撞體(pxshape);

sweep檢測跟raycast檢測類似,但是投射出去的是乙個或者一組形體(pxgeometry),檢測物理世界中跟這個/組形體相交的碰撞體(pxshape);

overlap檢測跟上面兩個不一樣,它是給定某位置的乙個形體(pxgeometry),檢測物理世界中跟這個形體相交的碰撞體(pxshape)。

其次,physx 3.2中,對於每一種場景查詢,都支援快速獲取是否有檢測結果的*any的查詢,以及返回所有檢測結果的*multiple的查詢;同時,對於raycast和sweep,還支援查詢最近的檢測結果*single的方法。overlap型別的查詢不支援這種*single的方法,是因為原理上,overlap的相交檢測是沒有方向的,所以無法判斷那乙個結果是最近的,只能返回所有結果。了解了這一點,sdk提供的場景查詢方法就很好記了,就是這些:

raycastany(...);

raycastsingle(...);

raycastmultiple(...);

sweepany(...);

sweepsingle(...);

sweepmultiple(...);

overlapany(...);

overlapmultiple(...);

然後,在場景查詢執行的方式上, physx sdk為我們提供了兩種執行方式,一種是立即執行的單次提交,馬上返回結果的方式;另一種是批處理查詢(batch query),我們可以把一幀中可以集中到一起執行的查詢,都加入到乙個批處理中執行,這個在場景查詢很多的時候,可以帶來效能上的提公升。批處理查詢的使用,我們會在接下來的篇幅中介紹。

接下來,在執行過程中,有乙個必須考慮的問題就是如何過濾掉不必要的碰撞體,更快速高效的返回期望的查詢結果。這一部分內容,會在physx 3.2中的場景查詢-過濾中介紹。

同時,在raycast和sweep查詢執行中,physx sdk還提供了cache的功能,讓我們可以提供乙個最有可能被檢測到的碰撞體(pxshape),sdk優先檢測是否跟這個碰撞體有相交。這個功能在某些場合非常有用,比如射擊遊戲中連續射擊某個物體時,比如某個boss級別的堡壘,第一次擊中之後,接下來的短時間內的連續射擊,就可以把這個物體作為cache傳入,快速檢測是否擊中這個物體,這樣能夠節省查詢中很多效能開銷。

最後,在查詢到結果後後,我們需要返回查詢的結果,如果是*multiple這樣的查詢,我們還需要告訴sdk查詢到這個結果之後,sdk是否需要繼續處理後續的查詢。為實現這些功能,sdk在每乙個查詢的api中,都提供給了乙個pxscenequeryflags型別的引數供我們使用,指定我們需要什麼樣的返回值,或者這個結果之後,該如何繼續。pxscenequeryflags的定義是這樣的:

struct pxscenequeryflag

;};

以上是對physx 3.2中場景查詢功能的一些基礎介紹,希望能夠幫助大家更快的上手使用physx 3.2的場景查詢功能。

查詢檢測PhysX 3 2中的場景查詢 1 基礎

題記 寫這篇部落格要主是加深自己對查詢檢測的認識和總結實現演算法時的一些驗經和訓教,如果有錯誤請指出,萬分感謝。physx sdk直一都為遊戲開闢供提高效靠可的場景查詢 scene query 功能,到了3.2中,也是如此。這乙個系列中,就給大家分析physx 3.2中場景查詢功能的用使。這一篇中,...

查詢檢測PhysX 3 2中的場景查詢 1 基礎

題記 寫這篇部落格要主是加深自己對查詢檢測的認識和總結實現演算法時的一些驗經和訓教,如果有錯誤請指出,萬分感謝。physx sdk直一都為遊戲開闢供提高效靠可的場景查詢 scene query 功能,到了3.2中,也是如此。這乙個系列中,就給大家分析physx 3.2中場景查詢功能的用使。這一篇中,...

PhysX 3 2裡的布料模擬 1 基本概念

最近剛好遇到了一些跟physx 3.2裡面布料模擬相關的問題,那就約架不如偶遇,介紹一下physx 3.2中的布料模擬吧。這一篇中,我們先概要的介紹一下physx 3.2中的布料的一些基本概念,後續的文章中再詳細介紹如何建立 控制等問題。提到布料模擬,那麼我們可能會有這麼幾方面的問題 如何定義布料的...