Wie ändere ich den zOrder des Objekts mit Threejs?

Ich habe eine Szene mit dem Webgl-Renderer erstellt, wo ich mehrere 3D-Objekte, die ich auswählen und verschieben kann, platziere. Wenn jedoch ein Objekt ausgewählt ist, möchte ich seine Achsen zeichnen. Kein Problem mit dem Zeichnen der Linien in die Mitte des Objekts, aber ich möchte, dass sie vor allem anderen in der Szene erscheinen, so dass sie sichtbar sind, auch wenn andere Objekte vorne sind – wie in Blender.

Ich habe versucht, mit dem RenderDepth-Parameter zu spielen, aber ich glaube nicht, dass ich verstanden habe, wie man es benutzt, und ich habe kein Ergebnis erhalten.

Danke für Ihre Hilfe.

    Wenn Sie möchten, dass einige Objekte “oben” oder “vor” gerendert werden, besteht ein Trick darin, zwei Szenen zu erstellen – die erste Szene ist Ihre normale Szene und die zweite Szene enthält die Objekte, die Sie oben haben möchten.

    Erstes Set

    renderer.autoClear = false; 

    Dann erstellen Sie zwei Szenen

     var scene = new THREE.Scene(); var scene2 = new THREE.Scene(); 

    Fügen Sie Ihre Objekte wie üblich zur ersten Szene hinzu und fügen Sie die Objekte, die Sie oben haben möchten, zur zweiten Szene hinzu.

    Führen Sie dann in Ihrer render() -function Folgendes aus:

     renderer.clear(); renderer.render( scene, camera ); renderer.clearDepth(); renderer.render( scene2, camera ); 

    Dadurch wird die erste Szene wiedergegeben, der Tiefenpuffer wird gelöscht und die zweite Szene wird anschließend gerendert.

    Hier ist eine Fiddle: http://jsfiddle.net/d9Lzdkkr/


    EDIT: Eine andere Lösung ist, nur eine Szene zu haben, aber dieses Muster zu verwenden:

     mesh.renderOrder = 999; mesh.onBeforeRender = function( renderer ) { renderer.clearDepth(); }; 

    Wenn das Mesh ein einzelnes Material hat, wird es “oben” angezeigt.

    drei .js r.85