Ordnungsgemäße Aktualisierung von GeoClipMaps

7

Ich habe an einer Implementierung von GPU-basierten Geo-Clip-Maps gearbeitet, aber es gibt einen Abschnitt des GPU Gems 2-Artikels , den ich einfach nicht verstehen kann, insbesondere diesen Absatz und genauer den fettgedruckten Teil:

Die Wahl der Gittergröße n = 2k - 1 hat den weiteren Vorteil, dass die feinere Ebene niemals genau in Bezug auf die übergeordnete gröbere Ebene zentriert ist. Mit anderen Worten, es wird je nach Position des Ansichtspunkts immer um 1 Rastereinheit entweder links oder rechts sowie oben oder unten versetzt (siehe Abbildung 2-4). Tatsächlich ist es notwendig, zuzulassen, dass sich ein feineres Niveau verschiebt, während sein nächst gröberes Niveau fest bleibt, und daher muss das feinere Niveau manchmal in Bezug auf das nächst gröbere Niveau außermittig sein. Eine alternative Wahl der Gittergröße wie n = 2k - 3 würde die Möglichkeit einer exakten Zentrierung bieten

Nehmen wir ein Beispielbild aus dem Artikel:

GPUGems2Beispiel

Mein "Verständnis" für die Art und Weise, wie die Clip-Maps aktualisiert wurden, bestand darin, dass Sie die Position des Ansichtspunkts auf ein Int setzen und als solches den zentralen Scheitelpunkt erhalten. Wenn dies nicht mit dem vorherigen Mittelpunkt übereinstimmt, aktualisieren Sie die gesamte Karte. Dies ist offensichtlich nicht der Fall. Was ich nicht verstehe, ist Folgendes:

Wenn Sie sich das Bild oben ansehen und der Ansichtspunkt eine Einheit nach rechts bewegen würde, würde der innere Ring (der direkt um den Ansichtspunkt + das weiße mittlere Quadrat) sowohl links als auch links einen Abstand von 1 Einheit erhalten rechte Seite von sich. Aber es gibt nichts in der Zeitung, was sich damit befasst. Was ich damit meine ist, dass es am Ende so aussehen würde: (entschuldigen Sie meine miese Bearbeitung des obigen Bildes durch Ausschneiden und Einfügen):

Bearbeitete Version von gpu gems2 image

Dies ist offensichtlich kein gültiger Zustand. Wäre die Lösung also, dass sich ein Clipring (Ebene) nur in Schritten des Rings / der Ebene bewegen kann, in dem er enthalten ist? Wäre das nicht sehr restriktiv? Ich habe das Gefühl, dass mir ein entscheidendes Verständnis für Teile des Algorithmus fehlt, aber ich habe sowohl dieses als auch das Originalpapier von 2004 durchgesehen und kann einfach nicht sehen, was ich nicht bekomme.

thr
quelle

Antworten:

1

Ich denke du hast die richtige Idee.

Wäre die Lösung also, dass sich ein Clipring (Ebene) nur in Schritten des Rings / der Ebene bewegen kann, in dem er enthalten ist?

Ja

Wäre das nicht sehr restriktiv?

Nein, bei diesem System kann sich die innerste Ebene immer in Schritten von 1 Einheit bewegen. Dann muss jeder Ring auf der Ebene n von der innersten Stufe alle 2 n Schritte aktualisiert werden .

Das Fehlen von Streifen mit halber Blockbreite erleichtert auch das Generieren der Patch-Streifen.

Animierte Demo

So sollten die Schiebefenster aussehen, soweit ich dem Papier entnehmen kann. Beachten Sie, dass in Ihrem Beispiel keiner der "Halbkantenstreifen" vorhanden ist und sich der innerste Block weiterhin in glatten Schritten von 1 Einheit bewegen kann.

Eine Animation eines sich bewegenden Blickwinkels

Jimmy
quelle