Skip to content

Instantly share code, notes, and snippets.

@wallabyway
Created August 6, 2021 01:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wallabyway/27137986f4a8164af67b591eb8c31b74 to your computer and use it in GitHub Desktop.
Save wallabyway/27137986f4a8164af67b591eb8c31b74 to your computer and use it in GitHub Desktop.
apply 3D wood prism...
function ensureMeshUvws(geometry) {
// If mesh has no uvws, generate them by copying the vertex position vectors
// (x,y,z) => (u,v,w). We apply no transform. All geometry loaded by lmvtk uses
// this interleaved vertex buffer approach. We have to get the vertex position
// vectors out of the interleaved vertex buffer.
if (!geometry.getAttribute('uvw')) {
let vbb = ggeom.vb; // should always be 3
let vo = geometry.getAttribute('position').itemOffset; // should always be 0
let vz = geometry.getAttribute('position').itemSize; // should always be 3
let vs = geometry.vbstride;
let vb = geometry.vb;
let vn = vb.length / vs;
let wb = new Float32Array(vn * vz);
for (let vi = 0; vi < vn; vi++) {
wb[vz * vi + 0] = vb[vs * vi + vo + 1];
wb[vz * vi + 1] = vb[vs * vi + vo + 2];
wb[vz * vi + 2] = vb[vs * vi + vo + 0];
}
geometry.addAttribute('uvw', new THREE.BufferAttribute(wb, vz));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment