Frage

Ich habe einen OBJ -Loader erstellt, der .OBJ -Dateien importieren kann, die von 3DS Max in meinen einfachen OpenGL -Viewer / App exportiert wurden. Im Zentrum stand ein Vektor.h mit Hilfe einiger Tutorials.

Es hat großartig bei ein paar Modellen funktioniert, die ich verwendet habe, aber die, mit der ich arbeiten möchte, hat etwas anderes, das nicht berücksichtigt wurde. Es hat 4 Punkte in seinen Eckpunkten statt 3. Hier ist ein Beispiel einer Linie, mit der ich arbeite:

g Box02
usemtl Wood_Bark
s 4
f 1/1/1 2/2/1 3/3/1 4/4/2
f 4/1/3 3/2/3 5/3/3 

Die erste 'f' Linie hat 4 Scheitelpunkte, an denen ich interessiert bin. Mein Scheitelpunkt nimmt X, Y, Z. In den anderen Modellen, die ich hatte, waren alle Linien wie die zweite 'F' -Linie mit nur 3 Elementen. Ich bekomme einen Scheitelpunkt außerhalb der Reichweite, und als ich nachprüfte, wo es passiert ist, sah ich, dass es in dieser Linie war, also nahm ich an, weil mehr Daten in der Zeile gehandhabt werden können. Hier ist der gesamte Scheitelpunkt3.H

http://pastebin.com/dggsbsfe

Und dies ist die Codezeile, die fehlschlägt. Scheitelpunkte sind ein Vektor3.

tempVertices.push_back ( vertices[--vertex] );

Meine Frage ist, was ist der 4. Punkt? Wie würden Sie das in so etwas wie meiner Vector3.h -Datei berücksichtigen? Scheint, als müsste ich einen Vektor4.H erstellen und den 4. Var ignorieren, wenn nur 3 in der Zeile vorhanden sind. Aber ich würde gerne mehr darüber erfahren, was ich zu tun habe, und jeden Tipps, wie es geht. Ist das 4. Element ein Alpha oder so? Wie sollte es verwendet werden oder sollte es überhaupt in meinen Berechnungen in Vector3 verwendet werden?

War es hilfreich?

Lösung

Ein Gesicht mit vier Punkten heißt Quad. Wenn Sie es rendern möchten, sollten Sie es normalerweise in zwei Dreiecke zerlegen.

Sie haben zum Beispiel Folgendes:

 ___
|   |
|   |
|___|

Sie müssen es in diese verwandeln:

 ___
|\  |
| \ |
|__\|

Angenommen, die Eckpunkte gehen gegen den Uhrzeigersinn (die Standardeinstellung in OpenGL), beginnend von der oberen linken Seite, können Sie zwei Dreiecke herstellen. Die Scheitelpunkte des ersten Dreiecks wären die ersten, zweiten und dritten Scheitelpunkte des Quads. Die Eckpunkte des zweiten Dreiecks wären die dritten, vierten und ersten Eckpunkte des Quads.

Andere Tipps

Warum exportierst du nicht nur als Dreiecke? Konvertieren Sie in 3DS Max nach Emesh, machen Sie alle Kanten sichtbar, exportieren. Oder verwenden Sie einfach die entsprechende OBJ -Exportoption.

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