Three.js arka planını şeffaf veya başka bir renge değiştirme


122

Tuvalimin varsayılan arka plan rengini siyahtan şeffafa / başka bir renge değiştirmeye çalışıyorum - ama şans yok.

HTML'im:

<canvas id="canvasColor">

CSS'im:

<style type="text/css">
#canvasColor {
 z-index: 998;
opacity:1;
background: red;
}
</style>

Aşağıdaki çevrimiçi örnekte görebileceğiniz gibi, tuvale eklenmiş bir animasyon var, bu yüzden sadece bir opaklık yapamam: 0; kimlik üzerinde.

Canlı ön izleme: http://devsgs.com/preview/test/particle/

Varsayılan siyahın üzerine nasıl yazılacağına dair bir fikriniz var mı?


Başlangıçta function init() {tuvaliniz kırmızıdır! Three.js onu siyaha çevirir setClearColorHex!
Simon Sarris

Yanıtlar:


237

Three.js kullanmaya başladığımda bununla karşılaştım. Aslında bir javascript sorunu. Şu anda var:

renderer.setClearColorHex( 0x000000, 1 );

sizin de threejsinit fonksiyonu. Şununla değiştirin:

renderer.setClearColorHex( 0xffffff, 1 );

Güncelleme: Güncellenmiş çözüm için HdN8'e teşekkürler:

renderer.setClearColor( 0xffffff, 0);

Güncelleme # 2: WestLangley tarafından başka, benzer bir soruda belirtildiği gibi - şimdi setClearColor()fonksiyonla bağlantılı olarak yeni bir WebGLRenderer örneği oluştururken aşağıdaki kodu kullanmanız gerekir :

var renderer = new THREE.WebGLRenderer({ alpha: true });

Güncelleme # 3: Bay doob r78, sahnenizin arka plan rengini ayarlamak için alternatif olarak aşağıdaki kodu kullanabileceğinizi belirtiyor :

var scene = new THREE.Scene(); // initialising the scene
scene.background = new THREE.Color( 0xff0000 );

Gerçekten haklısın Tuval gerçekten şeffaf pr. varsayılan, çok yazık benden. Bunu nerede değiştireceğinizi işaret ettiğiniz için çok teşekkürler - şimdi harika görünüyor!
user1231561

5
Güzel, bu da beni biraz rahatsız etti. Three.js komut dosyasında bu yöntemin yakında kullanımdan kaldırıldığını buldum, bunun yerine setClearColor (0xffffff, 1) kullanın.
HdN8

@ HdN8 - güncelleme için teşekkürler, cevaba ekledim.
Joe

1
setClearColor (0xffffff, 1) benim için çalışmadı (beyaz yaptı) ama setClearColor (0xffffff, 0) işe yaradı (şeffaf yaptı)
Ronen Rabinovici

11
Yana r78sadece yapabileceğiscene.background = new THREE.Color( 0xff0000 );
mrdoob

21

Tam cevap: (r71 ile test edildi)

Arka plan rengi ayarlamak için şunları kullanın:

renderer.setClearColor( 0xffffff ); // white background - replace ffffff with any hex color

Şeffaf bir arka plan istiyorsanız, önce oluşturucunuzda alfa'yı etkinleştirmeniz gerekir:

renderer = new THREE.WebGLRenderer( { alpha: true } ); // init like this
renderer.setClearColor( 0xffffff, 0 ); // second param is opacity, 0 => transparent

Daha fazla bilgi için belgeleri görüntüleyin .



3

Three.js editörü aracılığıyla bir sahne oluşturduğumda, oluşturucuyu bir alfa değeri ve net renkle ayarlamak için yalnızca doğru yanıt kodunu (yukarıda) kullanmak zorunda kalmadığımı, uygulamaya girmem gerektiğini öğrendim .json dosyası ve "Sahne" Nesnenin "arka plan" ayrıntısını bulup ayarlayın: "background: null".

Three.js düzenleyiciden dışa aktarma işlemi başlangıçta "arka plan" olarak ayarlanmıştı: 0


3

2020'de r115 kullanarak bununla çok iyi çalışıyor:

const renderer = new THREE.WebGLRenderer({ alpha: true }); const scene = new THREE.Scene(); scene.background = null;


-1

Ayrıca, three.js düzenleyicisini kullanıyorsanız, index.html'de arka plan rengini de temizlemek için ayarlamayı unutmayın.

background-color:#00000000
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.