2012-06-14 17 views
14

Çalışma zamanında bir ağ gözü görünmez yapmak istiyorum. Bu parçaları görünmez/şeffaf olarak ayarlayabilir miyim, ör. Tek yüzlerin özelliklerini değiştirerek? Kafesin kendisi sadece bir malzeme kullanıyor. (20 köşe bir geometriye sahip Burada) bir ağ hayal dört nokta, her dört bir Face4 kurar: düzenleyici olarakBir mesh'in yüzlerini üç.js'de gizleyebilir miyim?


Örnek örnekleme bu soruyu anlar. Şimdi, ağın bazı kısımları görünmez hale getirilmelidir (burada iki yüz görünmezdir).

example

+0

Sorunuz gerçekten açık değil. Yüzlerin görünürlüğünü yanlış olarak ayarlamaya mı çalışıyorsunuz (görünmez hale getiriyorsunuz)? – frank

+0

Bu soruyu, bir şekilde anladığım şekilde düzenledim. Özellikle de bu soruya da sahip olduğum için bir kopya oluşturmak istemiyorum. – Matthias

cevap

23

Her yüze farklı bir malzemeyi atayabilirsiniz. İşte yüzleri materyal paylaşan bir örnektir, ancak bazı yüzler saydamdır: zamanında bir malzemeyi değiştirmek için bir yol gösteren Fiddle Güncelleme

// geometry 
var geometry = new THREE.BoxGeometry(100, 100, 100, 4, 4, 4); 

// materials 
materials = [ 
    new THREE.MeshLambertMaterial({ color: 0xffff00, side: THREE.DoubleSide }), 
    new THREE.MeshBasicMaterial({ transparent: true, opacity: 0 }) 
]; 

// assign material to each face 
for(var i = 0; i < geometry.faces.length; i++) { 
    geometry.faces[ i ].materialIndex = THREE.Math.randInt(0, 1); 
} 
geometry.sortFacesByMaterialIndex(); // optional, to reduce draw calls 

// mesh 
mesh = new THREE.Mesh(geometry, materials); 
scene.add(mesh); 

: http://jsfiddle.net/e0x88z7w/

DÜZENLEME: MeshFaceMaterial kullanımdan kaldırıldı. Gönder ve keman güncellendi.

three.js r.87

+0

Fakat bu yüz materyallerini * çalışma zamanı * olarak nasıl değiştiririm? [Fiddle] 'a (http://jsfiddle.net/2FZU7/2/) bir tıklama dinleyicisi ekledim, bu da tüm yüzleri tekrar sarıya çevirmeli ama * çalışmaz *. Bunun hakkında bir [ilgili tartışma] (https://github.com/mrdoob/three.js/issues/1303) buldum. – Matthias

+0

** Yorum: ** Tüm yüzleri tekrar sarı yapmak, sorunun kullanım durumuna aykırıdır. Tabii ki işe yaramayan her yüze şeffaf malzemeyi uygulamak için [kodu değiştirdim] (http://jsfiddle.net/2FZU7/3/). – Matthias

+1

Bu keman, _runtime_ değişikliklerine izin veriyor. http://jsfiddle.net/2FZU7/4/. Başvurulan "ilgili tartışma" dayanmaktadır. Ayrıca, tamponların önceden ayrılması gerektiğinden, daha karmaşık bir malzemeye dönüşemezsiniz, bu yüzden yeni kemanda her iki malzeme de “Lambert” dir. – WestLangley

İlgili konular