mesh-to-voxels

0.0.113 • Public • Published

mesh-to-voxels

convert a triangle mesh into a set of voxels / axis-aligned bounding boxes

the bounding box of the mesh is broken up like an octree and only the boxes at the edge and/or inside the mesh are kept

Installation

npm i mesh-to-voxels

Usage

var m2v = require('mesh-to-voxels');
var bunny = require('bunny'); //mesh has format {cells, positions}

//meshToVoxels(
// mesh, 
// iters? = 3, //iterations to recursively break down the mesh bounding box  
// cubifyBounds? = true, //turn the mesh bounding box into a cube before start [ensure cube voxels]
// edgesOnly? = true,    //only include voxels straddling the edge of the mesh
// volumeOnly? = false,  //only include voxels totally enclosed within the mesh
// dontSubdivideEnclosedBlocks? = false, //do not subdivide voxels totally enclosed within the mesh
// mergeAfter? = false,  //merge voxels with npm merge-boxes
// meshBvh? = null       //existing BVH
//)

//slower, simpler, more reliable:
//meshToVoxelsNaive(mesh, resolutionXYZ=[32,32,32], cubifyBounds=true, mergeAfter = false, meshBvh = null)

//new, improved, experimental , based on marching-cubes-fast 
//meshToVoxelsMC(mesh, iters=3, cubifyBounds=true, edgesOnly=true, mergeAfter = false, searchRadiusPadding=0)

var voxels = m2v.meshToVoxels(bunny)
//see also .threeGeomToVoxels, same api, takes old-style three.js geometry with .faces

console.log("VOXELS", voxels); //each voxel is axis-aligned bounding box [[minX,minY,minZ],[maxX,maxY,maxZ]]

//view result with ascii-raytracer

var art = require('ascii-raytracer');

var config = {
    boxes: voxels,
    resolution: 64,
    aspectRatio: 1.0,
    mouseControl:true
}

art.runScene(config);

bunny1

^ bunny voxels - 3 iterations

bunny2

^ bunny voxels - 4 iterations

bunny3

^ bunny voxels - 5 iterations




stonks

Readme

Keywords

Package Sidebar

Install

npm i mesh-to-voxels

Weekly Downloads

2

Version

0.0.113

License

MIT

Unpacked Size

17.7 kB

Total Files

5

Last publish

Collaborators

  • stonkpunk