Tutorial für Animationen unter Direct3D gesucht
-
Kennt jemand ein gutes Tutorial oder minimalistisches Sample für Animationen in Direct3D mit x-Files? Ich habe gut und gerne stundenlang das Internet durchforstet und was mich am ehesten bis jetzt angesprochen hat, war http://www.gamedev.net/reference/articles/article2079.asp
Das SimpleAnimation-Sample im SDK ist auch hoffnungslos überladen, hunderte Zeilen Code, um eine Person laufen zu sehen. Wahrscheinlich ist das Thema nicht so einfach, wie ich es gerne hätte, aber die haben dort ein riesiges Sample-Framework, was jetzt für mich zum Lernen einfach unpassend ist.
Ich habe auch gelesen, dass es anscheinend nicht unüblich ist, ein eigenes Model-Format zu entwickeln. Wie man Keyframe-Animationen vom Prinzip her implementiert, ist mir zwar vollkommen klar, aber ich habe in meinem Leben auch noch was vor, sprich ich habe nicht vor einen Loader zu schreiben und vielleicht noch Plugins für 3D-Modeller. AFAIK sind x-File Animationen die einzigen, die man ohne Aufwand reinladen und verwenden kann, aber ich finde dazu nicht sehr viel. Die meisten Tutorials gehen auf Animationen nicht ein.
-
http://www.toymaker.info/Games/html/load_x_hierarchy.html
Oder schau dir das an( nicht DX aber sehr leicht zu integrieren )
-
Falls Du eine fertige Klasse haben willst:
http://www.flipcode.com/articles/article_dx9skinmeshmod.shtml
Hab ich auch benutzt, kann man in < 1h einbauen. Dass es genau das macht was man haben will kann aber in Zusatzarbeit ausarten, so einfach ist das Thema nunmal nicht.
PS: Verwendest Du Punkt- bzw Spotlichter oder nur Direktonale Quellen wie zB Sonnenlicht?
-
malignate schrieb:
http://www.toymaker.info/Games/html/load_x_hierarchy.html
Oder schau dir das an( nicht DX aber sehr leicht zu integrieren )
Danke, das werde ich mehr sehr bald durchlesen. Wer noch solche Links hat, bitte alle her zu mir.
Eine fertige Lib möchte ich nicht verwenden.0x00000001 schrieb:
Falls Du eine fertige Klasse haben willst:
http://www.flipcode.com/articles/article_dx9skinmeshmod.shtml
Hab ich auch benutzt, kann man in < 1h einbauen. Dass es genau das macht was man haben will kann aber in Zusatzarbeit ausarten, so einfach ist das Thema nunmal nicht.
PS: Verwendest Du Punkt- bzw Spotlichter oder nur Direktonale Quellen wie zB Sonnenlicht?
Ich möchte keine fertige Klasse verwenden, aber mal sehen, was ich davon abschaun kann. Ich benutze direktionales und Punktlicht. Wieso ist das wichtig?
-
Wieso willst du keine Libs nehmen?
-
Ich will ja gerade herausfinden, wie man das mit Direct3D selber macht. Zeit habe ich auch mitgebracht, noch etwa 1,5 Monate...
-
Na dann werd ich Dich am Ende der Ferien mal kontakten um zu fragen wie es mit den Punktlichtern gelaufen ist.
Hab meine Skinmeshes erstmal auf Eis gelegt weil ich es nicht geschafft hatte die Weltkoordinate der Vertizen zu berechnen, was für Punktlichter wichtig ist wegen der Abstandsberechnung. In meinem Beispiel haben die immer die homogene Koordinate auf 1 gesetzt, sonst funktionierts nicht richtig.
Naja probier Du das auch mal, ich komm drauf zurück
-
Animationen haben doch garnichts mit Licht zu tun? Wie kommst du denn auf Punktlichter oder ist das ne interne Geschichte unter euch

-
Naja für die Beleuchtung sind primär der Einfallswinkel des Lichts und die Entfernung zur Lichtquelle wichtig. Und wenn das Mesh animiert ist dann ändert sich das ständig, und zwar für jeden Vertex.
Bei einem Punktlicht braucht man eben die endgültige Position der Vertizen in Weltkoordinaten (in denen auch die Lichtposition gegeben ist ), um Abstand und Winkel berechnen zu können.
-
Sag mal gibts von deiner Engine schon ne lauffähige Alpha, die Screenshots sehen ja vielversprechend aus

