2014-04-27 9 views
6

Bir Box nesnesinin yalnızca bir tarafına bir doku uygulamak çalışıyorum.Birden çok Kutu nasıl oluşturulur ve yalnızca doku bir tarafta mı değiştirilir?

temel kod: I 6 malzemeleri ihtiva eden bir dizi kullanarak güvenilir

BoxGeo = new THREE.BoxGeometry(50, 50, 125); 
BoxMat = new THREE.MeshLambertMaterial({ color: 0xF0F0F0 }); 
BoxObj = new THREE.Mesh(GeoBox, GeoMat); 

5 renkli ve (rastgele her Box için dokular bir diziden seçmiş) bir görüntü ile bir, nesne. Ama bir hata atar :(

Her bir yüz için farklı dokuya sahip bir Kutunun basit bir örneğini sağlamak mümkün mü? İnternette bazı örnekleri gördüm, ancak malzeme dizisini Geometry nesnesinin içine koymam gerekiyor ve Ben performans nedenleriyle her Box için yeni Geometrik nesnesi oluşturarak önlemek istiyoruz.

cevap

3

ne this sample olacak? o yüzden. materyal dizi oluşturur ve daha sonra ağ ekler, siz yeniden kullanabilirsiniz.

İlgili kod:

// 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); 
+0

Hahaha! Şaşırtıcı! Çok teşekkür ederim! (Sanırım bu web sitesindeki tüm demoları kontrol ettim) –

+0

@JeremyDicaire - yardım etmekten memnunum – acarlon