Schlagwort-Archive: GameEngine

Medieval Character + IdleAni

Wilhelm der Burgherr

Kleine, kurze Zwischenprojekte machen mir immer wieder Spaß. Man hat nach ein, zwei Tagen schon ein brauchbares Ergebnis und kann sich mal wieder mit einer 3D-Pipeline auseinandersetzen, quasi um sein Wissen mal wieder aufzufrischen.

Hier entstand nun in zwei Abenden ein kompletter Charakter mit ersten Animationen. Ziel des Ganzen war Alles soweit auszuarbeiten das ein .X-Modell exportiert wird das dann in DarkBasicPro weiter verwendet werden kann. Das .X-Format ist ja ein Urgestein der 3D Spiele und birgt so einige Tücken, ich hatte schon alle möglichen Fehler, von falsch exportierten Mappings bis hin zu falschen interpretationen der Animationen und auch so richtig zerschossene Modelle. Die magische Formel wie funktioniert habe ich auch nicht, aber wenn man sehr sauber arbeitet und Alles als Meshobjekt hält funktioniert es irgendwie.

Mein Character sollte eine interessante Mischung aus realem Menschen und Comicfigur sein, als Vorlage dienten mir die Figuren aus “Monkey Island 3″ mit ihren langen dünnen Beinen. Also wurden kurzerhand ein paar Skizzen gemacht und angefangen einen sympatischen alten Burgeherren zu modellieren. Schlussendlich brauchte ich ca. 2.800 Polygone, was ziehmlich wenig ist und mit Sicherheit flüssig in der Gameengine läuft.

Wenn man einmal soweit ist, kann man das Objekt duplizieren und beginnen das HighRes-Modell daraus zu entwickeln. Ich entschied mich, dass diesmal auch gleich mit in Max zu machen, da einerseits recht viele Cutins und Zusatzobjekte das HighRes ausmachen und 3dStudio ja auch ganz gute Skulptingtools bereitstellt. Oben seht Ihr ja die zusätzlichen Falten, Nähte und Knöpfe – das Modell hat in dieser Form rund 550.000 Polygone.

Realtime Modell und Shader

Nur ein hübsches Modell allein macht ja noch keinen Gamecharacter. Und so ist es wichtigt das ein sauberes Mapping die Texturen zuweist, die Details des HighRes in eine NormalMap gebaked werden und Effekte wie Ambient Occlusion oder Global Illumination vorberechnet werden und dann mit in die Textur integriert werden.

Für den Shader bietet es sich an ein DirectX Material zu erstellen, dass dann als .fx oder . hlsl exportiert wird und als solche auch gleich wieder in der GameEnginge geladen werden kann. 3ds Max bietet hervoragende Möglichkeiten diese Shader (ohne große Programmierkenntnisse) zu erstellen und kann auch Standartmaterialien sauber umwandeln. Der große Vorteil der Shadererstellung in Max ist, dass man dort im Viewport schon eine sehr genaue Dartellung des Materials erhält, die mit der in der Engine fast 1 zu 1 überein stimmt.


Unwrapping and Texturing

Ich will hier kurz nochmal auf die Texturen eingehen. Also das Unwrapping ist eigentlich per Hand in Max erstellt, Ein paar mal Peltmapping und hier und da relaxen, alles schön nebeneinander, kein Ding. Die Difuse-Textur war schon etwas meh Arbeit, sie ist ganz klassisch in Photoshop per Hand gepaintet und wird durch die berechneten AO- und GI-Maps noch nachbeleuchtet. Die NormalMap entsteht über einen Projection-Modifier und wurde auch in Photoshop noch etwas verfeinert.


Idle Animation’s

Letzte große Hürde auf dem Weg zu DrakBasic sind die Animationen. Dafür muss erstmal ein RIG her und mit einem Biped gehts schön schnell. Dieses wird dann auf den Character geskinnt und bekommt noch ein paar Zusatzbones.

Für den Anfang und fürs Testen reichen erstmal ein paar loopfähige Idle Animationen wie “In der Gegend rumstehn” und “Laufen”. Für jede Animation wird eine eigenständige .X-File erzeugt die dann in der Engine angespochen, abgespielt und überblendet werden.

Evilor – Edit to Quest

arena_05

Nun wer hätte gedacht das hier nochmal irgendwas passiert, aber da ich für was ganz anderes mal eine Lauffähige Demo brauchte hab ich die alten Modelle nochmal rausgeholt …

Alles wurde nochmal neu exportiert und dann in Quest geladen, alle Texturen wurden in die richtige Größe gebracht und als .dds neu verlinkt … dann noch ein paar Dinge um eine passende Cam zu haben und nach nur einem Wochenende stand die ganze Sache schon ganz gut.

