2 Stimmen

Skalieren eines beliebigen 3D-Modells, damit es in ein Ansichtsfenster passt

Wie kann ich ein zufälliges 3D-Modell skalieren, damit es in ein Opengl-Viewport passt? Ich bin in der Lage, das Modell in der Mitte des Ansichtsfensters zu zentrieren. Wie skaliere ich es, damit es in das Ansichtsfenster passt. Das Modell könnte ein Flugzeug, ein Kegel, ein 3D-Objekt oder ein anderes beliebiges Modell sein.

Ich bin für jede Hilfe dankbar.

5voto

Thomas Punkte 160390

Sie benötigen die folgenden Informationen:

  • r : der Radius des Objekts Begrenzungskugel
  • z die Entfernung vom Objekt zur Kamera
  • fovy das vertikale Sichtfeld (z. B. in Grad) der Kamera, wie Sie es vielleicht an gluPerspective

Fertigen Sie eine kleine Skizze der Situation an, finden Sie darin das rechte Dreieck und leiten Sie den maximalen Radius einer Kugel ab, die genau hineinpassen würde. Mit den oben genannten Parametern sollten Sie Folgendes finden r_max = z * sin(fovy*M_PI/180 / 2) .

Daraus ergibt sich der Skalierungsfaktor r_max / r .

All dies setzt voraus, dass das Ansichtsfenster breiter als hoch ist; ist dies nicht der Fall, sollten Sie die fovx und verwenden Sie diese anstelle von fovy .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X