mergeVertices: Merge duplicate vertices in mesh object

Description Usage Arguments Value Author(s) See Also Examples

View source: R/as.mesh3d.default.R

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

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

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.

Value

A new mesh object.

Author(s)

Duncan Murdoch

See Also

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

Examples

1
2
3
4
(mesh1 <- cube3d())
id <- shade3d(mesh1, col = rainbow(6), meshColor = "face")
(mesh2 <- as.mesh3d(id))
(mesh3 <- mergeVertices(mesh2))

Example output

Warning messages:
1: In rgl.init(initValue, onlyNULL) : RGL: unable to open X11 display
2: 'rgl.init' failed, running with 'rgl.useNULL = TRUE'. 
 mesh3d object with 8 vertices, 0 triangles and 6 quads.
 mesh3d object with 24 vertices, 12 triangles and 0 quads.
 mesh3d object with 8 vertices, 12 triangles and 0 quads.

rgl documentation built on Feb. 1, 2021, 3:01 a.m.