目標定位和命中檢測
虛擬物件命中測試
對虛擬物件的碰撞檢測通常並不真正涉及測試射線與場景中某個多邊形的交集,因為典型場景可能包含數百甚至數千個多邊形,這使得在大多數情況下直接追蹤射線到多邊形是不切實際的。相反,大多數應用程式會想辦法簡化其命中測試演算法的實現。
你正在使用的任何 3D 圖形引擎很可能都提供了命中測試功能,尤其是如果它專為遊戲開發而設計。
簡化的代表性物件
一種常見的解決方案是在場景中的物件之上疊加簡化的、不可見的虛擬物件。這些物件然後充當佔位符。例如,如果你有一個大致是矩形的物件,在執行命中測試時,可以使用一個矩形作為該物件的替代。同樣,如果一個物件本質上是圓形的,可以使用最小外接圓的半徑來建立碰撞測試物件。
真實世界命中測試
“LIDAR”這個縮寫根據具體實現方式的不同有多種定義,但最終結果是相同的。最常見的是,它指的是“雷射成像、探測與測距”或“光探測與測距”。
與真實世界進行碰撞測試是另一個問題,這不僅可能涉及解釋裝置攝像頭的影像(如果可用),還可能涉及多個額外的感測器。有些裝置包含紅外感測器來幫助測距,而有些則提供強大的 LIDAR 系統,它們使用雷射(通常是人眼看不見的紅外雷射)來確定物體在世界中的距離。
如何處理單個平臺測距系統的具體細節超出了本文的範圍。但是,有希望:已經提出了一個 WebXR 命中測試模組的提案,該模組將作為 WebXR 的一個附加層,提供一個用於執行命中測試和碰撞檢測的 API。
另見
- 3D 碰撞檢測
- HTML5 遊戲:3D 碰撞檢測 (Hacks 部落格)