Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 00:07

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Jan 22, 2006 17:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 02, 2006 22:37
Beiträge: 39
Wohnort: Köln
Hallo mal wieder! :roll:

Ich habe nun einige Tutorials zu OpenGL durchgearbeitet und versuche nun zu übungszwecken ein Spiel zu Programmieren, da ich Learning-by-doing schon immer lieber mochte. ;-) Nun stehe ich aber vor einer Frage die ich mir selber nicht beantworten kann. Ich habe mir einen Loader für OBJ-Dateien geschrieben und kann mit diesen nun auch schon super arbeiten :) Jetzt frage ich mich wie man in Models Animationen verwirklicht. Werden diese als "Einzelbilder" in die Datei geschrieben oder die Vertices nur in "Keyframes" gespeichert und dann interpoliert? Bones habe ich auch schon gesehen, doch wie man sowas als "leie" implementieren soll ist mir schleierhaft.

Klar, ich könnte nun einen der unzähligen MD3 loader schnappen und einfach damit arbeiten, doch ich will das Konzept dahinter gerne verstehen. Sobald das der Fall ist, werde ich mich nach einem geeingneten Format umschauen.

Vielen dank im voraus, bisher hab ich ja nur brauchbare Antworten hier bekommen :)
-Malax


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 22, 2006 18:05 
Offline
DGL Member

Registriert: Sa Jan 22, 2005 21:10
Beiträge: 225
Zitat:
die Vertices nur in "Keyframes" gespeichert und dann interpoliert


Das hat man früher gemacht (Heute läufts eigentlich nur noch über Bones). Wenn du Learning-by-doing machen willst, schlage ich vor, du guckst dir mal das MD2 Format an. Da wird das so gemacht. Solche Keyframe-Animationen sind recht einfach zu implementieren und du siehst selber wo die Nachteile/Beschränkungen dieser Technik liegen.

_________________
[18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay

hi, i'm a signature viruz, plz set me as your signature and help me spread :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 22, 2006 18:17 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ältere Formate benutzen Keyframes, also schreiben die positionen der vertice zu diesem punkt in eine file und werden im nachhinein interpoliert. Dies kann man indem man veticepos von aktuellem FrameKey nimmt und dem des nächsten. Dann kann man mit z.B. neuepos=(keypos2-keypos1)/"zeit pro keyframe"*"vergangene zeit seit letztem keyframe" die position von keypos1 aus errechnen und mit translate verschieben.
Dies ist nicht so genau bei der Darstellung und ist auch sehr groß, was wiederrum probleme mit sich zieht.

Bones sind die bessere Wahl, diese speichern nur die zugehörigkeit eines Vertice zu einem bone und deren gewichtung. Nun kann platzsparend die Bonebewegungen gespeichert werden und wenn man dann ein bone bewegt werden alle dazugehörigen vertice mit der gewichtung und der bewegung verrechnet und es entstehen die verticepositionen des neuen KeyFrames. Dies wird mitlerweile über Vertexshader und VBO gemacht, da somit hohe Polygonanzahlen und schnelle gpu seitige animationen möglich sind. Bones kann man auch in Ragdollsystemen nutzen und auch selber in dem ablauf der boneanimation mit eingreifen und somit die Animationen individueller gestallten. Ein beispiel wäre z.B. das laufen zu einem punkt der nicht genau in die schrittanimation festgelegten distance passt und eine unsaubere animation ergeben würde. Bones kann mann dann einfach beim letztem schritt in der laufweite scalieren und man hat eine saubere und echter wirkende animation. IK Systeme wie bei 3DS Max arbeiten auch über Bones und werden durch definieren von bewegungseinschränkungen wie z.B. eines Beines von 0° bis 170° nur drehbar ist, aufgrund der kniescheibe und des Kugelgelenkes.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 22, 2006 20:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 02, 2006 22:37
Beiträge: 39
Wohnort: Köln
Na, das ist doch mal ein guter Start für mich. Habe mir mal ein MD2 Tutorial ergoogelt und kurz überflogen, scheint brauchbar zu sein. (http://www.gamedev.net/reference/articl ... 53.asp#md2) Ich werde mich dann mal dran geben einen Loader zu schreiben. Welche Methode nutzt ihr in euren Projekten? Habt ihr ein eigenes Format entwickelt, oder greift ihr auch ein bestehendes zurück? Für mich wäre auch interesannt, welchen Editor ihr/euer Team verwendet um eben diese Models und Animationen zu erstellen. Leider habe ich unter Linux da nicht so die große Auswahl. (Blender ist klasse :D)

Wenn ich das Thema verstanden habe, könnte ich auch ein Tutorial dazu für DGL schreiben, doch leider kann ich Delphi nicht ;) Sollte es dazu kommen müsste dann jemand meinen C++ oder Javacode (Hab mich noch nicht konkret entschieden, welche Sprache ich nun nutze) umschreiben ;-)

