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

Aktuelle Zeit: Mi Mai 15, 2024 00:25

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Tentakel Animation
BeitragVerfasst: Mi Jun 19, 2013 12:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Nov 30, 2011 21:41
Beiträge: 136
Wohnort: Bad Vilbel
Programmiersprache: Delphi 7
Hallo allerseits,

Ich will einem Monster in meinem Spiel Tentakel verpassen und da bin ich auf ein Problem gestoßen und bräuchte eure Hilfe, bei der Umsetzung, was wäre eurer Meinung nach am angebrachtesten zur Umsetzung von einer Tentakel animation, wichtig dabei ist das die Tentakel dabei dynamisch sein sollen, also nicht einfach nur eine vorgefertigte Blender Animation.

Folgende Sachen kam mir schon in den Sinn:
1. Ein Tentakel Element in ein Vbo packen und dann mehrere von diesen mit passenden matrizen rendern.
Vorteil: relativ einfach umzusetzen.
Nachteil: wahrscheinlich recht hässlich.

2. Für jedes Tentakel verschieden Positionen in mehreren vbos speichern und dann im Vertexshader eine Mischung (sowas wie ein Durchschnitt) dieser Vertexdaten nehmen und dann rendern.
Vorteil: wenig Datenverbrauch
Nachteil: ist das überhaupt möglich, den "Durchschnitt" von 2 Vertices zu nutzen?

3. Vbo jedes mal updaten.
Vorteil: sehr schön.
Nachteil: viel traffic mit der graka.

4. Modell riggen und dynamisch animieren.
Vorteil: schön, performant
Nachteil: ich kann weder modelle riggen, noch weis ich wie man das in opengl umsetzt, kennt jemand da ein gutes tutorial? (kann auch english sein)

Danke schonmal. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tentakel Animation
BeitragVerfasst: Sa Jun 22, 2013 22:09 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Knittel hat geschrieben:
...wichtig dabei ist das die Tentakel dabei dynamisch sein sollen, also nicht einfach nur eine vorgefertigte Blender Animation.
Ich habe mit Blender noch keine Animationen erstellt, aber ich bin ziemlich sicher, dass Blender auch richtiges Vertex-Skinning kann.

Knittel hat geschrieben:
1. Ein Tentakel Element in ein Vbo packen und dann mehrere von diesen mit passenden matrizen rendern.
Vorteil: relativ einfach umzusetzen.
Nachteil: wahrscheinlich recht hässlich.
Das kommt darauf an, wie die Grafik Deines Spiels ist. Wenn es zu Deinem Spiel gut dazupasst, kann das auch gut aussehen. Wenn man in ein Aquarellbild ein fotorealistisches Detail einfügt, sieht das grässlich aus, obwohl das Detail an sich nicht hässlich ist; es kommt eben immer auf den Kontext an.

Die Methode an sich sollte funktionieren.

Knittel hat geschrieben:
2. Für jedes Tentakel verschieden Positionen in mehreren vbos speichern und dann im Vertexshader eine Mischung (sowas wie ein Durchschnitt) dieser Vertexdaten nehmen und dann rendern.
Vorteil: wenig Datenverbrauch
Nachteil: ist das überhaupt möglich, den "Durchschnitt" von 2 Vertices zu nutzen?
So etwas habe ich zwar noch nicht gehört, aber rein grundsätzlich müsste das gehen: der Durchschnitt von zwei oder mehreren Positions-Vektoren funktioniert sogar sehr gut. Der Durchschnitt aller Positions-Vektoren einer Kugel sollte theoretisch den Kugelmittelpunkt ergeben. Übrigens: "wenig Datenverbrauch" ist hier nicht richtig, im Gegenteil, dabei hättest Du sogar ziemlich viele Daten in Deinem VBO.

Knittel hat geschrieben:
3. Vbo jedes mal updaten.
Vorteil: sehr schön.
Nachteil: viel traffic mit der graka.
Du meinst, die Matrizen im RAM erzeugen, damit ein transformiertes Modell erzeugen und dieses dann auf die Grafikkarte laden. Das geht auch, ist aber langsamer, als es per Shader zu machen. Denn hier musst Du das Modell nur einmal auf die Grafikkarte laden, aber ab dann nur mehr die Animationsdaten.


Knittel hat geschrieben:
4. Modell riggen und dynamisch animieren.
Vorteil: schön, performant
Nachteil: ich kann weder modelle riggen, noch weis ich wie man das in opengl umsetzt, kennt jemand da ein gutes tutorial? (kann auch english sein)
Also, Tutorials gibt es dazu wie Sand am Meer. Zum Beispiel: http://www.opengl.org/wiki/Skeletal_Animation. Unter "Modell riggen" verstehe ich "Vertex-skinning". Das ist die erweiterte Methode von "Bone Animation". Sowohl Vertex Skinning als auch Bone-Animation kann man unter den Begriff "Skeletale Animation" einreihen.

Die einfachere Methode "Bone Animation" - die eine Roboter-hafte Bewegung erzeugt - kann man sowohl im RAM als auch im GRAM machen, wobei sie auf der Grafikkarte natürlich schneller ist, denn da bastelst Du im RAM bloss die Matrizen und schickst sie dann an die Grafikkarte in den Shader als "Uniform"-Variable (siehe oben). Wenn Du die Transformation im RAM selbermachen willst, wäre das Deine obige Methode Nr.3.

Auf den Punkt gebracht - denn ich nehme jetzt mal an, das möchtest Du wissen - erzeugt man bei der Bone-Animation im RAM einen Baum von Matrizen (für jedes Gelenk eine) und wendet sie dann auf die jeweiligen Gelenke an, indem man alle Vertices mit ihrer jeweiligen Matrix multipliziert, etweder auch im RAM oder im Shader. Der Vollständigkeit halber sollte man erwähnen, dass auch die Normale entsprechend transformiert werden muss.

Das ist zwar nicht viel Arbeit, um es zu implementieren (in Wirklichkeit handelt es sich um das Erzeugen der Matrizen, das Raufladen in den GRAM und ein paar Zeilen im Shader :wink:), aber es dauert doch eine Zeit, weil man das Ganze auch behirnen muss. Für einfaches Copy & Paste sehe ich schwarz.

Das Vertex-Skinning geht noch einen Schritt weiter und verwendet anstatt Matrizen Quaternionen, weil für jeden Vertex (manchmal) eine Interpolation mit mehreren Matrizen durchgeführt werden müsste, sich aber die normalen Transformationsmatrizen nicht interpolieren lassen, Quaternionen aber schon.

Beim Vertex-Skinning schickt man daher keinen Baum von Matrizen, sondern einen Baum von Quaternionen an die Grafikkarte. Man sollte dazu sagen, dass Quaternionen nur Rotationen können, keine Verschiebungen.

Viele Grüße,
Traude


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 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.040s | 17 Queries | GZIP : On ]