mkGeometry = (vertices) => {
const positions = [];
const normals = [];
const uvs = [];
for (const vertex of vertices) {
positions.push(...vertex.pos);
normals.push(...vertex.norm);
uvs.push(...vertex.uv);
}
const geometry = new THREE.BufferGeometry();
const positionNumComponents = 3;
const normalNumComponents = 3;
const uvNumComponents = 2;
const positionAttr = new THREE.BufferAttribute(
new Float32Array(positions),
positionNumComponents
);
const normalAttr = new THREE.BufferAttribute(
new Float32Array(normals),
normalNumComponents
);
const uvAttr = new THREE.BufferAttribute(
new Float32Array(uvs),
uvNumComponents
);
geometry.setAttribute("position", positionAttr);
geometry.setAttribute("normal", normalAttr);
geometry.setAttribute("uv", uvAttr);
return geometry;
}