-Malax


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 23, 2006 00:09 
Offline
DGL Member

Registriert: Di Jun 22, 2004 17:40
Beiträge: 51
Wohnort: Aachen
nunja.. viel erfahrung oder sogar nen team, davon bin ich noch weit entfernt ^^
aber ich hab gute erfahrungen mit dem milkshape-format gemacht.
da mein bruder in c4d recht fit is und man direkt vom c4d aus nach milkshape exportieren kann hat das ziemlich viele vorteile für mich ;D
zudem kann man mit dem milkshape recht einfach animationen erstellen.

ich muss jedoch zugeben, dass ich den loader dazu nich selber geschrieben habe. falls ich irgendwann mal ein funktionierendes spiel hinbekomme kann ich mich ja immer noch um den loader kümmern :P


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 23, 2006 12:34 
Offline
DGL Member

Registriert: Sa Jan 22, 2005 21:10
Beiträge: 225
Zitat:
Habt ihr ein eigenes Format entwickelt, oder greift ihr auch ein bestehendes zurück?

Ich hab die Erfahrung gemacht, dass es bei solchen Sachen wie Modellen oder Maps immer am besten ist, ein eigenes Format zu basteln, das genau auf die Dinge zugeschnitten ist, die man haben möchte.

Zitat:
Für mich wäre auch interesannt, welchen Editor ihr/euer Team verwendet um eben diese Models und Animationen zu erstellen.

Wir haben uns auch für Blender entschieden, oder zummindest Blender näher in Betracht gezogen. Zum Modelieren is es ganz cool und definitiv besser, als wenn man sich selber was schreibt. Im mom arbeite ich an meiner ersten Animation (bin noch beim Riggen) darum kann ich dazu noch nicht viel sagen.


Zitat:
neuepos=(keypos2-keypos1)/"zeit pro keyframe"*"vergangene zeit seit letztem keyframe"

+ keypos1

also kann mans auch schreiben als
Code:
  1.  
  2. f = "vergangene zeit seit letztem keyframe" / "zeit pro keyframe"
  3. neuepos = keypos1 * (1-f) + keypos2 * f
  4.  

_________________
[18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay

hi, i'm a signature viruz, plz set me as your signature and help me spread :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 23, 2006 13:01 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Zitat:
+ keypos1

Hab ich glatt übersehen :oops:

Ich nutze selber Blender, da es kostenlos ist und ein sehr hohen standard in sachen modelierung vorlegt.
Wie üblich hat keiner alles aber auf dem gebiet modelierung ist Blender doch stärker als andere wie z.B. 3ds Max.
Funktionen wie Pelt Mapping, was erst mit der R8 von Discreet hinzukam ist bei Blender schon mit einer staubschicht belegt.
Bones wiederum beherscht Max besser durch den support von meheren Animationssystemen.
Blender ist auch zum mappen sehr praktisch :) so kann man mit dem bakeTexture script was bei blender dabei ist auch lightmaps erstellen oder auf vertexbased lightning setzten und z.B. radiocity verwenden.
Was ich sehr toll an blender finde ist das die darstellung OpenGL ist und die Strukturen auch darauf optimiert sind. So kann man ziemlich leicht eigene exporter für eigene Formate schreiben. Jedem Objekt kann man ausserdem dynamisch informationen hinzufügen und auch diese mit abspeichern.
So kann man Kommentare, Anweisungen(Entities) oder sonstwas mitliefern.

Ich rate zum herrantasten ein existierendes Format zu bestaunen und dann ein eigenes zu verwenden.
Da man oft mehr oder weniger als andere Personen will die ein Format erstellt haben.
Ausserdem kann man sich so ärger mit Lizensen sparen.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 23, 2006 17:22 
Offline
DGL Member

Registriert: Sa Jan 22, 2005 21:10
Beiträge: 225
Zitat:
Jedem Objekt kann man ausserdem dynamisch informationen hinzufügen und auch diese mit abspeichern.


Hey cool, genau sowas hab ich gesucht. Wie geht das? Oder geht das nur aus nem Python-Script heraus?

_________________
[18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay

hi, i'm a signature viruz, plz set me as your signature and help me spread :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 23, 2006 18:45 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Das geht nicht nur in Blender ;) Sondern auch in 3ds Max (Zusatzinformationen). Nur gibt es für max bislang noch afaik keinen vernünftigen Importer, mit dem man dann die exportierten Files laden kann. Es ist aber gerade einer im Werden. Einfach mal hier im Projektforum schauen ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]