2010-11-24 8 views

Antwort

31

In OpenGL ist ein Material eine Reihe von Koeffizienten, die definieren, wie das Beleuchtungsmodell mit der Oberfläche interagiert. Insbesondere werden Umgebungs-, Streu- und Spiegelkoeffizienten für jede Farbkomponente (R, G, B) definiert und auf eine Oberfläche angewendet und effektiv mit der Lichtmenge jeder Art/Farbe multipliziert, die auf die Oberfläche auftrifft. Ein endgültiger Emmisivitätskoeffizient wird dann zu jeder Farbkomponente hinzugefügt, wodurch Objekte leuchtend erscheinen können, ohne tatsächlich mit anderen Objekten zu interagieren.

Eine Textur ist andererseits ein Satz von 1-, 2-, 3- oder 4-dimensionalen Bitmap- (Bild-) Daten, die auf einer Oberfläche gemäß Texturkoordinaten aufgetragen und interpoliert werden die Ecken. Texturdaten ändern die Farbe der Oberfläche unabhängig davon, ob die Beleuchtung aktiviert ist oder nicht (und abhängig von dem Texturmodus, z. B. Abziehbild, Modulieren usw.). Texturen werden häufig verwendet, um Details einer Unterebene auf einer Oberfläche bereitzustellen, z. Anwenden einer sich wiederholenden Ziegel- und Mörtelstruktur auf ein Viereck, um eine Ziegelmauer zu simulieren, anstatt die Geometrie jedes einzelnen Ziegels zu modellieren.

Im klassischen OpenGL-Modell (Fixed-Pipeline) sind Texturen und Materialien etwas orthogonal. In der neuen programmierbaren Shader-Welt ist die Zeile ziemlich verschwommen. Häufig werden Texturen verwendet, um die Beleuchtung auf andere Weise zu beeinflussen. Zum Beispiel sind Bump-Maps Texturen, die verwendet werden, um Oberflächennormalen zu stören, um eine Beleuchtung zu bewirken, anstatt die Pixelfarbe direkt zu modifizieren, wie dies bei einer normalen "Bild" -Textur der Fall wäre.

5

Obwohl die Begriffe synonym verwendet werden können, ist es üblich, eine Bitmap als Textur zu bezeichnen.

Während eine vollständig definierte Textur, mit Lichteigenschaften, Bump-Mapping usw., würde eher als ein Material bezeichnet werden.

Aber ich sollte betonen, dass ihre Terminologie abhängig von den verwendeten Tools von der verwandten Community verwendet wird.

10

Was ich denke, der mit diesen Begriffen:

Eine Textur ist ein Bild, das auf ein 3D-Objekt abgebildet wird.

Ein Material simuliert ein physikalisches Material. Nehmen Sie zum Beispiel "Glas". Sie konnten keinen Glaseffekt mit einer einfachen Texturkarte erzeugen. Es hat Parameter wie, wie es Licht in verschiedenen Winkeln reflektiert und bricht. Ein Material könnte auch eine einfache Texturkarte sein, daher bedeuten die Begriffe manchmal dasselbe.

13

Die Frage lässt auf ein häufiges Missverständnis verschiedener Computergrafikkonzepte schließen. Es ist eines, das aus Pre-Shader-Denken und -Codieren entstanden ist.

Eine Textur ist nichts anderes als ein Container für eine Reihe von einem oder mehreren Bildern, wobei ein Bild ein Array mit einer Dimensionalität (1D, 2D usw.) von Werten ist, wobei jeder Wert ein Vektor zwischen 1 sein kann und 4 Zahlen. Texturen haben auch einige spezielle Techniken, um auf Werte von ihnen zuzugreifen, die eine Interpolation und die Minimierung von Aliasing-Artefakten aus der Abtastung ermöglichen.

