Three.js - Kamera ortograficzna
Pracowałem nad aplikacją, która wyświetla niektóre modele 3D. Ładujemy modele, tworzymy siatki, dodajemy je do sceny ... standardowa procedura. Po dodaniu ostatniej siatki obliczamy obwiednię, aby przesunąć kamerę i pokryć całą scenę, wykorzystując rozmiar całej geometrii i rozmiar rzutni, aby wykonać matematykę.
if (bounds.bx / bounds.by < camera.aspect) {
/* Vertical max */
r = bounds.by / (2 * Math.tan(Math.PI / 8));
} else {
/* Horizontal max */
hFOV = 2 * Math.atan(Math.tan(Math.PI / 8) * camera.aspect);
r = bounds.bx / (2 * Math.tan((hFOV / 2)));
}
bounds
jest obiektem zawierającym szerokość i wysokość obwiedni. Po tych obliczeniach poruszamy kamerą (plus mały współczynnik, tylko estetyka, chcemy trochę miejsca między geometrią a obramowaniem ekranu :)) i renderujemy
camera.position.z = r * 1.05;
Do tej pory jest to realizowane i działa dobrze. Dokonano tego za pomocą PerspectiveCamera. Teraz chcemy to zmienić i użyć OrthographicCamera ... okazuje się być bałaganem. Modele są za małe, tracimy powiększenie kółka myszy z kontrolek TrackBall, a algorytm do poruszania kamerą już nie działa. Nie rozumiem też parametrów konstruktora kamery ... te szerokości i wysokości dotyczą geometrii lub rzutni?