Was ist der Unterschied zwischen Verschiebungskartierung und Höhenkartierung?

15

Was ist der Unterschied zwischen Displacement Mapping und Height Mapping und was ist die Verbindung zur adaptiven Tessellation?

Jinxi
quelle
Angenommen, ich möchte eine Höhenzuordnung für ein kleines Objekt, dh eine Kugel, verwenden. Welche Techniken verwende ich, um Risse zu beseitigen? Glätten? Ist das performanter als Verschiebung und adaptive Tessellation?
Jinxi

Antworten:

10

Verschiebungs-Mapping und Höhen-Mapping sind zwei Bezeichnungen für "fast" dieselbe Technik. Sie zielen darauf ab, den gleichen Effekt zu erzielen, werden jedoch in unterschiedlichen Kontexten verwendet.

Um mehr zu erklären:

Verschiebungskartierung: Diese Technik zielt darauf ab, Unebenheiten als echte Geometrie in einem sehr feinen Netz wiederzugeben. Im Gegensatz zu Bump-Mapping, Parallax- und Relief-Mapping, bei dem mit normalen Maps versucht wird, Unebenheiten zu "fälschen", verschiebt das Displacement-Mapping die Oberfläche tatsächlich und erzeugt Dreiecke zwischen den Texeln. .

Höhenzuordnung: ist dasselbe, wird jedoch normalerweise in dem Kontext verwendet, in dem eine Verschiebungskarte (auch Höhenkarte genannt) auf einem Gelände angewendet wird, in dem die Werte nur zum Ändern der Scheitelpunkthöhe verwendet werden.

Es kann auf der CPU oder der GPU implementiert werden.

Ein gängiger CPU-Ansatz ist das Lesen von Höhen- oder Verschiebungswerten aus einer Höhen- / Verschiebungskarte (Textur), in der jedes Texel direkt einem Scheitelpunkt zugeordnet ist. Wobei jedes Texel einen Höhen- / Verschiebungswert codiert. Dies wird dann direkt auf die Geometrie angewendet, indem jeder Scheitelpunkt mithilfe des nachgeschlagenen Werts in eine eindeutige Richtung verschoben wird.

Die Richtung kann in Aufwärtsrichtung gewählt werden (normalerweise bei Gelände), was zu einer Änderung des Scheitelpunkt-Y-Werts führt, oder in Richtung der Flächennormalen, die normalerweise bei anderen Objekten als Gelände verwendet wird.

Eine GPU-Alternative ist die Verwendung der Funktion zum Abrufen der Scheitelpunkttextur (eingeführt in Shader Model 3.0), um das Geländegitter durch Zugriff auf eine Verschiebungs- / Höhenkarte ändern zu lassen. Die aus der Textur abgerufene Höhe wird vom Scheitelpunktschattierungsprogramm verwendet, um die Position des Scheitelpunkts zu ändern .

Andere Verwendungszwecke Die Verwendung einer Textur ermöglicht die schnellere Bearbeitung von Daten für Wellensimulationen und andere Animationen, die auf das Netz angewendet werden sollen.

In Bezug auf adaptive Tessellation:

Ein Nachteil der Verschiebungszuordnung besteht darin, dass Sie für große Terrains viele Polygone und Scheitelpunkte benötigen, um ein detailliertes Terrain zu modellieren, was die Verschiebungszuordnung für große Terrains irgendwie ineffizient macht.

Hier spielen adaptive Tessellierungs- und Detailgenauigkeitstechniken eine wichtige Rolle, um das Displacement-Mapping zu vereinfachen. Dies gilt insbesondere für die Weiterentwicklung der GPUs und die Einführung von Geometrie-Shadern. Die Tessellierung im laufenden Betrieb mit dieser Weiterentwicklung ist zur vorherrschenden Technik geworden. Es ist einfach zu programmieren und auf neueren GPUs und hat einige Nachteile.

Andere Techniken wie Relief- und Bump-Mapping bieten zusätzlichen Realismus zu im Allgemeinen vertretbaren Kosten, aber die Tatsache, dass die Basisoberfläche nicht gestört ist, erschwert die Kollisionserkennung und damit die Objektinteraktion.

Zusammenfassend lässt sich sagen, dass das Displacement Mapping und die adaptive Tessellation überlegene Details und Qualität mit weniger Nachteilen bei vertretbaren Leistungskosten bieten.

