ST_3DRemoveDuplicateVertex

将sfmesh/IndexSurface中坐标距离在给定阈值内的顶点焊接在一起(纹理坐标差异也要在阈值内),并移除重复顶点。

语法

sfmesh ST_3DRemoveDuplicateVertex(sfmesh sfmesh, float8 dist_threshold);

返回值

返回焊接后的sfmesh对象。

参数

参数名称

描述

sfmesh

模型对象。

dist_threshold

焊接距离阈值。

描述

将sfmesh/IndexSurface中空间坐标距离、纹理坐标差异在给定阈值内的顶点焊接在一起,其中距离计算使用笛卡尔坐标系距离。

效果示意

  • 原数据(50.2 MB)

    image.png

  • 顶点焊接结果(20.2 MB): dist_threshold = 0.01

    image.png

  • 顶点焊接结果(3.3 MB): dist_threshold = 0.1

    image.png

  • 顶点焊接结果(0.63MB): dist_threshold = 1 (会丢失大量细节)

    image.png

示例

SELECT ST_AsText(ST_3DRemoveDuplicateVertex('MESHGEOM(PATCH(INDEXSURFACE(VERTEX(0 0 0, 1 0 0, 0 1 0, 1 0.01 0, 0.01 0 0, 0 -1 0), INDEX((0,1,2),(3,4,5)))))'::meshgeom, 0.1));
-------------------------------------------------------------------------------------------------
 {"version" : 1, "root" : 0, "meshgeoms" : ["MESHGEOM(PATCH(INDEXSURFACE Z (VERTEX(0 0 0,1 0 0,0 1 0,0 -1 0),INDEX((0,1,2),(1,0,3)))))"], "primitives" : [{"meshgeom" : 0}], "nodes" : [{"primitive" : 0}]}