2016-08-01 12 views
0

Ich habe eine Ebene innerhalb einer Sphäre in Three.js, der ich einen Shader rendere, damit ich Effekte auf die Sphäre bekommen kann. Ich verwende auch lookAt, um das Flugzeug mit der Kamera auszurichten. Das Problem, das ich erlebe, ist, dass, wenn die Kamera der Kugel zu nahe kommt, das Flugzeug in die Kugel zu schrumpfen scheint. Ich habe festgestellt, dass das Problem von der Perspektive der Kamera herrührt. Wenn die Kamera der Kugel zu nahe kommt, sind ihre Strahlen nicht mehr mit der Kante des Flugzeugs ausgerichtet.Korrektur für das perspektivische Beschneiden in Three.js

hier ein Bild visualisiert dies: Perspective clipping

Auch hier ist ein JSFiddle, die dies zeigt: https://jsfiddle.net/k8tc8ex6/1/

Ich weiß warum dieses Problem auftritt, was ich will ist einige mögliche Lösungen wissen, was Ich versuche zu erreichen ist, dass der Rand des Flugzeugs immer den Rand der Kugel zu berühren scheint nach der Render.

Vielen Dank im Voraus!

Antwort

0

wenn ich richtig bin, versuchen Sie, "perfekt" Mitte Abschnitt einer Kugel in Frustum einer Perspektivenkamera zu passen. Was Sie zu erreichen versuchen, ist mit einer perspektivischen Ansicht unmöglich. Wie Sie sagten (demonstriert), wird das Flugzeug die Grenzen des Bildschirms überschreiten oder es wird Lücken mit den Kanten des Flugzeugs und des Bildschirms geben.

Wenn Sie schlecht wollen „perfekt“, um den mittleren Abschnitt einer Kugel in den Bildschirm passen, haben Sie 2 Möglichkeiten:

1-) Schalter auf orthogonale Kamera 2-) halten Sie sich an Perspektive Kamera, machen Sie Ihre FOV ganz nah bei 0, geben Sie dem fernen Flugzeug eine riesige Entfernung, so dass Ihre perspektivische Kamera tatsächlich als orthographische Kamera fungiert.