Wie man sieht bin ich nun ziehmlich genau so weit in Quest, wie ich damals in Virtools gekommen bin, nur das nun schon die erste Kolisionsabfrage funktioniert. Und im Insgesamten erscheint mir das ganze Flüssiger. Probleme hab ich irgendwie noch mit dem TexturLightning, aber es kann ja nicht alles auf anhieb funktionieren.

arena_06

Cool ist auch der Oceanshader der mit Quest mitgeliefert wird …

Spaceship – Fireblade

MartialSpace_01

Kein kleiner Spaceshooter ohne ein ensprechendes Raumschiff für den Spieler … Also nichts wie rann und ne Kleinigkeit Modelliert. Es ist trotz zwei kurzer Entwürfe irgendwie eine Mischung aus einer Viper (Battlestar Galactica) und einen Trabant geworden, aber doch recht ansehnlich …

Nach der Modellierung des LowPoly-Modells musste ich leider wieder endloses Unwrapen ertragen. Irgendwie kamen trotz Symetry-Funktion immernoch X Flächen zusammen die sauber freigestellt werden wollten und so hab ich fast drei Abende gebraucht, jedoch ist es danach wiederum eine Freude an der Textur zu arbeiten und so hab ich auch mal wieder mein Wacom Tablet genutzt. Um jedoch mal irgendwo Zeit zu sparen ist im Moment nur erstmal das Gröbste gemacht, die Feinheiten folgen dann irgendwann wenn ich ein Highres hab und eine ordenliche Normalmap zur Verfügung steht. Bis jetzt schummle ich noch mit einer in Photoshop über das Nvidia-Plugin erstellten Normal.

HLSL-Shader

(HLSL = High-Level-Shader-Language)

Nun zum ersten Neuerungen gegen über anderen Tests: In Echtzeitumgebungen ist es ja bereits Standart geworden die Darstellung und Performance durch HLSL-Shader zu optimieren. Das bedeutet natürlich das man sich in einen komplett neuen Bereich wagen muss und mir selbst lag Programieren ja noch nie so ganz. Trotzdem gibst kein drumrum und die neuen Möglichkeiten scheinen Grenzenlos.

Zum Editieren benutze ich den von Nvidia entwickelten FX-Composer. Dieses Programm arbeitet wirklich Spitze in Zusammenarbeit mit 3D Studio, man editiert den Shader im Composer und nutzt die Viewportanzeige von Max. Natürlich fängt man mit einem Vorgefertigtem Shader an, ich habe einen shönen gefunden der bereits Diffuse-, Ambient- und Specularcolor unterstützt, sowie Diffuse- und Normalmap als Texturen zulässt. Diesen Shader habe ich nun schon soweit modifiziert das er 3 Lichtquellen unterstützt, welche alle korekt auf die Normal wirken (später werde ich diese Slots für DefaultLight, Antrieb und Sonne nutzen). Im letzten kleinen Screenshot seht ihr wie dieser 3-Licht-Shader mit den Texturen in Echtzeit aussieht … fürs erste Mal doch gar nicht so übel oder …

Kleinigkeit noch: um noch mehr der Echtzeit zu huldigen sind hier alle verwendeten Texturen als .dds eingebunden, zur Erstellung gibts ebenfals ein kleines dds-Plugin von Nvidia.

Planet Erde

MartialSpace_01

An irgendeinem kalten Winternachmittag gings los und es entstand kurzer Hand diese erste Version unseres Planeten, ich weiß an zwei Kugeln und ein wenig Textur ist nicht so viel dran, aber ein paar Feinheiten gabs da schon:

Die Normalmap wurde über ein Highresmodell erstellt, welches per Höhenmap displaced wurde. Dann wäre da noch die Wolkendecke die eine attachte Kugel ist welche ein zweites Material mit Alphakanal verwendet. Das ist wirklich nicht so die Welt in Max, aber das Ganze dann in Quest auf ein ähnlich ansprechendes Level zu bringen ist für nen Anfänger schon ein bischen Beschäftigungstherapie … wie ihr seht läust erstmal alles und wenn mich die Lust mal wieder überkommt kann ich hier noch gut eine LOD-Funktion (Level of Detail) mit einbauen.

Evilor – Blood Mosquito

blutmücke_gif_01

Die Blutmücke

Evilors Playground ist ein nettes kleines Zwischenprojekt und eine kleine Fingerübung, die aber noch große Potenziale hat. Der Grundgedanke liegt in der Echtzeitumsetzung der DnD-Regeln in einer ähnlichen Art wie jetzt DnD 4 wird. Hauptzächlich geht es aber um die weitere Auseinandersetzung mit Quest3D, so das man erstmalkleinere Probleme lösen lernt.

blutmücke_02

einfache Low-Poly Geomtrie

blutmücke_03

selbsterstelltes RIG

blutmücke_04

HighRes in Zbrush 3.0

blutmücke_05

Maps für Quest3D