2016-08-04 7 views
1
  1. Ich interessiere mich für das Zeichnen eines Sterns in THREE.js entweder mit Mesh-Punkten oder einem Partikelsystem.Können Punkte oder Maschen in unendlicher Entfernung gezeichnet werden?

  2. Ich möchte nicht, dass die Kamera näher an irgendeinen Teil des Sterns herankommt, da die Sterne effektiv unendlich weit entfernt sind.

ich von ein paar Möglichkeiten denken, dies zu tun:

  1. Ein sehr großes Netz (oder sehr große Punkt/Partikelabstände)

  2. Kamera und Kuppel haben ihre Bewegung genau verknüpft.

Gibt es eine Möglichkeit, eine Masche, Punkt oder Partikelsystem angeben wird automatisch in unendlicher Entfernung gemacht, so dass es immer hinter irgendwelchen Vordergrundobjekte gezogen wird?

+0

Siehe http://stackoverflow.com/questions/13309289/three-js-geometry-in-top-of-another/13309722#13309722 – WestLangley

Antwort

0

Ich habe three.js nicht verwendet, aber meine Vermutung ist nein. OpenGL-Kameras benötigen eine "nahe Clipping-Ebene" und eine "ferne Clipping-Ebene", die effektiv die minimale und maximale Entfernung angeben, in der die Objekte gerendert werden. Wenn Sie Videospiele gespielt haben, bei denen Sie sich zu nah an einer Wand bewegen sehen Sie es durch, oder sehen Sie Dinge in der Ferne plötzlich verschwinden, wenn Sie wegziehen, das waren wahrscheinlich die Clipping-Flugzeuge bei der Arbeit.

Die Problemumgehung ist normalerweise eine von zwei Möglichkeiten: 1) Stellen Sie den Abstand der fernen Clipping-Ebene so hoch wie möglich ein. Ich weiß nicht, welcher Datentyp three.js dafür verwenden würde, aber meine Schätzung ist ein 32-Bit-Float. 2) Render es in "Schichten". Rendern Sie alle Sterne zuerst vor allem anderen in der Szene.

0

Option 2 ist die, die ich normalerweise verwende.

Auch wenn Sie Option 1 verwendet haben, würden Sie immer noch die Position von Kamera und Skybox synchronisieren.

Wenn Sie nicht Tiefe cull, zeichnen Sie die Skybox zuerst und passen Sie ihre Position, aber nicht die Rotation, an die Kamera.

Deaktivieren Sie auch die Beleuchtung der Skybox. Bilde stattdessen ein Ambiente direkt in seine Textur.

Sie wollen Dinge nicht unendlich weit weg, Sie wollen nur, dass sie sich nicht in Bezug auf den Betrachter bewegen und nicht vor den Dingen erscheinen. Der beste Weg, dies zu erreichen, besteht darin, zu verhindern, dass der Betrachter sich ihnen nähert, was die Illusion erzeugt, dass das Objekt weit entfernt ist. Die zweite Sache besteht darin, die Tiefenauskreissfunktion so zu modifizieren, dass die Skybox immer weiter entfernt betrachtet wird als das, was Sie gerade zeichnen.

Wenn Sie ein sehr großes Mesh-Objekt erstellen, müssen Sie die ferne Ebene Ihrer Kamera groß genug einstellen, um das Mesh aufzunehmen, was bedeutet, dass Sie Dinge zeichnen, die Sie wirklich aussortieren möchten.