.obj import + material support
optimiert für Blender

Ich habe vor einiger Zeit einen eigenen 3D obj importer geschrieben, da die wenigen "vorhandenen" 3D importer die für den GM bis dato geschrieben wurden immerwieder zu problemen führten.
Man wusste nicht wirklich welche limitationen die skripte hatten und musste mit den export einstellungen rumspielen um das obj modell korrekt zu exportieren, und dann gab es auch noch eigenartige Fehler, bei denen die y-achse eines 3D modells gespiegelt wurde.
Das Script welches nach einigen researchen und einigen programmierstunden rauskam, hat auch noch Materialsupport gehabt. Der Script kann zwar nur Farben auslesen (Diffuse color), jedoch kann dieser (in kombination mit shadern) erweitert werden.
Bevor ihr das Skript verwendet, solltet ihr euch evtl anschauen wie man das modell korrekt aus blender exportiert:
Model export:
Der erste schritt wäre das Modell in Blender (wahlweise mit materials)
zu modellieren und es dann über die File>Export funktion als modell zu exportieren

Dort müssen nun bestimmte einstellungen vorgenommen werden:

Fettgedruckte einstellungen sind pflicht, unterstrichene nur optional
[ ] Selection only > nur wenn es mehrere objekte in der Scene gibt und ihr nur das selektierte exportieren wollt
[ ] Animation > leer lassen
[ ] Apply Modifiers > Falls ihr Modifiers nutzt, könnt ihr diese verwenden
[ ] Include Edges > nicht nötig
[ ] Smooth groups > nicht nötig
[ ] include normals > Falls ihr lichter verwenden wollt, könnt ihr ide normals mitexportieren.
[ ] Include UVs > Wenn ihr das Modell uv-unwrapt habt, so könnt ihr diese option einschalten
[ ] Write Materials > falls man die Materials mitexportieren möchte (Materials werden in ein eigenes File exportiert!)
[ ] Triangulate faces > WICHTIG! Ohne dieser einstellung funktioniert das Skript nicht!
[ ] Write nurbs > ignorieren
[ ] Polygroups > ignorieren
[ ] Objects as Obj Objects > ignorieren
[ ] Objects as OBJ Groups > ignorieren
[ ] Material Groups > ignorieren
[ ] Keep Vertex Order > ignorieren
Bei Game Maker und den obj-importern hatte man des öfteren das Problem, dass man nicht wusste wie das obj modell exportiert wird.
Es könnte sein dass die Achsen des Modells komplett durcheinander kommen. So konnte es damals schonmal passieren das das Modell im GM plätzlich um 90 grad rotiert in der Seitenlage importiert wird.
Daher müssen wir beim Export die achsen richtig definieren:
Forward: Y-Forward
Up: Z Up
Auf die Art und weise wird das OBJ modell so exportiert, dass die
XYZ Achsen in Blender denen in Game Maker entsprechen. > Das modell wird so wie es exportiert wurde, auch im GM importiert.
Nun, aus irgendeinem Grund (hat irgendetwas mit den forward und up-vektoren zu tun)
ist das ganze modell auf der y-achse gespiegelt:

Darum braucht ihr euch aber nicht zu kümmern.
Das Skript spiegelt beim Import die y-Achse automatisch.
Dass heisst: Orientiert euch beim Modellieren in Blender nach der X und Z-achse.
Die y-Achse ist gespiegelt, jedoch gleicht das der import skript automatisch wieder aus.
Verwendung des Skripts:
Wenn ihr ein neues 3D Modell laden wollt, so müsst ihr einfach nur volgenden Befehl ausführen:
Habt ihr die Material Files mitexportiert und wollt diese laden, so müsst ihr das mtl file im Skript
zusätzlich zum obj file angeben:
Wie ihr sehen könnt ist der 2te Parameter nur optional. Ihr könnt angben ob ihr Materials laden wollt oder nicht.
Zeichnen könnt ihr das Modell wie gewohn mit
Infos/Lizenz:
Das Skript ist zu 100% open-source.
Ihr dürft den Skript ohne jegliche Einschränkungen:
- verwenden
- editieren/erweitern
- weiterverteilen
Credits sind überhaupt nicht notwendig.
Funktioniert sowohl mit GM: Studio als auch mit GM 8.1.
Download befindet sich im Dateianhang mit dem entsprechenden example + einem Blender file zum testen des exports.
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von LEWA ()