convert raw triangles or complexes [such as bunny
] to/from three.js geometries
npm i triangles-to-three-geometry
var tttg = require('triangles-to-three-geometry');
//indexed mesh {positions, cells}
var bunny = require('bunny');
//raw list of triangles [ [[x,y,z],[x,y,z],[x,y,z]] ... ]
var bunnyTriangles = require('triangles-index').deindexTriangles_meshView(bunny);
//indexed triangles --> indexed three geom
var threeBunny = tttg.trianglesIndexed2ThreeGeom(bunny);
//also trianglesIndexed2ThreeGeom_dummyUvsNormals -- adds dummy uv and normals attributes
//raw triangles --> three geom [optionally, indexed]
var doIndex = true; //default true
var threeBunny2 = tttg.triangles2ThreeGeom(bunnyTriangles, doIndex);
//also triangles2ThreeGeom_dummyUvsNormals -- adds dummy uv and normals attributes
//three geom --> tris [or indexed tris]
//threeGeomToTriangles(threeGeom, doIndex=false);
//if doIndex=true, returns {cells, positions}, otherwise returns raw tris
var bunnyTris2 = tttg.threeGeomToTriangles(threeBunny2);
//three geom --> indexed triangles
//this is the same as threeGeomToTriangles(threeGeom, true)
var bunny2 = tttg.threeGeomToTrianglesIndexed(threeBunny2) ;
console.log("bunny orig ", bunny.cells.length)
console.log("bunny tris ", bunnyTriangles.length)
console.log("three bunny verts", threeBunny.attributes.position.array.length)
console.log("bunnyTris2 ", bunnyTris2.length)
console.log("bunny2 ", bunny2.cells.length)
// bunny orig 3674
// bunny tris 3674
// three bunny verts 5517
// bunnyTris2 3674
// bunny2 3674