MeshLib
MeshLib copied to clipboard
Negative offset in thickenMesh results in incorrect filling of mesh
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)
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)
Unfortunately that does not enclose between the original mesh and the internal component.
Currently our thicken algorithm only creates inner/outer component but does not connect components. This discussion may be useful for you