Wie heißt dieses Dreiecksunterteilungsschema?


7

Ich habe an eine Dreiecksunterteilung gedacht, um eine reibungslose Triangulation (kein Knallen) im Laufe der Zeit im laufenden Betrieb zu erreichen. Ich denke, es ist sehr wahrscheinlich, dass das Schema bereits erfunden ist und einen Namen hat, aber ich kann ihn scheinbar nicht finden.

Die Unterteilung erfolgt auf Dreieckskantenbasis. Für jede Kante, die länger als ein bestimmter Schwellenwert ist, z. B. 1 cm auf dem Display (dh projizierter Raum), erhält die Kante zwei neue Punkte mit einem Schwellenabstand (1 cm) voneinander. Die Kante zwischen den neuen Punkten ist dann vollständig und benötigt keine weitere Unterteilung. Auf diese Weise werden bis zu sechs neue Punkte aus der Unterteilung erstellt, es kann sich jedoch auch nur um eine Kante handeln, die zwei neue Punkte ergibt. Aus den Punkten werden Dreiecke gebildet und die Unterteilung wird rekursiv durchgeführt, bis alle Kanten kürzer als der Schwellenwert sind.

Das Erstellen von zwei Punkten entlang der Kante mit einem Schwellenwert ist wichtig, damit die Unterteilung im Laufe der Zeit glatt ist. Ich sehe Loop oder Catmull Clark nicht dabei.

Ich sollte wahrscheinlich erwähnen, dass ich dies erfolgreich für kartesische Netze in polaren Projektionen verwende. Genau genommen können sich die beiden entlang einer Kante erstellten Punkte auf der ursprünglich projizierten Linie befinden oder nicht.

Wie heißt es also?

Erläuterung

Ich muss also ein paar Dinge über kartesische Koordinatensysteme in polaren Projektionen erklären.

Ein gutes Beispiel für ein Polarkoordinatensystem ist eine flache Erde. Die Erde mag in einem kartesischen System mit einem riesigen Tisch darüber so aussehen: Erde kartesisch

Bei einem Polarkoordinatensystem könnte die x-Achse als Winkel vom Erdmittelpunkt zur kartesischen Koordinate definiert sein, wenn eine Ebene zur Projektion der Erde verwendet wird. Die y-Achse ist dann die Höhe, entweder von der Erdoberfläche oder unverblümt die Entfernung vom Erdmittelpunkt. Eine polare projizierte Version des obigen Bildes in meiner Beschreibung würde folgendermaßen aussehen (unter der Annahme, dass die Erde kugelförmig ist, was nicht der Fall ist ...):

polare Erde

(Bitte haben Sie Geduld damit, dass ich kein großartiger Künstler bin.)

Wie Sie sehen können, ist der Tisch jetzt gebogen, weil er in der Mitte näher am Erdmittelpunkt liegt als an den Rändern (übertrieben, ich weiß).

Ohne Unterteilung wäre der Tisch in der Polaransicht immer noch flach, seine Höhe wäre irreführend. Ein Punktobjekt in kartesischen Koordinaten oben auf der Tabelle kann sich in der Polaransicht darunter befinden. Die Dreiecksunterteilung zielt darauf ab, den Fehler zu verringern, bis er "klein genug" ist. Ich messe dies an der projizierten Länge auf dem Display, da es billig ist und meinen Qualitätsanforderungen gut entspricht, aber andere Schemata würden je nach den polaren Eigenschaften genauso gut oder besser funktionieren, z. B. die Wahrscheinlichkeit, dass Sie an einer genauen Höhe weit unter der Erdoberfläche interessiert sind.

Wie Sie vielleicht feststellen, wird der Fehler umso größer, je größer das Objekt ist und je näher es am polaren Ursprung liegt.

Kennen Sie einige Details des Algorithmus.

Dies ist ein Dreieck (in kartesischen Koordinaten), wobei der rote und grüne Rand in der Polaransicht zu lang sind , dh das Rot ist sehr nah am polaren Ursprung, das Grün nicht so nah und das Schwarz ziemlich weit entfernt:

Geben Sie hier die Bildbeschreibung ein

Und so würden Dreiecke entstehen:

Geben Sie hier die Bildbeschreibung ein

Sobald neue Punkte erstellt wurden, ist ihre kartesische Koordinate eine Koordinate entlang der ursprünglichen Kante. Die neuen Dreiecke werden erneut dem Algorithmus zugeführt und wiederholt, bis der Fehler klein genug ist. Im obigen Bild könnte man vermuten, dass der rote Rand mindestens noch einmal partitioniert werden sollte.

