Python libigl offset_surface函数使用示例及解包报错咨询
报错原因说明
libigl的Python接口中offset_surface函数返回值数量为4,分别为偏移后网格顶点、偏移后网格面、距离场采样网格顶点、距离场采样网格面,仅用2个变量接收会触发解包错误。
完整可运行实现
依赖安装
pip install libigl numpy
示例代码
import igl # 基础参数配置 input_stl_path = "STL_files.stl" # 输入STL文件路径 output_stl_path = "offset_output.stl" # 偏移后STL保存路径 offset_distance = 2 # 偏移距离,正数为向外偏移,负数为向内偏移 sample_resolution = 100 # 距离场采样分辨率,数值越大结果越精细、耗时越长 signed_distance_type = 0 # 0:带符号距离(仅支持水密网格),1:无符号距离 # 读取输入STL模型 v, f = igl.read_triangle_mesh(input_stl_path) # 执行表面偏移,忽略不需要的采样网格返回值 SV, SF, _, _ = igl.offset_surface(v, f, offset_distance, sample_resolution, signed_distance_type) # 导出偏移后的模型 igl.write_triangle_mesh(output_stl_path, SV, SF) print(f"偏移处理完成,结果已保存至{output_stl_path}")
注意事项
- 输入STL必须为水密模型(无破面、无重叠面、法向统一),否则带符号距离计算会出错,偏移结果不符合预期
- 采样分辨率可根据模型尺寸调整,小模型建议设为50~200,大模型可提升至500以上获得更精细的结果
内容的提问来源于stack exchange,提问作者F_A
相关产品推荐
相关产品推荐

