refine-mesh
Iterative mesh refinement based on the technique in
- M. Botsch, L. Kobbelt. 2004 "A Remeshing Approach to Multiresolution Modeling" EUROGRAPHICS 2004
Give this some garbage mesh as input and it will automagically give you a nice uniformly subdivided mesh.
Example
var refine = var bunny = var normals = //Refine the bunny from a base mesh to one with a uniform edge length of 0.1var refined =
So, a coarse bunny mesh like this:

Becomes a fine mesh like this:

Install
npm i refine-mesh
API
var mesh = require('refine-mesh')(cells, positions, normals[,options])
Applies iterative mesh refinement to a cell complex
cells
is an array of triples representing the faces of the meshpositions
is an array of[x,y,z]
triples representing the verticesnormals
is an array of[nx,ny,nz]
triples representing the normalsoptions
is an object with the following properties:edgeLength
is the desired edge length (default is median edge length)maxIters
is the maximum number of iterations (default5
)splitIters
maximum number of edge split iterations (default10
)collapseIters
maximum number of edge collapse iterations (default10
)flipIters
maximum number of edge flip iterations (default10
)smoothIters
maximum number of smoothing iterations (default20
)smoothRate
constant controlling rate of smoothing (default0.95
)minSplit
minimum number of splits per iteration (default0
)minCollapse
minimum number of collapse operations (default0
)minFlip
minimum number of flip operations (default0
)minSmooth
minimum smoothing improvement (default0.01*edgeLength
)
Returns An object with the following properties
cells
the faces of the resulting meshpositions
vertex positions of resultnormals
vertex normals of result
License
(c) 2015 Mikola Lysenko. MIT License