JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=4fcc8ce400a0d8a2f498ef84d5b5d3b1Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Interpolation von Vertices + BufferObjects

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
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

BeitragVerfasst am: 26.09.2004, 01:09    Titel: Interpolation von Vertices + BufferObjects Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 05.11.2004, 11:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.11.2004, 12:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 05.11.2004, 12:46    Titel: Antworten mit Zitat

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 Wink

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 Wink

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.11.2004, 12:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 05.11.2004, 13:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 05.11.2004, 17:42    Titel: Antworten mit Zitat

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! Wink

@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
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.11.2004, 18:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 05.11.2004, 20:11    Titel: Antworten mit Zitat

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* Very Happy
_________________
'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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum