node package manager

isosurface

3D isosurface polygonizer

isosurface

Isosurface polygonizer algorithms in JavaScript. For more details, see the following blog posts:

Or try out a live demo

Example

var isosurface = require("isosurface")
 
var mesh = isosurface.surfaceNets([64,64,64], function(x,y,z) {
  return x*+ y*+ z*- 100
}, [[-11,-11,-11], [11,11,11]])
 
console.log(mesh)

Install

npm install isosurface

API

var isosurface = require("isosurface")

isosurface.surfaceNets(dims, potential[, bounds])

Extracts an isosurface from potential using surface nets with resolution given by dims.

Params:

  • dims: A 3D vector of integers representing the resolution of the isosurface
  • potential(x,y,z): A scalar valued potential function taking 3 coordinates as arguments returning a scalar.
  • bounds: A pair of 3D vectors [lo, hi] giving bounds on the potential to sample. If not specified, default is [[0,0,0], dims].

Returns: A mesh object with the following members:

  • positions: The coordinates of the vertices of the mesh
  • cells: The faces of the mesh.

isosurface..marchingCubes(dims, potential[, bounds])

Same as above, except uses marching cubes instead of surface nets to extract the isosurface.

isosurface.marchingTetrahedra(dims, potential[, bounds])

Same as above, except uses marching tetrahedra instead of surface nets to extract the isosurface.

Credits

(c) 2012-2014 Mikola Lysenko. MIT License