dev #84
|
@ -15,27 +15,26 @@ const set_metaril_func = (scene: any, material: any) => {
|
||||||
const uvAttribute = el.geometry.getAttribute('uv');
|
const uvAttribute = el.geometry.getAttribute('uv');
|
||||||
const uvs = [];
|
const uvs = [];
|
||||||
|
|
||||||
for (let i = 0; i < uvAttribute.count; i++) {
|
if (uvAttribute) {
|
||||||
uvs.push(uvAttribute.getX(i), uvAttribute.getY(i));
|
for (let i = 0; i < uvAttribute.count; i++) {
|
||||||
|
uvs.push(uvAttribute.getX(i), uvAttribute.getY(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Вычисление минимальных и максимальных UV
|
||||||
|
const minU = Math.min(...uvs.filter((_, index) => index % 2 === 0)); // X координаты
|
||||||
|
const maxU = Math.max(...uvs.filter((_, index) => index % 2 === 0));
|
||||||
|
const minV = Math.min(...uvs.filter((_, index) => index % 2 === 1)); // Y координаты
|
||||||
|
const maxV = Math.max(...uvs.filter((_, index) => index % 2 === 1));
|
||||||
|
|
||||||
|
// Определите размеры текстуры на поверхности
|
||||||
|
const surfaceWidth = maxU - minU;
|
||||||
|
const surfaceHeight = (maxV - minV) * el.scale.y;
|
||||||
|
|
||||||
|
material.normalMap.wrapS = RepeatWrapping;
|
||||||
|
material.normalMap.wrapT = RepeatWrapping;
|
||||||
|
material.normalMap.repeat.set(surfaceWidth, surfaceHeight);
|
||||||
|
material.normalMap.needsUpdate = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Вычисление минимальных и максимальных UV
|
|
||||||
const minU = Math.min(...uvs.filter((_, index) => index % 2 === 0)); // X координаты
|
|
||||||
const maxU = Math.max(...uvs.filter((_, index) => index % 2 === 0));
|
|
||||||
const minV = Math.min(...uvs.filter((_, index) => index % 2 === 1)); // Y координаты
|
|
||||||
const maxV = Math.max(...uvs.filter((_, index) => index % 2 === 1));
|
|
||||||
|
|
||||||
// Определите размеры текстуры на поверхности
|
|
||||||
const surfaceWidth = maxU - minU;
|
|
||||||
const surfaceHeight = (maxV - minV) * el.scale.y;
|
|
||||||
|
|
||||||
material.normalMap.wrapS = RepeatWrapping;
|
|
||||||
material.normalMap.wrapT = RepeatWrapping;
|
|
||||||
material.normalMap.repeat.set(surfaceWidth, surfaceHeight);
|
|
||||||
material.normalMap.needsUpdate = true
|
|
||||||
|
|
||||||
console.log(`Ширина текстуры на поверхности: ${surfaceWidth * 128}`);
|
|
||||||
console.log(`Высота текстуры на поверхности: ${surfaceHeight * 128}`);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (el.material) el.material = material
|
if (el.material) el.material = material
|
||||||
|
|
Loading…
Reference in New Issue