MeshLib icon indicating copy to clipboard operation
MeshLib copied to clipboard

Negative offset in thickenMesh results in incorrect filling of mesh

Open JeffreyWardman opened this issue 1 year ago • 3 comments

image

    params = mrmeshpy.GeneralOffsetParameters()
    params.signDetectionMode = mrmeshpy.SignDetectionMode.WindingRule
    params.mode = mrmeshpy.GeneralOffsetParametersMode.Smooth

    faces = np.array(mesh.cells.copy(), np.int32)
    faces = np.ndarray(shape=faces.shape, dtype=np.int32, buffer=faces)

    verts = mesh.vertices.copy()
    verts = np.ndarray(shape=verts.shape, dtype=np.float32, buffer=verts)

    mesh = mrmeshnumpy.meshFromFacesVerts(faces, verts)
    mesh = mrmeshpy.thickenMesh(mesh, offset=-3, params=params)

    vertices = mrmeshnumpy.getNumpyVerts(mesh)
    cells = mrmeshnumpy.getNumpyFaces(mesh.topology)

JeffreyWardman avatar Feb 05 '24 01:02 JeffreyWardman

Hello! Looks like you have open input mesh, thats why params.signDetectionMode = mrmeshpy.SignDetectionMode.WindingRule does not work good. We recomment to use 'params.signDetectionMode = mrmeshpy.SignDetectionMode.Unsigned' for open meshes thickening, please try this

    params = mrmeshpy.GeneralOffsetParameters()
    params.signDetectionMode = mrmeshpy.SignDetectionMode.Unsigned
    params.mode = mrmeshpy.GeneralOffsetParametersMode.Smooth

    faces = np.array(mesh.cells.copy(), np.int32)
    faces = np.ndarray(shape=faces.shape, dtype=np.int32, buffer=faces)

    verts = mesh.vertices.copy()
    verts = np.ndarray(shape=verts.shape, dtype=np.float32, buffer=verts)

    mesh = mrmeshnumpy.meshFromFacesVerts(faces, verts)
    mesh = mrmeshpy.thickenMesh(mesh, offset=-3, params=params)

    vertices = mrmeshnumpy.getNumpyVerts(mesh)
    cells = mrmeshnumpy.getNumpyFaces(mesh.topology)

Grantim avatar Feb 05 '24 10:02 Grantim

Unfortunately that does not enclose between the original mesh and the internal component.

Screenshot 2024-02-05 at 10 41 36 pm

JeffreyWardman avatar Feb 05 '24 11:02 JeffreyWardman

Currently our thicken algorithm only creates inner/outer component but does not connect components. This discussion may be useful for you

Grantim avatar Feb 05 '24 11:02 Grantim