iPhone 3D-Modellformat: .h-Datei, .obj oder eine andere?

7

Ich fange an, ein iPhone-Spiel mit OpenGL-ES zu schreiben, und habe ein Problem bei der Entscheidung, in welchem ​​Format meine 3D-Modelle vorliegen sollen. Ich habe gelesen (Link entgeht mir im Moment), dass einige Entwickler die Modelle bevorzugen kompiliert in Objective-C .h-Dateien. Wieder andere bevorzugen .obj, da diese portabler sind (dh für die Bereitstellung auf Nicht-iPhone-Plattformen).

Verschiedene 3D-Game-Engines scheinen viele (?) Formate zu unterstützen, aber ich werde keine dieser Engines verwenden, da ich OpenGL-ES tatsächlich lernen möchte . Bin ich hier benachteiligt, weil ich keinen verpackten Motor benutze?

Vielen Dank!

Tim Reddy
quelle

Antworten:

3

Jeder Motor, den Sie lernen, bringt Ihnen OpenGL ES tatsächlich besser bei, solange Sie sehen, was unter der Haube passiert. Sie können Ihren eigenen Motor rollen, aber seien Sie bereit, ihn viele, viele Male neu zu schreiben. Es ist besser, eine vorhandene zu lernen und dann zu entscheiden, ob Sie von Grund auf neu schreiben möchten.

Ich persönlich denke jedoch, dass das Speichern von Modellen .heine sehr grobe und hässliche Methode ist. Es funktioniert nur, wenn Sie nur wenige Modelle haben. Denken Sie nicht einmal an ein Spiel, bei dem Ressourcen benötigt werden (ergo haben Sie mehr als eine Grundmenge an Modellen / Texturen).

Kornel Kisielewicz
quelle
1

Nein, es hängt alles davon ab, was Sie lernen möchten.

Wenn Sie die Spielprogrammierung als Ganzes lernen möchten, aber mehr auf Logik ausgerichtet sind, verwenden Sie eine Spiel-Engine.

Wenn Sie OpenGL-ES lernen möchten, was Sie sagen, ist es viel sinnvoller, keine Spiel-Engine zu verwenden. Auf diese Weise können Sie sehen, was funktioniert und was nicht. Mit einer Spiel-Engine würden Sie vielleicht etwas wie 'AddModel ("Adresse") tun; RenderAll (); ' oder Wasauchimmer. Dies lehrt OpenGL nicht viel.

Und für das Modellformat halte ich es für sinnvoll, sie als OBJ-Datei zu behalten. Sie können sie mit einem Modellierungsprogramm bearbeiten und lernen, wie Sie Modelle universell und nicht nur auf dem iPhone laden.

Die kommunistische Ente
quelle
1

Die Verwendung von .h-Dateien für Ihr Modell ist wirklich nur für etwas sehr schnelles und schmutziges nützlich . Jedes Mal, wenn Sie etwas an Ihrem Modell ändern, müssen Sie es neu erstellen. Ich konnte sehen, dass es für etwas getan wurde, das entscheidend ist (sagen wir, wenn Sie ein 3D-Ladebild haben, das vorhanden sein muss, auch wenn das Laden fehlschlägt), aber abgesehen davon ist es sogar zu altmodisch für meinen Geschmack (und ich bin in den meisten Abteilungen ein Dinosaurier ).
Während ich einen Cube fest codierte, während ich mich mit einer Umgebung auseinandersetzte, wechselte ich zum Laden von Modellen, sobald ich meinen Prime-Renderer zum Laufen gebracht hatte, da es nur einen Bruchteil schwieriger ist, die Modelle zu lesen und dann die Daten zu indizieren, als dies der Fall wäre zu referenzieren hartcodierte Modelle.
Wenn Sie sie laden, können Sie die Engine auch viel besser wiederverwenden, denn wenn Sie Ihre Modelle fest codieren, folgt der Rest Ihres Codes wahrscheinlich derselben fest codierten Philosophie und ist nicht wiederverwendbar.

Kaj
quelle
0

OBJ-Modelle sind kein ideales Format für OpenGL, da sie separate Indizes für Positionen, Normalen und Texturkoordinaten verwenden. Wenn Sie OBJ mit OpenGL verwenden, müssen Sie die Daten beim Laden vorverarbeiten, um entweder neue Scheitelpunkte und Indizes zu erstellen, oder nicht indizierte Arrays zum Rendern verwenden.

Ein ähnlich einfach zu analysierendes, aber effizienteres Format ist IQM und sein textbasiertes Begleitformat IQE. IQM unterstützt auch grundlegende Skelettanimationen und Scheitelpunktfarben.

http://lee.fov120.com/iqm/

ccxvii
quelle