-
0x00000001 schrieb:
Naja für die Beleuchtung sind primär der Einfallswinkel des Lichts und die Entfernung zur Lichtquelle wichtig. Und wenn das Mesh animiert ist dann ändert sich das ständig, und zwar für jeden Vertex.
Bei einem Punktlicht braucht man eben die endgültige Position der Vertizen in Weltkoordinaten (in denen auch die Lichtposition gegeben ist ), um Abstand und Winkel berechnen zu können.Berechnest du die Ausleuchtung selbst? Egal, ich kümmer mich jetzt mal um die Animation und dann sehe ich mir das nochmal extra mit dem Punktlicht an. Mir fällt jetzt nicht so wirklich ein Grund ein, warum das animiert nicht mehr gehen soll, aber das werden wir ja sehen...
-
0x00000001 schrieb:
Hab meine Skinmeshes erstmal auf Eis gelegt weil ich es nicht geschafft hatte die Weltkoordinate der Vertizen zu berechnen, was für Punktlichter wichtig ist wegen der Abstandsberechnung.
du schaffst es ein mesh zu skinnen aber nicht die weltkoordinate auszurechnen?
ich hab mir nen ferrari gebaut, aber den tanktdeckel nicht gefunden...
du machst mich ganz confused!
rapso->greets();
-
User-- schrieb:
Sag mal gibts von deiner Engine schon ne lauffähige Alpha, die Screenshots sehen ja vielversprechend aus

Ja hab mal eine gemacht, aber nie veröffentlicht weil es vom künstlerischen her nicht so toll war
Ich denk nach den Ferien mach ich mich mal auf die Suche nach Grafikern.rapso schrieb:
du schaffst es ein mesh zu skinnen aber nicht die weltkoordinate auszurechnen?
Ja es ist lächerlich, aber ich muss auch sagen dass ich recht schnell aufgegeben habe. Muss nochmal genauer analysieren was da los ist.
// Aus DX Beispiel o.vPosition = mul( float4(vPosition.xyz, 1.0f), mViewProj );Hier setzen die die w-Komponente der Position gleich 1. Damit ist nach der Projektion alles an seinem richtigen Platz, nur die Beleuchtung ist total verspult weil die Weltkoordinate vorher anscheinden nicht gestimmt hat. Bei direktlichtern macht das irgendwie nichts aus da dort die genaue Position des Vertex unerheblich ist.
@Forum: Hat jemand geskinnte x-meshes mit Positionslichtern am laufen?
-
0x00000001 schrieb:
// Aus DX Beispiel o.vPosition = mul( float4(vPosition.xyz, 1.0f), mViewProj );Hier setzen die die w-Komponente der Position gleich 1. Damit ist nach der Projektion alles an seinem richtigen Platz, nur die Beleuchtung ist total verspult weil die Weltkoordinate vorher anscheinden nicht gestimmt hat. Bei direktlichtern macht das irgendwie nichts aus da dort die genaue Position des Vertex unerheblich ist.
die position der lichtquelle muss w auch 1 haben, wenn du 4d-vectoren voneinander abziehst, so erhällst du einen richtungsvector (der hat w natürlich 0) und dann sollten alle berechnungen problemlos gehen.
rapso->greets();
-
irrlicht ist auch ein gutes engine
-
rapso schrieb:
die position der lichtquelle muss w auch 1 haben, wenn du 4d-vectoren voneinander abziehst, so erhällst du einen richtungsvector (der hat w natürlich 0) und dann sollten alle berechnungen problemlos gehen.
Na so einfach ist es nun auch wieder nicht, wäre ja noch schöner wenn es DARAN gelegen hätte
Ich benutze nur die ersten 3 komponenten der Positionen, die 4te ist auch sinnlos bei Abstandsberechnungen.
Naja hab schon ganz andere Schwierigkeiten überwunden, ich denke wenn ich mir paar Stunden Zeit dafür nehme müsste das Problem zu beheben sein.
-
@Forum: Hat jemand geskinnte x-meshes mit Positionslichtern am laufen?
nein, aber .ms3d files mit eigenem loader, punktlichtern und normalmapping

hat allerdings auch noch ein paar dinge die einzubauen sind...
-
So, die Animationen funktionieren jetzt. Danke für die hilfreichen Links.