2017-12-15 6 views
0

Ich versuche, ein einfaches 3D-Rendering-Programm ohne die Verwendung von OpenGL zu implementieren. Ich habe Matrixstrukturen erstellt, aus denen ich eine Transformationsmatrix, eine Ansichtsmatrix und eine Projektionsmatrix mache. Das Produkt dieser Matrizen wird dann durch die vierte Komponente (w = 1) der Gitterscheitelpunkte in den Schablonenraum geteilt, bevor eine ViewProjectionMatrix angewendet wird, um die Bildschirmkoordinaten des Gitters zu erhalten.3D-Rendering in C: Anzeige Problem

Es sieht gut aus, wenn die Kamera weit weg von dem Netz ist, aber wenn ich es bewegen näher ich bekommen etwas wie folgt aus:

Picture of the problem

Es ist wie jedes vertice sieht, die nicht in der Ansicht Raum wird oben auf dem Bildschirm angezeigt. Hast du eine Vorstellung davon, was das verursacht?

Vielen Dank!

Antwort

1

Möglicherweise haben Sie vergessen, in der Nähe von Ebene Clipping zu implementieren, die keine Geometrie durchläuft eine Ebene in einem kleinen vorgegebenen Abstand vor der Kamera. Dies soll verhindern, dass sie die perspektivische Singularität überschreiten, welche die Position der Kamera ist. Jede Geometrie, die diese Singularität kreuzt, wird durch die perspektivische Projektion invertiert.

(P. S. ein häufig verwendeter Clipping-Algorithmus ist Sutherland-Hodgman)

+0

Vielen Dank, das perfekt funktionierte gut! – aperesso