Learn R Programming

rgl (version 0.111.6)

mergeVertices: Merge duplicate vertices in mesh object

Description

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.

Usage

mergeVertices(mesh, 
              notEqual = NULL, 
              attribute = "vertices", 
              tolerance = sqrt(.Machine$double.eps))

Value

A new mesh object.

Arguments

mesh

A mesh3d object.

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.

Author

Duncan Murdoch

See Also

as.mesh3d.rglId, which often constructs mesh objects containing a lot of duplication.

Examples

Run this code
open3d()
(mesh1 <- cuboctahedron3d(col = rainbow(14), meshColor = "face"))
id <- shade3d(mesh1)
(mesh2 <- as.mesh3d(id))
shade3d(translate3d(mesh2, 3, 0, 0))
(mesh3 <- mergeVertices(mesh2))
shade3d(translate3d(mesh3, 6, 0, 0))

Run the code above in your browser using DataLab