Warum werden in der Computergrafik homogene Koordinaten verwendet?
Was wäre das Problem, wenn bei Matrixtransformationen keine homogenen Koordinaten verwendet würden?
Warum werden in der Computergrafik homogene Koordinaten verwendet?
Was wäre das Problem, wenn bei Matrixtransformationen keine homogenen Koordinaten verwendet würden?
Antworten:
Sie vereinfachen und vereinheitlichen die in Grafiken verwendete Mathematik:
Sie ermöglichen es Ihnen, Übersetzungen mit Matrizen darzustellen.
Sie ermöglichen es Ihnen, die Unterteilung durch Tiefe in perspektivischen Projektionen darzustellen.
Der erste bezieht sich auf die affine Geometrie. Die zweite bezieht sich auf die projektive Geometrie.
Es ist im Namen: Homogene Koordinaten sind gut ... homogen. Homogen zu sein bedeutet eine einheitliche Darstellung von Rotation, Translation, Skalierung und anderen Transformationen.
Eine einheitliche Darstellung ermöglicht Optimierungen. 3D-Grafikhardware kann darauf spezialisiert sein, Matrixmultiplikationen auf 4x4-Matrizen durchzuführen. Es kann sogar darauf spezialisiert sein, Multiplikationen mit 0 oder 1 zu erkennen und zu speichern, da diese häufig verwendet werden.
Wenn keine homogenen Koordinaten verwendet werden, kann es schwierig werden, die stark optimierte Hardware in vollem Umfang zu nutzen. Unabhängig davon, welches Programm erkennt, dass optimierte Anweisungen der Hardware verwendet werden können (normalerweise ein Compiler, manchmal sind die Dinge jedoch komplizierter), damit homogene Koordinaten für andere Darstellungen nur schwer optimiert werden können. Es werden weniger optimierte Anweisungen ausgewählt und somit das Potenzial der Hardware nicht genutzt.
Da gab es Aufrufe für Beispiele: Sony PS4 kann massive Matrixmultiplikationen durchführen. Es ist so gut, dass es für einige Zeit ausverkauft war, weil Cluster von ihnen anstelle von teureren Supercomputern verwendet wurden. Sony forderte daraufhin, dass ihre Hardware nicht für militärische Zwecke verwendet werden dürfe. Ja, Supercomputer sind militärische Ausrüstung.
Es ist für Forscher durchaus üblich geworden, Grafikkarten zu verwenden, um ihre Matrixmultiplikationen zu berechnen, selbst wenn keine Grafik beteiligt ist. Ganz einfach, weil sie in ihrer Größe besser sind als Allzweck-CPUs. Zum Vergleich haben moderne Mehrkern-CPUs in der Größenordnung von 16 Pipelines (x0,5 oder x2 spielt keine Rolle), während GPUs in der Größenordnung von 1024 Pipelines liegen.
Es sind nicht so sehr die Kerne als die Pipelines, die eine tatsächliche Parallelverarbeitung ermöglichen. Kerne bearbeiten Threads. Themen müssen explizit programmiert werden. Pipelines arbeiten auf Befehlsebene. Der Chip kann Befehle mehr oder weniger von selbst parallelisieren.
ergänzen:
homogene Koordinaten erlauben auch die Darstellung von Unendlichkeit: in 3D, dh der Punkt im Unendlichen in Richtungx,y,z. Typischerweise können Lichtquellen an endlicher oder unendlicher Position auf die gleiche Weise dargestellt werden.
Über die Perspektiventransformation ist es sogar möglich, ohne perspektivische Verzerrung korrekt zu interpolieren (im Gegensatz zu früherer Grafikhardware auf dem PC).
Aus persönlichen Gründen habe ich (wenn möglich) auf die Verwendung homogener Koordinaten verzichtet und die einfache kartesische Formulierung bevorzugt.
Der Hauptgrund ist die Tatsache, dass homogene Koordinaten 4 triviale Einträge in den Transformationsmatrizen (0, 0, 0, 1) verwenden, was unnötiges Speichern und Berechnen mit sich bringt (auch der Overhead von Allzweck-Matrixberechnungsroutinen, die "standardmäßig" in verwendet werden dieser Fall).
Der Nachteil ist, dass Sie beim Schreiben der Gleichungen mehr Sorgfalt benötigen und die Unterstützung der Matrixtheorie verlieren, aber bisher habe ich überlebt.
plain Cartesian formulation
eine Ressource oder einen Link zu einer Ressource bereitstellen , die deren Verwendung in 3D-Grafiken beschreibt?
w
?
Berechnungen in affinen Koordinaten erfordern oft Divisionen, die im Vergleich zu Additionen oder Multiplikationen teuer sind. Bei der Verwendung von projektiven Koordinaten muss man normalerweise nicht teilen.
Durch die Verwendung von projektiven Koordinaten (und generell der projektiven Geometrie) werden auch Sonderfälle eliminiert, wodurch alles einfacher und einheitlicher wird.