我使用OpenGL和LWJGL跟蹤ThinMatrix的遊戲開發教程,並堅持在我的遊戲中實現碰撞檢測。我已經提到了網絡上的這些網頁 -在Java中實施掃描和修剪
但我不知道任何C++,不能轉換的代碼。我將如何使用java中的掃描和修剪來實現寬相碰撞檢測?
我使用OpenGL和LWJGL跟蹤ThinMatrix的遊戲開發教程,並堅持在我的遊戲中實現碰撞檢測。我已經提到了網絡上的這些網頁 -在Java中實施掃描和修剪
但我不知道任何C++,不能轉換的代碼。我將如何使用java中的掃描和修剪來實現寬相碰撞檢測?
你試圖達到的目標不是很微不足道,可能太多回答這裏,但讓我們嘗試描述一些基本步驟,讓你開始。
就我記得ThinMatrix的系列教程而言,首先您必須首先實施Axis-Aligned Bounding Boxes(AABB's),然後將它們包裹在您的實體中,因爲您需要那些用於寬相檢測。您可以簡單地加載一個1x1x1
立方體模型並相應地縮放轉換矩陣,但您將如何縮放它?
在解析obj文件時,請記住每個模型的最小和最大頂點位置(minX, minY, minZ, maxX, maxY, maxZ
)。
然後你必須重新調整你的1x1x1邊框,所以計算你邊框scaleX, scaleY, scaleZ
,並確保它尊重原有實體的規模,以及:
float scaleX = (maxX - minX) * model.getScale();
float scaleY = (maxY - minY) * model.getScale();
float scaleZ = (maxZ - minZ) * model.getScale();
你會再有計算transformationMatrix並將您的比例值應用於多維數據集。 ThinMatrix實現了方法Maths.createTransformationMatrix(...)
,您必須使用三個新參數進行擴展。
在一個點或另一個你最終與具有AABB與此類似:
從那裏,我建議你到現有的物理庫整合,如:
後者實現了Java中鏈接論文中描述的算法:SweepAndPruneAlgorithm.java。