Der Punkt beim Erstellen von zwei Kontrollpunkten besteht darin, ein Kantenanpassungsverhalten ohne zusätzliche Kanteninformationen zu erhalten. Wenn Sie zwei benachbarte Dreiecke (oder Linien) teilen, werden die neuen Punkte garantiert genau an derselben Stelle mit genau denselben Informationen angezeigt.

Das Hauptmerkmal hierbei ist, dass neue Dreiecke die Mitte des ursprünglichen Dreiecks nicht kreuzen, da dies sonst zu einer zu starken Fehlerkorrektur von einem Bild zum anderen führen würde, da der größte Fehler in der Mitte zwischen den Kontrollpunkten liegt. Punkte in der Nähe des Kontrollpunkts werden am wenigsten korrigiert und geben daher die geringste Korrektur, um den Fehler klein genug zu machen. Dies ist entscheidend für ein reibungsloses Zoomen in einer der Achsen oder sogar für die Bewegung der projizierten Objekte.

Das Triangulationslayout ist stabil, unabhängig davon, welche Kanten zu lang sind.

Die Rekursion der Breite zuerst ist der bessere Weg, wenn die Unterteilung durch Zeit oder Speicher begrenzt ist, da die Kantenanpassung selbst für eine unterbrochene / teilweise Unterteilung garantiert ist.


4
Einige Diagramme oder Screenshots von dem, was Sie meinen, könnten hilfreich sein. Wenn Sie sagen, dass die beiden neuen Punkte einen Schwellenwert voneinander entfernt sind, bedeutet dies, dass sie nicht gleichmäßig entlang der Kante verteilt sind? Ich verstehe nicht ganz, wie das bei der zeitlichen Stabilität hilft.
Nathan Reed

Es klingt ein bisschen wie ROAM, ist aber schwer zu sagen ... youtube.com/watch?v=PPjWW8uPp3o
Alan Wolfe

@ NathanReed Weitere Erklärungen und Bilder hinzugefügt.
Andreas

@AlanWolfe Ich würde sagen, der Algorithmus befindet sich mit einigen Unterschieden im selben Stadion. Guter Fund :-)
Andreas

Antworten:


4

Anstatt zu unterteilen, bis eine bestimmte Kantenlänge auf dem Bildschirm erreicht ist, sollten Sie den Artikel " Adaptive Tessellation von Unterteilungsoberflächen mit Verschiebungszuordnung " von Michael Bunnell in GPU Gems 2 lesen. Es verwendet einen Kantenebenheitstest, um die Geometrie adaptiv zu tessellieren, was zu einer besseren Qualität bei gleicher Anzahl von Dreiecken führt.

Mit Ihrer aktuellen adaptiven Tessellierungsstrategie werden Sie am Ende flache Oberflächen aufteilen, was Ihre Dreieckszahl unnötig erhöht. Dies ist besonders bei GPUs schlecht, da es die Quad-Überziehung für die resultierenden Mikrodreiecke erhöht.

Über Ihre Frage nach dem Namen Ihres Unterteilungsschemas glaube ich nicht, dass es einen bestimmten Namen dafür gibt, aber es fällt einfach unter die allgemeinere "adaptive Tessellation".


Ja, es war eine etwas voreilige Antwort, fügte einige Änderungen hinzu
JarkkoL

Sie haben in letzter Zeit so viele detaillierte Antworten gegeben, dass ich vermutete, dass Sie mehr zu diesem Thema sagen konnten. +1
Trichoplax

"Mit Ihrer aktuellen adaptiven Tessellierungsstrategie werden Sie am Ende flache Oberflächen aufteilen, was Ihre Dreieckszahl unnötig erhöht." - Es ist genau das Gegenteil. Ich denke, Sie (und viele andere) wissen nicht, was ein Polarkoordinatensystem ist und wie es kartesische 3D-Modelle abhängig von seiner projizierten Position verzieht. Ich stimme Ihnen zu, dass der Schwellenwert ausgefeilter sein kann als die angezeigte Länge, aber es wird schwierig, ihn abzuleiten. Außerdem hat meine Ziel-GPU keine Tesselationsfähigkeit. Ich werde meine Antwort mit weiteren Informationen zu einem späteren Zeitpunkt aktualisieren.
Andreas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.