Eine Textur kann Farben enthalten, aber Texturen haben keine Farben enthalten. Texturen können verwendet werden, um Parameter über eine Objektoberfläche zu variieren, aber dafür können nicht alle Texturen verwendet werden.

Texturen haben keine direkte Assoziation mit "Materialien"; Sie können sie für eine Vielzahl von Dingen (oder gar nichts) verwenden.

Ein Material ist ein Konzept in der Beleuchtung. Bei einem bestimmten Licht und einem Punkt auf der Oberfläche wird die Intensität (dh Farbe) des von dieser Oberfläche an diesem Punkt reflektierten Lichts durch eine Beleuchtungsgleichung bestimmt. Diese Gleichung ist eine Funktion vieler Parameter. Diese Parameter sind jedoch in zwei Kategorien unterteilt.

Eine Kategorie von Lichtgleichungsparametern sind die Lichtparameter. Diese beschreiben die Eigenschaften der Lichtquelle. Punktlichter gegen gerichtete Lichter gegen Punktlichter. Die Lichtintensität (wieder: Farbe) ist ein weiterer Parameter. Da die Intensität selbst abhängig von der Richtung des Oberflächenpunkts relativ zum Licht variieren kann (denken Sie an Taschenlampen oder Scheinwerfer), kann die Intensität von einer Textur zugegriffen werden. So projizieren viele Spiele Taschenlampen über einen dunklen Raum.

Die andere Kategorie von Lichtgleichungsparametern beschreibt die Eigenschaften der Oberfläche an diesem Punkt. Diese heißen Material Parameter. Die Materialparameter, kurz Material, beschreiben wichtige Eigenschaften der Oberfläche am jeweiligen Punkt. Das Normale an diesem Punkt ist wichtig. Es gibt auch die diffuse Reflexion (Farbe), Spiegelreflexion, Glanzgrad (Exponent für Phong/Blinn-Phong) und verschiedene andere Parameter, abhängig davon, wie umfassend Ihre Beleuchtungsgleichung ist.

Woher kommen diese Werte? Lichtparameter sind in der Regel in der Welt festgelegt. Lichter bewegen sich nicht pro Objekt (wenn Sie jedoch im Objektbereich leuchten, hat jedes Objekt seine eigene Lichtposition). Die Lichtintensität kann variieren. Aber das ist es meistens; alles andere passiert zwischen Frames, nicht innerhalb des Renderings eines einzelnen Frames. Die meisten Lichtparameter sind also Shader-Uniformen.

Materialparameter können aus verschiedenen Quellen stammen. Die Verwendung einer Shader-Uniform bedeutet effektiv, dass alle Punkte auf der Oberfläche denselben Wert haben. So könnte man die diffuse Farbe von einer Uniform bekommen, die der Oberfläche eine einheitliche Farbe geben würde (natürlich modifiziert durch Beleuchtung). Sie können die Materialparameter pro Vertex variieren, indem Sie sie als Eckpunktattribute übergeben oder sie aus anderen Attributen berechnen.

Oder Sie können einen Parameter bereitstellen, indem Sie einer Oberfläche eine Textur zuordnen. Diese Zuordnung beinhaltet das Zuordnen von Texturkoordinaten zu Vertexpositionen, so dass die Textur direkt an der Oberfläche angebracht ist. Die Textur wird während des Renderns an dieser Position abgetastet und dieser Wert wird für die Beleuchtung verwendet.

Die am häufigsten verwendeten Texturen, "Farbtexturen", variieren einfach das diffuse Reflexionsvermögen der Oberfläche. Die Textur liefert die diffuse Farbe an jedem Punkt entlang der Oberfläche.

Dies ist nicht die nur Funktion von Texturen. Sie könnten genauso leicht den spiegelnden Glanz über der Oberfläche variieren. Oder die Lichtintensität. Oder irgendetwas anderes.

Texturen sind Werkzeuge. Materialien sind nur eine Gruppe von Lichtgleichungsparametern.

Verwandte Themen