shape的nv坐标转换成普通canvas坐标或者planeGeometry()方法的uv坐标
function reMapUv(geometry) {
geometry.computeBoundingBox();
const max = geometry.boundingBox.max,
min = geometry.boundingBox.min;
const offset = new THREE.Vector2(0 - min.x, 0 - min.y);
const range = new THREE.Vector2(max.x - min.x, max.y - min.y);
const faces = geometry.attributes.uv.array;
let array = [];
//坐标转换
for (let i = 0; i < faces.length ; i += 2) {
array.push((faces[i] + offset.x)/range.x);
array.push((faces[i + 1] + offset.y)/range.y);
}
// 反转 Y 轴坐标,使其从上到下
for (let i = 0; i < array.length; i += 2) {
array[i + 1] = 1 - array[i + 1];
}
geometry.setAttribute('uv', new THREE.Float32BufferAttribute(new Float32Array(array), 2));
geometry.attributes.uv.needsUpdate = true;
}