AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vektor Problem (3D)

Offene Frage von "MR321"
Ein Thema von MR321 · begonnen am 3. Okt 2003 · letzter Beitrag vom 12. Okt 2003
 
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#20

Re: Vektor Problem (3D)

  Alt 7. Okt 2003, 16:59
Siehst du, hättest du das mal gleich gesagt. Die Antwort lautet:

Matrixmultiplikation.

Schon mal gehört, oder? Nämlich auf Seite 1 ;c)

Und das geht so. Irgendwo musst du die Bewegung der Knochen ja definieren. Das geht letztendlich über Matrixmultiplikation, das X-Format von DirectX beispielsweise speichert hierzu direkt die Matrizen. Und jetzt kommt der Witz: Wenn du z.B. deine Torso-Matrix multiplizierst mit der Oberarm-Matrix, die du mit der Unterarmmatrix multiplizierst etc. (Handmatrix, Fingermatrix), musst du nämlich nur relative Matrizen speichern und erhältst jeweils die "End-"Matrix, die du direkt auf den Vertices anwenden kannst. Zu diesem Konzept gehört auch der Matrix-Stack, den es z.B. für DirectX als ID3DXMatrixStack gibt.
Du definierst die Bewegung des Knochen als Matrix. Diese speicherst du für den Knochen, und dann kannst du sie sowohl auf den zu dem Knochen gehörigen Vertices, als auch auf allen in der Hierarchie untergeordneten Knochen anwenden.

Gewöhnlich führst du die letztendliche Multiplikation der Vektoren mit den Matrizen jedoch nicht selbst durch, sondern lässt das die Grafikkarte machen, indem du die Matrix als Transformationsmatrix (in diesem Fall als Welttransformationsmatrix) der Karte übermittelst. Du kannst es natürlich trotzdem von Hand machen.

Aber mal ehrlich, du willst also ein Knochensystem basteln, ohne von Vektoren eine Ahnung zu haben?
Wie dem auch sei, die Stichworte Matrix, Matrixmultiplikation, Matrixstack sollten eigentlich als Suchgrundlage reichen. Auch auf gamedev.net oder gamasutra.com gibt es zu diesen Themen mehrere Artikel, wenn ich nicht irre sogar exakt zu deinem Problem (wie baue ich ein Knochensystem).

Ach ja, um es nicht zu vergessen: Wenn du Winkel zwischen Vektoren benötigst, ist generell das Punktprodukt (Dot Product) oder Bei Google suchenSkalarprodukt die richtige Wahl. Ich hab' auch noch einen Artikel gefunden, der das ganze etwas erläutert: http://www.jtl-software.de/3d_grund.html
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz