War es hilfreich?

Lösung

DOT3-Beleuchtung wird oft als pro-Pixel-Beleuchtung. Mit Vertex Beleuchtung wird die Beleuchtung an jedem Scheitelpunkt berechnet, und die sich ergebende Beleuchtung wird über das Dreieck interpoliert. In Pro-Pixel-Beleuchtung, wie der Name schon sagt, ist das Objekt der Beleuchtung an jedem Pixel zu berechnen.

Die Art und Weise dieser auf feste Funktion Hardware durchgeführt wird, wenn das iPhone mit so genannten Registern Combiner ist. Der Name DOT3 kommt aus diesem Zustand machen:

glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_DOT3_RGB);

Lesen Sie diese Blog-Eintrag auf Wolfgang Engels Blog für weitere Informationen auf genau, wie diese einzurichten.

Wenn pro-Pixel-Beleuchtung macht es beliebt, auch eine so genannten nutzen normale Karte . Dies bedeutet, dass die normalen jeden Punkt auf einem Objekt in einer speziellen Texturkarte gespeichert ist, eine normale Karte. Dies wurde im Spiel DOOM 3 von ID Software populär, wo ziemlich niedrige Polygonmodelle, wo verwendet, aber mit hohen Auflösung normalen Karten. Der Grund für die Verwendung dieser Technik ist, dass das Auge auf einer Variation in der Beleuchtung als Variation in Form empfindlicher ist.

sah ich in der anderen Frage, dass der Grund, dies kam war, dass man den Speicherbedarf der Vertex-Daten reduzieren wollte. Das ist wahr, statt in jeder Ecke drei Komponenten für eine normale Lagerung, müssen Sie nur zwei Komponenten speichern, für die Textur auf den normalen Kartenkoordinaten. Aktivieren pro-Pixel-Beleuchtung wird mit einer Leistung Kosten kommt aber so bin ich nicht sicher, ob dies ein Netto-Gewinn sein, wie üblich die Beratung zu versuchen und zu sehen.

Schließlich wird die diffuse Beleuchtungsstärke in einem Punkt ist, auf den Kosinus des Winkels zwischen den Oberflächennormalen und die Richtung des Lichts proportional. Für zwei Vektor die Skalarprodukt ist definiert wie:

a dot b = |a||b| cos(theta)

wobei |a| |b| und ist die Länge der Vektoren a und b jeweils theta und ist der Winkel zwischen ihnen. Wenn die Länge gleich eins ist, und |a| |b| werden als Einheitsvektoren und die Formel vereinfacht sich zu:

a dot b = cos(theta)

Dies bedeutet, dass die diffuse Lichtintensität, die durch das Skalarprodukt zwischen der Oberflächennormalen und der Richtung des Lichts, gegeben wird. Dies bedeutet, dass alle diffuse Beleuchtung ist eine Form von DOT3-Beleuchtung, auch wenn der Name auf die pro-Pixel-Art zu beziehen ist gekommen.

Andere Tipps

hier :

  

Bumpmapping setzt eine Textur auf einem Modell, in dem jedes Texel Helligkeit der Höhe des Texels definiert.

     

Die Höhe jedes Texels wird dann verwendet, um die Beleuchtung über die Oberfläche zu stören.

     

Normal Mapping auf einem Modell eine Textur setzen, wo Farbe jedes Texels ist wirklich drei Werte, die die Richtung, die Lage an den Oberflächenpunkten definieren.

     

Eine Farbe von (255, 0, 0), zum Beispiel, könnte bedeuten, dass die Oberfläche an dieser Stelle nach unten weist die positive X-Achse.

     

Mit anderen Worten, jedes Texel ist ein normal.

     

Der Dot3 Name kommt von dem, was Sie mit diesen Normalen tatsächlich tun.

     

Angenommen, Sie haben einen Vektor haben, die in die Richtung zeigt Ihre Lichtquelle Punkte. Und lassen Sie uns sagen, dass Sie den Vektor haben, die die normale zu einem bestimmten Texels auf Ihrem Modell, das Ihnen sagt, in welche Richtung die Texel Punkte.

     

Wenn Sie eine einfache mathematische Gleichung ein „Punktprodukt“ auf diesen beiden Normalvektoren genannt, etwa so:

     

Dot = Drive N1x N2x + N1Y n2y + N1Z * N2Z

     

Dann wird der resultierende Wert ist eine Zahl, die Ihnen sagt, wie viel diese beiden Vektoren in die gleiche Richtung zeigen.

     

Wenn der Wert -1 ist, dann weisen sie in entgegengesetzten Richtungen, was bedeutet eigentlich, dass die Texel an der Lichtquelle zeigt, und die Lichtquelle auf der Texel zeigt, so sollte die Texel beleuchtet werden.

     

Wenn der Wert 1 ist, dann weisen sie in der gleichen Richtung, was bedeutet, das Texel zeigt weg von der Lichtquelle.

     

Und wenn der Wert 0 ist, dann einer der Vektoren Punkte bei 90 Grad gegenüber dem anderen. Dh: Wenn Sie auf dem Boden stehen, nach vorne suchen, dann ist Ihre Sichtvektor 90 Grad relativ zur Normalen des Bodens, die nach oben zeigt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top