Merge duplicate vertices in mesh object
mergeVertices.RdA mesh object can have the same vertex listed twice. Each copy is
allowed to have separate normals, texture coordinates, and color.
However, it is more efficient to have just a single copy if those
differences aren't needed. For automatic smoothing using
addNormals, triangles and quads need to share vertices.
This function merges identical (or similar) vertices to achieve this.
Usage
mergeVertices(mesh,
notEqual = NULL,
attribute = "vertices",
tolerance = sqrt(.Machine$double.eps))Arguments
- mesh
A
mesh3dobject.- notEqual
A logical matrix indicating that certain pairs should not be merged even if they appear identical.
- attribute
Which attribute(s) should be considered in comparing vertices? A vector chosen from
c("vertices", "colors", "normals", "texcoords"))- tolerance
When comparing vertices using
all.equal, this tolerance will be used to ignore rounding error.
See also
as.mesh3d.rglId, which often constructs mesh
objects containing a lot of duplication.
Examples
open3d()
(mesh1 <- cuboctahedron3d(col = rainbow(14), meshColor = "face"))
#> mesh3d object with 12 vertices, 8 triangles, 6 quads.
id <- shade3d(mesh1)
(mesh2 <- as.mesh3d(id))
#> mesh3d object with 48 vertices, 20 triangles.
shade3d(translate3d(mesh2, 3, 0, 0))
(mesh3 <- mergeVertices(mesh2))
#> mesh3d object with 12 vertices, 20 triangles.
shade3d(translate3d(mesh3, 6, 0, 0))
3D plot