function createMesh(cods) {
const fitTo = 256;
let g = new THREE.Geometry();
g.vertices = cods.map(cod => new THREE.Vector3(...cod))
g.faces = (THREE.ShapeUtils.triangulateShape(g.vertices, [])).map(tri => new THREE.Face3(...tri))
g.computeBoundingBox();
const bbox = g.boundingBox;
var dX = Math.abs(bbox.max.x - bbox.min.x);
var dY = Math.abs(bbox.max.y - bbox.min.y);
const ratio = Math.max(dX, dY) / fitTo
g.faceVertexUvs = [g.faces.map(face => {
const { a, b, c } = face
const uv = [a,b,c].map(idx => {
const vertice = g.vertices[idx]
const x = vertice.x - bbox.min.x
const y = vertice.y - bbox.min.y
return new THREE.Vector2(x, y)
})
return uv
})]
console.log(g.faceVertexUvs)
const max = Math.max(dX, dY) / fitTo;
texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;
texture.needsUpdate = true;
const m = new THREE.MeshBasicMaterial({ map: texture })
return new THREE.Mesh(g, m)
}