
Dieses Tutorial basiert auf Moolts sehr informativem 3d - Modelle Tutorial und schließt dort an. Fortgeschrittene Game Maker Kenntnisse werden vorausgesetzt. Ebenso einige Erfahrungen mit dem 3D Modus im Game Maker. Blender Kenntnisse sind auch von Vorteil. Das Tutorial wird zweigeteilt, zum einen kurze Grundlagen in Blender zu Animationen und dessen Export, danach die importierung in den Game Maker.
Ich verwende die folgenden Programme:
- Blender 2.69
- Wavefront Obj Exporter (standardmäßig in Blender installiert)
- Game Maker 8 Pro (andere Versionen, die den 3D Modus unterstützen, funktionieren möglicherweise ebenfalls)
Ansonsten die example-simple.zip aus Moolts 3d für Anfänger - Modelle Tutorial.
Kapitel 1: Blender Animationen Grundlagen
Auf dieser Abbildung seht ihr das Animationsfenster in Blender
- Rechts ist die vertraute 3D Ansicht, dort seht ihr euer Modell und die sog. Bones, die eurem Objekt zugewiesen sind.
- Links findet ihr ein zweigeteiltes Fenster. Oben seht ihr den Action Editor. Dort könnt ihr kleine "Unteranimationen" erstellen. Man sieht die einzelnen Keyframes, die den Bones während eines bestimmten Zeitpunkts zugewiesen sind. Das untere Menü ist derzeit nicht wichtig. Nur soviel: man kann viele dieser "Unteranimationen" dort zusammenführen
- Unten ist die normale Timeline, dort können viele der kleinen "Unteranimationen" untergebracht werden. Solltet ihr gerade eine "Unteranimation" bearbeiten, seht ihr dort die selben Keyframes wie im Action Editor.
Um in diese Ansicht zu kommen, klickt ihr auf das Screen-Layout Dropdown Auswahlmenü und wählt "Animation" aus:
Nun habt ihr das Animationslayout geöffnet. Nehmen wir also an, ihr habt euer Objekt fertig modelliert und wollt es nun animieren.
Es sind nun zwei Schritte zu vollenden, um das zu erreichen:
- riggen - Eurem Modell die sog. Bones zuweisen.
- animieren - das Modell animieren
Schritt 1: Riggen
Ihr drückt nun im 3D-Fenster die Leertaste, dadurch öffnet sich ein Auswahlmenü:
Dort wählt ihr: Armature -> Single Bone
nun habt ihr eine Single Bone erstellt. Diese rückt ihr zurecht, in etwa so, dass sie dem "Hauptkörper" entspricht.
Ich bin nun in die Wireframeansicht gewechselt mittels einem Druck auf "Z", sodass ich die Körperteile besser sehe
Nun in den Edit-Modus gewechselt, könnt ihr diese Bone duplizieren mittels "Shift und D" und an den richtigen stellen einsetzen.
Bones, können auch direkt mittels "E" aus einer anderen herausgezogen werden. solltet ihr soweit sein, könnten eure Bones so aussehen:
Das ist nun eine sog. Armature. Sie besteht aus vielen kleinen Bones.
um die Armature und somit die einzelnen Bones an euer Modell zu binden, verwenden wir das "Parenting".
Wichtig ist die folgende Reihenfolge!:
- Auswahl des Modells
- Auswahl der Armature
- Strg und P Drücken
- Armature Deform -> With Automatic Weights auswählen

Ihr könnt bereits probieren, eure Bones zu bewegen, dazu geht ihr einfach in den "Pose Mode", während ihr die Armature ausgewählt habt:

und nun könnt ihr die Bones rotieren und bewegen, während das Modell ihnen folgt.
ihr merkt sicher, dass die Bones nicht ganz mit den Körperteilen des Modells übereinstimmen. Das macht nichts, das ist schon der Finale Teil im Riggen.
Die Armature hat für jeden Bone eine Vertex-Gruppe im Modell erstellt. Diese Vertex-Gruppe beeinhaltet einige Polygone, die dem Bone zugeordnet sind.
Als erstes geht ihr in das Armature Menü und nehmt folgende Einstellungen vor:

Den Namen der Bone anzuzeigen ist wichtig beim zuordnen.
xray ist notwendig, damit ihr alle Bones seht, auch welche die vom Objekt überdeckt sind.
Euer Objekt müsst ihr nun auswählen, in den Edit Modus wechseln und zu den Vertex-Gruppen Einstellungen Wechseln:

