Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Sören JLI Master Trainee

Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 26.09.2004, 01:09 Titel: Interpolation von Vertices + BufferObjects |
|
|
Hi,
also ich hab folgendes Problem: Ich lade mir ein Model aus einer Datei dass auf Keyframes basiert(also keine Bones). Da dieses eben auf Keyframes basieren, sind natürlich nicht für jeden Frame alle Vertices gespeichert sondern nur jeden zweiten, dritten, ..., n-ten. Warum sollte klar sein. Nun will ich aber keine abgehackten Animationen sondern flüssige. Also will ich die Vertices Interpolieren. Ich habe meine ganze Geometrie im VRAM, da zur Laufzeit rein und rauszuschreiben wäre natürlich eine schlechte Lösung. Eine andere Lösung wäre das ganze beim Laden zu interpolieren und alles im Vorraus zu berechnen, da so ein Model idR aber über ein MB ausmacht und so eine Vielfache Menge an Speicher anfallen würde(mit 10 Modellen hat man dann locker mal über 50MB dicht gemauert), halte ich das auch nicht für das richtige. Dynamisch zu rendern ist mir auch zu lahm. Gibt es da überhaupt eine (schnelle) Lösung? Vertexprograms wären natürlich gut(und schnell), aber das ganze soll ja auch per FFP laufen.
bye |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 05.11.2004, 11:02 Titel: |
|
|
Hast du mittlerweile eine gute Möglichkeit gefunden zur Laufzeit flüssige Bewegeungen darzustellen und dabei Ressourcen zu sparen?
Am besten wäre es wohl ein auf Bones basierendes Model zu machen, wenn du die Vertexdaten nicht zur Laufzeit "manuell" manipulieren willst. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 05.11.2004, 12:41 Titel: |
|
|
aber wie sollen den Bones funktionieren?da muss doch auch je nach Bones Stellung jede VertexPosition berechnet werden, oder etwa nicht? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 05.11.2004, 12:46 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | aber wie sollen den Bones funktionieren?da muss doch auch je nach Bones Stellung jede VertexPosition berechnet werden, oder etwa nicht? |
Dein Biolehrer würd Dir dafür das Biobuch um die Ohren hauen
Geh mal ins Bad, streck Deinen rechten Arm aus und knicke das Gelenk ganz langsam und sie es Dir an! Glaubst Du die Position Deiner Finger oder Hand würde neu Berechnet? Nein
Du bewegst nur das Gelenk und dadurch bewegt sich der Rest. Und auf 3D übertragen: Du Rotierst das Gelenk und der Rest des Armes bewegt sich mit.
Das ist die Idee der Bone-Technik, billigste Biologie und billigster Technischer Ablauf. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 05.11.2004, 12:52 Titel: |
|
|
naja, klar, die Objekte werden anhand der Bones bewegt. Aber wie? Man muss doch anhand der Bonesstellung die Positionen der POunkte neu berechnen. Da gibt es meines Wissens nur ca. 3 Möglichkeiten. Entweder macht man das selber mit Buffer sperren und so (oder halt direkt aus dme Hauptspeicher zecihenen) oder man setzt für jeden Punkt den Matrix neu (eigentlich Blödsinn) oder aber DX hat dafür Funktionen die das mit Hardware beschleunigungen können. Davon hab ich aber noch nie etwas gehört. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 05.11.2004, 13:04 Titel: |
|
|
Wie kommst Du nur darauf alles neu Zu berechnen?
Okay machen wir es Einfach
Code: | Dein Arm:
0 ist das SchulterBlatt
1 ist das Schultergelenk
2 ist das Armgelenk
3 ist das Handgelenk
0-------------1---------------2--------------3
Rotation um -45° bei Bone '1'
0-------------1
\
\
\
\
\
\
\
\
\
2
\
\
\
\
\
\
\
\
3
Rotation um +45° bei Bone '2'
0-------------1
\
\
\
\
\
\
\
\
\
2--------------3
Transformation von Bone '1' -5 auf X
0--------1
\
\
\
\
\
\
\
\
\
2--------------3
Transformation von Bone '2' +5 auf X
0--------1
\
\
\
\
\
\
\
\
\
\
\
\
\
\
2--------------3
|
Wie Du siehst ist die Position der Vertices egal! Du Transformierst doch auch ne BoundingBox oder ein Model mit einer Translationsmatrix, Rotationsmatrix und Skalierungsmatrix, oder? Das selbe bei Bones, nur das Bones Hierarisch angeordnet sind, genau wie die Knochen in Deinem Körper.
Die Vertices, sind total uninteressant. Denn die sind abhängig vom Bone nach der Hierarchie und passen sich Automatisch nach der Rotation, Translation und Skalierung der Matriz an.
- Patrick _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
Sören JLI Master Trainee

Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 05.11.2004, 17:42 Titel: |
|
|
KI hat Folgendes geschrieben: | Hast du mittlerweile eine gute Möglichkeit gefunden zur Laufzeit flüssige Bewegeungen darzustellen und dabei Ressourcen zu sparen?
Am besten wäre es wohl ein auf Bones basierendes Model zu machen, wenn du die Vertexdaten nicht zur Laufzeit "manuell" manipulieren willst. |
Nein, ich habe keine Möglichkeit gefunden, und mich würde auch wundern wenn es eine gibt. Wie du schon sagst sollte man heutzutage eine Bone-basierte Animationsmethode benutzen, denn Keyframes sind speicherfressend und unflexibel, die Geschwindigkeitsvorteile von Keyframes zahlen sich heutzutage kaum noch aus. Größtes Manko ist dass man Keyframes nicht vernünftig an einer PhysikEngine anbinden kann.
Deshalb: Bones!
@Jonathan
Ein Bone ist ein "Knochen". Also etwas was sich nur als ganzes Bewegen lässt, die Bones werden dann von Gelenken verbunden. Typische Bones sind zB Unter- und Oberarme oder auch der Kopf usw. Jeder Bone hat seine eigene WorldMatrix.
Hier zB die Hierarchie von einem menschlichen Körper:
http://www.josh.ch/joshch/joshch/_content_data/tutorials-milkshape/242.JPG
Die Gelben Abschnitte sind die Bones. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 05.11.2004, 18:39 Titel: |
|
|
Ich hatte mit Patrick eine Intensive ICQ unterhaltung und weiß jetzt alles außer den Übergang von einem Objekt(Knochen) zum anderen (ohne das Kanten entstehen). Aber egal, das raff ich auch noch (irgendwann). _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 05.11.2004, 20:11 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | Ich hatte mit Patrick eine Intensive ICQ unterhaltung und weiß jetzt alles außer den Übergang von einem Objekt(Knochen) zum anderen (ohne das Kanten entstehen). Aber egal, das raff ich auch noch (irgendwann). |
*harhar*  _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
|