mesh-to-skeleton

0.0.54 • Public • Published

mesh-to-skeleton

convert a triangle mesh into a list of "skeletal points" - points of "maximum distance from the surface".

intuitively, if the mesh was "dissolving" from the outside in, the skeletal points would be the last points locally dissolved.

works by raycasting through the mesh from each triangle and taking the midpoint of each result.

this is useful to assist in converting meshes into implicit surfaces / signed distance functions, and other purposes.

Installation

npm i mesh-to-skeleton

Usage

var mts = require('mesh-to-skeleton');
var getSkeletalPoints = mts.getSkeletalPoints;
var getSkeletalPoints_resampled = mts.getSkeletalPoints_resampled;

var bunny = require('bunny'); //stanford bunny model  
var ti = require('triangles-index'); //tool to convert indexed model into triangle list
var triangles = ti.deindexTriangles_meshView(bunny); //raw list of triangles 

//each triangle is an array of 3 pts [[x,y,z],[x,y,z],[x,y,z]]
var skeletonPtsObjs = getSkeletalPoints(triangles); //list of {pt: [x,y,z], dist: distanceToSurface, triangleIndex: i}

//instead of using triangles to generate the points, 
//you can generate X random points uniformly distributed
//across the mesh surface

//here we generate 5000 
var skeletonPtsObjs_resampled = getSkeletalPoints_resampled(triangles, 5000);

//getSkeletalPoints(triangles, eps=0.01, relaxIters=0, quickRelaxBailOut=true, nKNNNeighbors=5)

//getSkeletalPoints_resampled(triangles, numPts, eps=0.01, relaxIters = 0, quickRelaxBailOut=true, nKNNNeighbors=5)
// the following used to make 'relaxed' image in readme [this may take a few minutes!]
// var skeletonPtsObjs_resampled = getSkeletalPoints_resampled(triangles, 3000, 0.01, 32, false, 10);

bunny

^ original bunny mesh

bunny relaxed

^ resampled, relaxed skeletal points (3000 total)

bunny midpts

^ quick [nonrelaxed] skeletal points, one for each triangle (3674 total)

bunny3

^ nonrelaxed, using 500 random points

bunny4

^ nonrelaxed, using 50000 random points

stonks

Readme

Keywords

none

Package Sidebar

Install

npm i mesh-to-skeleton

Weekly Downloads

2

Version

0.0.54

License

MIT

Unpacked Size

14.3 kB

Total Files

5

Last publish

Collaborators

  • stonkpunk