2017-05-03 42 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