Was bedeutet "6-trennende" und "26-trennende" Voxelisierung?

11

Ich habe dieses Papier über Voxelpipe, eine Voxelisierungsbibliothek von NVIDIA, gelesen und in Abschnitt 2 Voxelisierung die Begriffe 6-Trennen und 26-Trennen gefunden

Ich habe diese Website gefunden , die versucht, die grundlegenden Ideen zur Voxelisierung zu erklären, aber es war nicht sehr hilfreich, die genannten Begriffe zu verstehen.

Kann jemand eine andere Ressource erklären oder darauf hinweisen, die mir beim Verständnis helfen kann?

BRabbit27
quelle

Antworten:

17

Die Begriffe haben mit der "Dicke" der Voxelisierung zu tun. Ich werde mit Hilfe eines Diagramms über die 2D-Linienrasterung (aus dieser nicht verwandten Frage ) veranschaulichen .

Geben Sie hier die Bildbeschreibung ein

Rechts ist die typische Linienrasterung: Der Algorithmus findet das Pixel, das der Linie in jeder Zeile (oder Spalte, je nach Steigung) am nächsten liegt. Dies erzeugt eine Linie, die wir normalerweise als "1 Pixel dick" betrachten. Auf der linken Seite befindet sich eine konservative Rasterung, bei der jedes Pixel gefunden wird, dessen Rechteck von der Linie berührt wird, und eine dickere Linie erzeugt wird.

Die 6-trennende Voxelisierung entspricht der dünnen Linie rechts und die 26-trennende Voxelisierung der dicken Linie links, jedoch in 3D. Wenn Sie sich vorstellen, dass die Linie tatsächlich ein Dreieck ist, das am Rand betrachtet wird, ist dies analog zu dem, wie die Voxelisierung aussehen würde.

Verschiedene Arten der Voxelisierung sind möglicherweise besser, je nachdem, was Sie später mit den voxelisierten Daten tun werden. Wenn Sie die Voxel als räumliche Hierarchie verwenden, um Dreiecke zu finden, die einen bestimmten Bereich schneiden, möchten Sie wahrscheinlich die dicke Voxelisierung, da sie konservativ ist. Die dicke Voxelisierung könnte auch für das Strahlenmarschieren vorzuziehen sein, da die dünne Voxelisierung durch einen diagonalen Strahl übersehen werden könnte. Andererseits ist die dünne Voxelisierung eine genauere Darstellung der ursprünglichen Oberfläche, was wahrscheinlich besser für Sichtbarkeitstests, Kollisionserkennung, Flüssigkeitssimulation und dergleichen ist.

Die "n-trennende" Terminologie ist ein bisschen unglücklich, aber hier ist, worum es geht. Stellen Sie sich vor, Sie führen eine 3D-Flutfüllung im Voxelgitter durch, aber in der Flutfüllung sehen Sie nur die 6 direkten Nachbarn jedes Voxels (± 1 Schritt entlang jeder Achse). Dann stoppt die "6-trennende" (dünne) Voxelisierung die Flutfüllung: Es reicht aus, die beiden Seiten der Oberfläche zu trennen, wenn nur 6 Nachbarn berücksichtigt werden. Nehmen wir andererseits an, Ihre Flutfüllung durfte auch zu diagonalen Nachbarn gehen - insgesamt 26 Nachbarn (3 × 3 × 3 Nachbarschaft von Voxeln). Dann würde die 6-trennende Voxelisierung die Flutfüllung nicht stoppen, aber die 26-trennende (dicke).

Nathan Reed
quelle
Nett ! Ihre Erklärung gibt mir die Intuition darüber. Haben Sie zufällig Quellen, in denen ich etwas mehr über Rasterisierung lesen kann? Ich nehme an, dass dieses n-trennende Zeug aus 2D stammt, wo es leichter zu verstehen ist, und dann kann ich mehr darüber nachdenken, um das 6- und 26-Trennen in 3D zu erfassen.
BRabbit27
1
@ BRabbit27 Ich glaube nicht, dass die "n-trennende" Terminologie bei der 2D-Rasterisierung häufig verwendet wird. Ich habe es nur gesehen, als ich über Voxelisierung gesprochen habe. Es bezieht sich nur auf die Anzahl der Nachbarn. Ich werde der Antwort dazu etwas hinzufügen.
Nathan Reed