2017-05-03 46 views

回答

0

你試圖達到的目標不是很微不足道,可能太多回答這裏,但讓我們嘗試描述一些基本步驟,讓你開始。

就我記得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與此類似:

screenshot

從那裏,我建議你到現有的物理庫整合,如:

後者實現了Java中鏈接論文中描述的算法:SweepAndPruneAlgorithm.java