in einer Wavefront-Objektdatei (.obj) Wie soll ich Gesichter mit mehr als 4 Vertices in opengl rendern?

7

So verwenden Sie eine Wavefront-Objektdatei wie hier definiert: Ссылка

wie soll ich Gesichter darstellen, die mehr als 4 Vertices in opengl haben. Ich nehme an, dass, wenn es 3 Vertices hat, ich GL_TRIANGLES verwende, wenn es 4 hat, verwende ich GL_QUADS, aber wenn es 5 oder mehr hat, was soll ich verwenden? Gibt es einen Standard? In meiner Internetsuche war ich nicht in der Lage, mit etwas zu kommen und Samples Open-Gl-Code ich habe nur Unterstützung bis zu 4 Vertices gefunden.

    
Derick F 05.02.2012, 05:40
quelle

3 Antworten

7

OBJ-Exporteure exportieren die Vertices in einer vernünftigen Reihenfolge für jedes Gesicht (gegen / im Uhrzeigersinn), und solange Ihre Gesichter koplanar und konvex sind (was sie verdammt sein sollten!) - Sie können GL_TRIANGLE_FAN verwenden.

Ich stimme Nicol Bolas 'Standpunkt nicht zu, dass Flächen immer drei Vertices haben sollten, obwohl narrensicher, wenn Ihre Polygone den obigen Regeln folgen, die Verwendung von GL_TRIANGLE_FAN Ihren Code vereinfacht und den Systemspeicherverbrauch reduziert. Nichts wird die GPU-Seite ändern, da die Polygone sowieso in Dreiecke zerlegt werden.

    
cmannett85 05.02.2012, 09:26
quelle
8

Zuerst sollten Sie jedem Export-Tool mitteilen, keine Flächen mit so vielen Vertices zu exportieren. Gesichter sollten 3 Ecken haben, Punkt.

Wenn Ihr Exportwerkzeug das nicht kann, dann sollte Ihr Ladewerkzeug die Polygone in drei Scheitelflächen zerlegen. Ich bin mir ziemlich sicher, dass die Asset Importer-Bibliothek das kann.

    
Nicol Bolas 05.02.2012 06:00
quelle
4

Der Wikipedia-Eintrag auf wavefront-obj sagt, dass Flächen koplanar und konvex sein müssen, aber ich kann keine solche Deklaration in der ursprünglichen OBJ-Spezifikation finden.

Wenn das Gesicht koplanar und konvex ist, können Sie entweder GL_TRIANGLE_FAN verwenden, oder Sie können GL_TRIANGLE verwenden und den Ventilator manuell selbst auswerten. Ein Fan hat alle Dreiecke die erste Ecke teilen. So:

%Vor%

Wenn das Gesicht koplanar, aber konkav ist, müssen Sie das Gesicht mit einem Algorithmus triangulieren, z. B. mit der Ear-Clipping-Methode.

Ссылка

Wenn das Gesicht nicht-koplanar ist, sind Sie geschraubt, weil OBJ nicht genug Informationen bewahrt, um zu wissen, welche Tesselation beabsichtigt war.

    
David Jeske 08.09.2013 05:58
quelle

Tags und Links