You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用trimesh获取的最近点不在STL文件中,求技术解决方案

问题解答

核心误解澄清

trimesh.proximity.closest_point的第一个返回值不是顶点索引,而是最近点的三维坐标。这个点可以落在网格三角面的任意位置(顶点、边、面内部),不一定是STL文件中存储的顶点,所以你在STL的顶点列表里找不到对应索引是完全正常的。

解决方法:获取STL中存在的最近顶点

如果你需要的是STL文件里实际存在的顶点(即有对应索引的点),应该使用trimesh.proximity.closest_vertex函数,它直接返回最近顶点的索引:

# 获取最近顶点的索引和距离
closest_vertex_idx, d = trimesh.proximity.closest_vertex(mesh, [[-5,100,0]])
# 根据索引获取顶点坐标(该点一定在STL的顶点列表中)
closest_vertex_coord = mesh.vertices[closest_vertex_idx[0]]

补充说明

STL文件的存储逻辑是记录每个三角面的三个顶点,但网格的几何最近点未必是顶点——当目标点的最近位置落在三角面的边上或内部时,closest_point会返回这个插值出来的点,自然不会出现在STL的顶点索引里。

内容的提问来源于stack exchange,提问作者Vishnu Panda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:36:33