Box Object의 한면에만 텍스처를 적용하려고합니다.
기본 코드 :
BoxGeo = new THREE.BoxGeometry(50, 50, 125);
BoxMat = new THREE.MeshLambertMaterial({ color: 0xF0F0F0 });
BoxObj = new THREE.Mesh(GeoBox, GeoMat);
6 개의 재질 개체, 5 개의 색상 및 이미지가있는 배열 (각 상자에 대한 다른 텍스처 배열에서 임의로 선택됨)을 포함하는 배열을 사용해 보았습니다. 하지만 오류가 발생합니다.
각 얼굴마다 다른 질감의 상자의 간단한 예를 제공 할 수 있습니까? 인터넷에서 몇 가지 예를 보았지만 Geometry 개체 내부에 재료 배열을 넣어야하므로 성능상의 이유로 각 Box에 대해 새로운 Geometric 개체를 만드는 것을 피하고 싶습니다.
무엇에 대해 이 샘플 ? 재료 배열을 생성 한 다음 메시에 추가합니다. 따라서 재사용 할 수 있습니다.
관련 코드 :
// Create an array of materials to be used in a cube, one for each side
var cubeMaterialArray = [];
// order to add materials: x+,x-,y+,y-,z+,z-
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0xff3333 } ) );
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0xff8800 } ) );
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0xffff33 } ) );
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0x33ff33 } ) );
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0x3333ff } ) );
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0x8833ff } ) );
var cubeMaterials = new THREE.MeshFaceMaterial( cubeMaterialArray );
// Cube parameters: width (x), height (y), depth (z),
// (optional) segments along x, segments along y, segments along z
var cubeGeometry = new THREE.CubeGeometry( 100, 100, 100, 1, 1, 1 );
// using THREE.MeshFaceMaterial() in the constructor below
// causes the mesh to use the materials stored in the geometry
cube = new THREE.Mesh( cubeGeometry, cubeMaterials );
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다