创建执行基于表面的匹配所需的数据结构。
说明:
操作符create_surface_model为3D对象模型ObjectModel3D创建一个基于表面的匹配模型。例如,3D对象模型可以先前使用read_object_model_3d从文件中读取,或者使用xyz_to_object_model_3d创建。创建的表面模型在SurfaceModelID中返回。
表面模型的其他参数可以在模型创建后使用set_surface_model_param进行设置。
表面模型的创建要求3D对象模型包含点和法线。以下组合是可能的:
点和点法线;
点和三角形或多边形网格,例如,从CAD文件;
点和2d映射,例如,XYZ图像三重转换xyz_to_object_model_3d。
请注意,模型法线的方向和方向(向内或向外)对于匹配很重要。对于边缘支持的基于表面的匹配,法线需要指向内部,并且模型必须包含三角形或多边形网格(见下文)。
表面模型是通过对三维物体模型进行一定距离的采样来创建的。采样距离必须在RelSamplingDistance参数中指定,并且相对于3D对象模型的轴平行边界框的直径进行参数化。例如,如果RelSamplingDistance设置为0.05,ObjectModel3D的直径为10 cm,则从物体表面采样的点将相距约5 mm。采样点用于在操作符find_surface_model中进行近似匹配(见下文)。采样点可以通过使用值“sampled_model”的get_surface_model_param操作符获得。注意,应该避免对象模型中的离群点,因为它们会破坏直径。减少RelSamplingDistance会产生更多的点,从而产生更稳定但更慢的匹配。增加RelSamplingDistance会导致更少的点,从而导致更不稳定但更快的匹配。