A 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.
mergeVertices(mesh, notEqual = NULL, attribute = "vertices", tolerance = sqrt(.Machine$double.eps))
A logical matrix indicating that certain pairs should not be merged even if they appear identical.
Which attribute(s) should be considered in comparing vertices?
A vector chosen from
c("vertices", "colors", "normals", "texcoords"))
When comparing vertices using
all.equal, this tolerance
will be used to ignore rounding error.
A new mesh object.
as.mesh3d.rglId, which often constructs mesh
objects containing a lot of duplication.
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))