2013-04-23 14 views
78

Próbowałem zmienić domyślny kolor tła mojego płótna z czarnego na przezroczysty/dowolny inny - ale bez powodzenia.Zmienianie tła three.js na przezroczysty lub inny kolor

Moje HTML:

<canvas id="canvasColor"> 

Moje CSS:

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

Jak widać na poniższym przykładzie internetowego Mam kilka animacji dołączone do płótna, więc nie mogę po prostu zrobić krycie: 0 ; na id.

Podgląd obrazu na żywo: http://devsgs.com/preview/test/particle/

Wszelkie pomysły jak zastąpić domyślny black?

+0

Na początku 'function init() {', twoje płótno jest czerwone! Three.js zmienia go na czarny z 'setClearColorHex'! –

Odpowiedz

165

Natknąłem się na to, gdy zacząłem również używać three.js. To w rzeczywistości problem z javascript. Aktualnie masz:

renderer.setClearColorHex(0x000000, 1); 

w twojej funkcji inicjującej threejs. Zmień go na adres:

renderer.setClearColorHex(0xffffff, 1); 

Aktualizacja: Dzięki HdN8 dla zaktualizowanego rozwiązania:

renderer.setClearColor(0xffffff, 0); 

Aktualizacja # 2: Jak podkreślił WestLangley w another, similar question - trzeba teraz skorzystaj z poniższego kod podczas tworzenia nowej instancji WebGLRenderer w połączeniu z funkcją setClearColor():

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

Aktualizacja # 3: Mr.doob zwraca uwagę, że od r78 można alternatywnie użyć kodu poniżej, aby ustawić scenę na kolor tła:

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

Naprawdę masz rację. Płótno jest rzeczywiście przezroczyste pr. domyślnie, wstyd mi. Wielkie dzięki za wskazanie, gdzie to zmienić - teraz wygląda świetnie! – user1231561

+4

Fajnie, to też mnie trochę wkurzyło. Znalazłem w skrypcie three.js tę metodę, która wkrótce zostanie uznana za przestarzałą, zamiast tego użyj setClearColor (0xffffff, 1). – HdN8

+0

@ HdN8 - dzięki za aktualizację, dodałem ją do odpowiedzi. – Joe

12

pełną odpowiedź: (Testowane z R71)

Aby ustawić użycie koloru tła:

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

Jeśli chcesz przezroczyste tło trzeba będzie włączyć alfa w renderujący pierwszy:

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

View the docs aby uzyskać więcej informacji.

1

Znalazłem, że kiedy stworzyłem scenę za pomocą edytora three.js, nie tylko musiałem użyć poprawnego kodu odpowiedzi (powyżej), aby skonfigurować renderer z wartością alfa i jasnym kolorem, musiałem przejdź do pliku app.json i znajdź atrybut "Tło" obiektu "Scena" i ustaw go na: "background: null".

Eksport z Three.edytor js miał pierwotnie ustawiony na "background": 0