2012-09-09 23 views
12

Parçacıkların opaklığını, bir düzlemden uzaklıklarının bir fonksiyonu olarak değiştirmeye çalışıyorum.three.js - Tek tek parçacıkların opaklığını ayarlama

This issue benim sorunumu açıklar ve bir yıl önce yanıt aslında "yapamazsınız". Opaklık görünüşe göre bir malzemenin bir parametresi değil, bir elementtir ve dolayısıyla bireysel parçacık opaklığı mümkün değildir.

Herhangi bir şey değişti mi, bunu başarabileceğim bir yol var mı? Bireysel parçacık boyama mümkün ise, bu ulaşılamıyor sanırım.

Alkış

cevap

23

ParticleSystemPoints sonra PointCloud yeniden adlandırıldı ve olmuştur.

Evet, bir Nokta Bulutu oluşturabilir ve her parçacığın renginin alfa değerini dinamik olarak değiştirebilirsiniz.

Üç.js'de, Point Cloud'un malzemesini, her parçacık için istenen alfa değerine eşit bir özniteliği olan ShaderMaterial olacak şekilde ayarlayabilirsiniz. http://jsfiddle.net/8mrH7/266/:

ShaderMaterials ise vertex shader ve fragman shader burada dinamik Alfa değerleri Nokta Bulut uygulayan bir gerçekten basit Fiddle olduğunu size yeni.

DÜZENLEME: Güncellenmiş keman

Three.js r.84

+1

teşekkürler! 0.2, \t \t \t harita:: THREE.ImageUtils.loadTexture ( \t \t \t \t "images/particle.png = new THREE.ParticleBasicMaterial ({ \t \t \t boyutu \t \t pMaterial şu ​​şekildedir: Benim şu anki malzemedir " \t \t \t), \t \t \t harmanlama: THREE.AdditiveBlending, \t \t \t vertexColors: true, \t \t \t şeffaf: true, \t \t \t depthWrite: false, // gerekli? \t \t}); Katkı harman dokusunu bu yaklaşımla nasıl koruyabilirim? – user593062

+0

Alpha artık örnekte çalışmıyor görünüyor. Sanırım üç.js'de buna neden olan bir şey değişmiş olmalı? –

+1

Tamam, düzeltildi. ShaderMaterial'da "şeffaf: doğru" ayarlamak zorundaydım. http://jsfiddle.net/yfSwK/27/ –

İlgili konular