2013-03-20 3 views

Antwort

28

Sie

einstellen
renderer.sortObjects = false; 

und die Objekte werden in der Reihenfolge wiedergegeben werden, die sie zu der Szene hinzugefügt wurden.

Alternativ können Sie sortObjects als true, die Standardeinstellung, belassen und für jedes Objekt einen Wert für object.renderOrder angeben.

Weitere Einzelheiten finden Sie Transparent objects in Threejs

Eine andere Sache, die Sie tun können, ist die hier beschriebene Ansatz verwenden: How to change the zOrder of object with Threejs?

three.js r.71

+0

Danke Mann, ich habe ein paar Experimente mit Ihrem RenderDepth Vorschlag gemacht und es hat funktioniert! –

0

Mit object.renderDepth in meinem Fall gearbeitet. Ich hatte eine Vitrine und Blasen drin, die transparent waren. Die Blasen gingen in bestimmten Winkeln verloren.

Also das Festlegen ihrer renderDepth auf eine hohe Zahl und das Spielen mit anderen Elementen Tiefen in der Szene das Problem behoben. Durch das Verbinden eines dat.gui-Steuerelements mit der renderDepth -Eigenschaft konnte sehr einfach festgelegt werden, in welcher Tiefe die Szene funktioniert.

Also, in meiner fishScene habe ich Kies, Tank und Blasen. Ich schloss das Kiesgitter mit einer dat.gui-Steuerung an und mit ein paar Sekunden hatte ich die Tiefe, die ich brauchte.

this.gui.add(this.fishScene.gravel, "renderDepth", 0, 200); 
2

für threejs r70 und höher ist renderDepth entfernt.

+0

Was ist die Problemumgehung dafür? Ich mag es nicht, mehrere überlappende Szenen zu haben. – mbehnaam

0

Ich hatte eine Reihe von Objekten, die aus einer for-Schleife in zufälliger Position x und y ... und obj.z ++ geklont wurden, so dass sie in einer Zeile aufstellen würden .. include obj.renderOrder ++; in der Schleife gelöst mein Problem.

Verwandte Themen