ihr seht nun die Vertex Gruppen, die Blender für euch angelegt hat. Jede Vertex-Gruppe ist nach dem gleichnamigen Bone benannt.
nun müsst ihr euch an die mühselige Arbeit machen, die Gruppen auszuwählen, mittels dem Assign Knopf Polygone zuweisen, oder mittels remove überflüssige entfernen.

Das wars! das geriggte Modell ist fertig :)
Schritt 2: Animieren
ihr erstellt einfach "Actions", diese könnt ihr mittels Auswahl des Action Editors machen:

nun einfach weiter mittels "New" eine neue Action erstellen.
Benennt diese Action recht aussagekräftig und grenzt die Timeline ein. (ansonsten würde der Obj exporter 260 Modelle erstellen wollen)

nun kommt auch schon das Spaßige: Keyframes erstellen

Mittels Tastendruck auf "I" während ihr ein Bone im Posemode ausgewählt habt, könnt ihr einen Keyframe
erstellen. Wir wählen "LocRotScale" aus. Damit ist ein Keyframe an dieser stelle für Location, Rotation und Scale gesetzt.
erstellt nun mehrere und somit eine Animation

nun einfach weiter mittels "New" eine neue Action erstellen.
Benennt diese Action recht aussagekräftig und grenzt die Timeline ein. (ansonsten würde der Obj exporter 260 Modelle erstellen wollen)

nun kommt auch schon das Spaßige: Keyframes erstellen

Mittels Tastendruck auf "I" während ihr ein Bone im Posemode ausgewählt habt, könnt ihr einen Keyframe
erstellen. Wir wählen "LocRotScale" aus. Damit ist ein Keyframe an dieser stelle für Location, Rotation und Scale gesetzt.
erstellt nun mehrere und somit eine Animation

Schritt 3: Exportieren
Eine Animation habt ihr nun fertiggestellt. Exportieren wir sie mittels dem Wavefront obj exporter:
File -> Export -> Wavefront .Obj

im darauffolgenden Fenster, nicht sofort auf speichern drücken, sondern die etwas versteckten Optionen freiscrollen:

beim abspeichern erstellt Blender für jeden Frame (in meinem Fall 19) eine .obj und eine .mtl Datei.
Damit wäre der Blenderteil geschafft. Wir gehen über in den Game Maker und Moolts example-simple.zip aus Moolts 3d für Anfänger - Modelle Tutorial.
Kapitel 2: Game Maker Animationen laden/abspielen
Wir erstellen ein Array mit dem Inhalt der einzelnen Frames. Generell mache ich das mittels for(i=0; i<dateienanzahl; i+=1) array = createFromObj("dateiname"+String(i));
in diesem Fall ist der Array hardcoded:

GML-Quellcode
- model_char[0]=createFromObj('models\character\char_000001.obj')
- model_char[1]=createFromObj('models\character\char_000002.obj')
- model_char[2]=createFromObj('models\character\char_000003.obj')
- model_char[3]=createFromObj('models\character\char_000004.obj')
- model_char[4]=createFromObj('models\character\char_000005.obj')
- model_char[5]=createFromObj('models\character\char_000006.obj')
- model_char[6]=createFromObj('models\character\char_000007.obj')
- model_char[7]=createFromObj('models\character\char_000008.obj')
- model_char[8]=createFromObj('models\character\char_000009.obj')
- model_char[9]=createFromObj('models\character\char_000010.obj')
- model_char[10]=createFromObj('models\character\char_000011.obj')
- model_char[11]=createFromObj('models\character\char_000012.obj')
- model_char[12]=createFromObj('models\character\char_000013.obj')
- model_char[13]=createFromObj('models\character\char_000014.obj')
- model_char[14]=createFromObj('models\character\char_000015.obj')
- model_char[15]=createFromObj('models\character\char_000016.obj')
- model_char[16]=createFromObj('models\character\char_000017.obj')
- model_char[17]=createFromObj('models\character\char_000018.obj')
- model_char[18]=createFromObj('models\character\char_000019.obj')
- frame=0;
- z=0;
Frame ist das derzeit angezeigte Frame.

Diese simple Abfrage, spielt den Array[0-18] durch, das sind 19 Frames. Am Ende springt es wieder zum 0. Frame
dann nurnoch das Draw-Event anpassen:

somit habt ihr eure Animation fertig im Game Maker.
Viel Spaß!
Nachtrag:
- Leider ist dies nicht die effizienteste Lösung, passt zudem auf, dass ihr nicht bei jedem Objekt gleiche Animationen mehrmals lädt.
- Es gibt in Blender ebenso die Möglichkeit mittels "Weight Paint" die Bones zuzuweisen. Meiner Meinung geht das aber nicht so präzise.
Moolt's Example für Animationen angepasst:
Externer Link (wikisend.com)
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von domis4 ()