3 개가 아닌 1 개의 평탄함으로 텍스처의 병합 된 메쉬를 텍스처로 만들려면 어떻게해야합니까? 필자의 샘플 코드에서 텍스처는 각 분리 된 지오메트리에서 수행됩니다 (이미지 1, 2 번 참조). 두 개의 큐브와 한 개의 실린더. 사용병합 된 메쉬의 균일 한 텍스처
코드 :
scene = new THREE.Scene();
var texture = new THREE.TextureLoader().load('1-3-2-5-Bois.jpg');
var mesh = [], no = 0;
var meshes = [];
var geometry = new THREE.CubeGeometry(2, 10, 1);
mesh[no] = new THREE.Mesh(geometry);
meshes.push(mesh[no]);
no++;
geometry = new THREE.CylinderGeometry(0.5, 0.5, 10, 32);
mesh[no] = new THREE.Mesh(geometry);
mesh[no].position.set(1, 0, 0);
mesh[no].rotation.x = 0;
mesh[no].rotation.y = Math.PI/2;
mesh[no].rotation.z = 0;
meshes.push(mesh[no]);
no++;
geometry = new THREE.CubeGeometry(5, 10, 1);
mesh[no] = new THREE.Mesh(geometry);
mesh[no].position.set(-3.5, 0, 0);
meshes.push(mesh[no]);
no++;
geometry = mergeMeshes(meshes);
var material = new THREE.MeshBasicMaterial({ map: texture });
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
...
function mergeMeshes (meshes) {
var combined = new THREE.Geometry();
for (var i = 0; i < meshes.length; i++) {
meshes[i].updateMatrix();
combined.merge(meshes[i].geometry, meshes[i].matrix);
}
return combined;
}
네, 그렇습니다. 또한 이미지/텍스처를 90도까지 회전 할 수 있습니까? –
U와 V 좌표를 반전합니다. 그러면 90도 회전하는 효과가 있습니다. – griffin2000
다시 미세 조정하십시오. 하지만 이제 UV의 문제는 측면 텍스처와 최악의 실린더에 올바른 값을 사용하지 않습니다. 표면 법선을 사용하여이 기법을 찾았지만 작동하지 않습니다. (http://stackoverflow.com/questions/20774648/three-js-generate-uv-coordinate) –