concept3d
quelle
Vergessen Sie nicht den letzten Teil der Frage "und welche Verbindung besteht zur adaptiven Tessellation?"
MichaelHouse
@ Byte56 danke für die Benachrichtigung Ich habe die Antwort aktualisiert.
concept3d
12

Verschiebungszuordnung kann eine Vektorverschiebung an jedem Punkt der Oberfläche bedeuten (muss aber nicht immer bedeuten) . Die Höhenzuordnung impliziert nur einen skalaren Verschiebungswert, dh jeder Punkt wird entlang seiner Normalen verschoben. Der Begriff "Verschiebungskartierung" kann auch für skalare Verschiebungen verwendet werden. Wenn also Vektorverschiebungen diskutiert werden, wird häufig explizit "Vektorverschiebungskartierung" gesagt.

Mit Tessellation können Sie eine Verschiebungskarte anwenden, indem Sie eine Oberfläche in kleine Polygone unterteilen und eine Verschiebung (von der Karte aus gesehen) auf jeden Scheitelpunkt der unterteilten Oberfläche anwenden. Der Grad der Unterteilung, den Sie benötigen, hängt zum Teil davon ab, wie verrauscht / detailliert die Verschiebungskarte ist. Daher kann die adaptive Tessellation verwendet werden, um in den Bereichen mit mehr Details feiner zu unterteilen, in den Bereichen mit weniger Details jedoch, um die Leistung zu verbessern.

Nathan Reed
quelle
Dies ist die objektiv richtige Antwort. Der subtile Unterschied wird erheblich wichtiger, da Anfänger mehr Tessellationscode zum Kopieren und Einfügen finden. (Die prozedurale Vektorverschiebung wurde bereits von nVidia vorgestellt)
MickLH
3

Im Grunde sind sie dasselbe.

Die Verschiebungszuordnung ist eine Technik zum Hinzufügen von Oberflächendetails, wie beispielsweise die Reliefzuordnung . Anders als bei der Reliefzuordnung wird bei der Verschiebungszuordnung die Geometrie jedoch basierend auf einer Eingabe- Höhenzuordnung (im Wesentlichen einem Raster von Höhenwerten) tatsächlich deformiert .

"Verschiebungskartierung" ist im Grunde genommen ein anderer, technisch genauerer Begriff für das, was umgangssprachlich als "Höhenkartierung" bezeichnet wird (genau genommen sollte sich "Höhenkartierung" wahrscheinlich auf den Vorgang des Erzeugens des Rasters von Höhendaten aus einem Quellmaterial beziehen, z Als 3D-Scanner wird dies in einer Implementierung der Verschiebungszuordnung verwendet - in der Praxis verwenden die meisten Leute die Begriffe jedoch nur synonym, wenn sie überhaupt "Verschiebungszuordnung" sagen.

Die Technik ist nicht direkt an die adaptive Tessellation gebunden, bei der es selbst darum geht, die Aufteilung einer mathematischen Beschreibung eines Netzes (z. B. einer Kugel) in die konkrete Sammlung von Dreiecken zu steuern, die zum Rendern dieses Netzes verwendet werden. Das "adaptive" Bit bedeutet, dass sich das Tessellierungsdetail basierend auf einigen Eingabekriterien, wie z. B. dem Betrachtungsabstand, ändert.

Im Kugelgehäuse können Sie beispielsweise diese Kugel sehr grob tessellieren (effektiv als Würfel), wenn diese Kugel sehr weit entfernt ist. Verwenden Sie jedoch mehr Details, wenn die Kugel nahe ist.

Häufig werden Techniken wie die Verschiebungszuordnung in Verbindung mit der Tessellation erläutert, da sich die Tessellation darauf auswirkt, wie Sie die Höhenkarte der Geometrie zuordnen möchten, um die Verschiebung auszuführen (oder welche Auflösung der Höhenkarte Sie auswählen möchten usw.).


quelle
2

Sie sind das gleiche Konzept.

BEARBEITEN: Verschiebung kann aus Höhen in mehr als einer Dimension bestehen!

Beginnen Sie keine semantischen Kriege darüber, aber realistisch gesehen bezieht sich das Höhen-Mapping normalerweise auf Techniken auf der Basis von großen Maßstäben / Tessellierungen, während sich das Verschiebungs-Mapping normalerweise auf Techniken auf der Basis von kleinen Maßstäben / Raytracing bezieht.

MickLH
quelle