模型碰撞检测基本原理

STL 和 OBJ 模型简介

STL 模型简介

STL 是 3D Systems 公司创建的一种 3D 文件格式,STL 模型由许多三角形面片组成,每个三角形面片由三个顶点的三维坐标和三角形面片的法向量描述。在 Mech-Viz 工程中, STL 模型通常被用来制作机器人的夹具或搭建场景。如下图所示。

../../../_images/stl_models_application.png

OBJ 模型简介

OBJ 是一种 3D 模型文件格式,主要支持多边形(Polygons)模型,也支持曲线(Curves)、表面(Surfaces)、点组材质(Point Group Materials)。 简单来说,STL 模型可以看作是一种只有空壳的模型,而 OBJ 模型是一种实体模型。OBJ 模型效果如下图所示。

../../../_images/obj_models_application.png

注解

OBJ 文件是一种文本文件,可直接用写字板打开进行查看和编辑。

STL 模型碰撞检测原理

由于 STL 模型为三角形网络模型,该模型只有表面而没有内部结构, 所以在计算点云碰撞时只计算点云和物体外壳三角形面片的碰撞,即点云和物体外壳的交集, 不对模型内部的点云进行碰撞计算。STL 模型结构如下图所示。

../../../_images/stl_cillision_detection_principle_1.png

在下图中,黄色表示发生碰撞的三角形面片,橙色表示发生碰撞的点云。由图可知,碰撞检测过程中,仅检测到了模型表面的碰撞结果。

../../../_images/stl_cillision_detection_principle_2.png

OBJ 模型碰撞检测原理

OBJ 模型碰撞检测过程,实际是将夹具模型分解为多个实心的凸多面体,如下图所示。

../../../_images/obj_cillision_detection_principle_1.png

将末端工具模型分解为一组凸多面体后,每个凸多面体与点云的碰撞检测均为“实心检测”,即末端工具模型内部的碰撞点云也能被检测到,检测结果更准确。

如下图所示,为 OBJ 模型碰撞检测结果。由图中橙色区域可知,碰撞检测过程中,不仅检测到了模型表面的碰撞结果,也检测到了模型内部的碰撞结果。

../../../_images/obj_cillision_detection_principle_2.png