Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Hi,
irgendwie haben die mein interesse geweckt. Allerings habe ich keinen Plan, was dir mir mit dem Artikel sagen wollen.
<a href='http://developer.nvidia.com/view.asp?IO=understanding_w' target='_blank'>http://developer.nvidia.com/view.asp?IO=un...understanding_w</a>
Hat jemand ne ahnung wozu die W Koordinate dient?
Die Demo finde ich irgendwie auch etwas unverständlich. Nicht die Sourcen (da habe ich noch nicht reingesehen), sondern das was bei der Demo raus kommt.
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Blättere mal Redbook herum, da ist es IMAO recht gut beschrieben. Im prinzip wird bei jeder Kalkulation die x,y,z durch w geteilt. Als Standard-Wert ist dies 1
x/1 = x
Somit fällt dies nicht sonderlich auf.... steht irgendwie inna roten Bibel
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Registriert: Mo Mai 06, 2002 20:27 Beiträge: 479 Wohnort: Bremen
ja fiji.... normalerweise!
Aber im von LossyX angesprochene Text geht es eben nicht um normale w Werte sondern es wird ausdrücklich auch von w = 0 und sogar w < 0 gesprochen.
was die division durch null angeht so interpretiere ich folgenden satz
"A triangle that has vertices with both positive and negative w
is said to be "external" because the triangle itself wraps around
infinity." so, dass eine homogener vertex mit w = 0 genau diese unendlichkeit darstellt. (die division durch 0 ist ja nur deshalb unmöglich weil etwas unendlich großes dabei rauskommen würde)
was ich allerdings auch nicht ganz peile ist, wie mir das bei shadow-volume rendering helfen soll?!
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
@Fiji:
Ich hatte es schon und deswegen wollte ich ja gerade wissen, wie das dann mit 0 ist.Außerdem, was hat das Lernen des Dividierens mit der Möglichkeit, dass w auch 0 sein kann gemeinsam? ...
Dank Lith weiß man nun: x ÷ 0 = ∞ ... [edit: der will mein unendlichkeitszeichen nicht annehmen... böser server...! ]
@Lith: Vielleicht mit der Größe des Shadows irgendwie...?
Registriert: Mo Mai 06, 2002 20:27 Beiträge: 479 Wohnort: Bremen
also, ich versuchs mal zu erklären:
Eigentlich hat ein Punkt (vektor) in OpenGL 3 Dimensionen (man spricht vom Vektorraum R3). Wenn du in OpenGL skalierst und rotierst, so sind das lineare Abbildung, die sich durch eine 3x3 Matrix darstellen lassen.
Nun hast du aber das Problem, das du auch verschieben willst. Und eine Verschiebung ist eine rationale Abbildung und keine lineare - deshalb durch eine 3x3 Matrix nicht darstelbar.
Deshalb bedient man sich bei OpenGL eines kleinen Tricks: den homogenen Koordinaten. Man spendiert einem Vektor im R3 einfach noch eine 4te Komponente - eben unser w - und erhält nun einen 4-dimensionalen Vektor. Setzt man w = 1 so kann man auf einmal auch verschieben. (denn eine rationale Funktion im R3 lässt sich als lineare Funktion im R4 darstellen!)
Und warum kann man das jetzt? Einen 4-dimensionalen Vektor multipliziert man nicht mehr mit einer 3x3 sondern mit einer 4x4 Matrix. Die Zahlen die in der letzte Spalte einer 4x4 Matrix stehen, werden bei der Multiplikation von Matrix und Vektor immer mit der letzten Komponente des Vektors multipliziert (und zum gesamt Ergebnis addiert). Wenn die letzte Komponente des Vektors aber gerade w = 1 ist, wird die Zahl einfach so addiert, was im Endeffekt nichts anderes bedeutet, als das der Bildvektor um die letze Spalte der Matrix verschoben wird.
Wenn man intern mit homogenen Koordinaten arbeitet, aber eigentlich nur an 3-Dimensionalen Vektoren interessiert ist, muss man sich noch etwas einfallen lassen, um aus einer homogenen Koordinate wieder einen Punkt im R3 zu bekommen. Und da sieht die Vereinbarung so aus, dass man einfach jede Koordinate durch W teilt, so das W eins wird und damit quasi wegfällt. d.h. (x, y, z) := (X / W, Y / W, Z / W)
Da w normalerweise 1 ist, ist das nix dramatisches... Aber was passiert wenn w <> 1 ist?!
In dem von von Lossy Ex ausgegrabene Text geht es nun genau darum. Er bespricht, wie man homogene Koordinaten mit w <> 1 als Punkte im R3 zu interpretieren hat.
Sorry, besser kann ich's nciht erklären! Das erfordert halt gewisse Grundkentnisse im Bereich der linearen Algebra, die sich schlecht in einem Forums-Post vermitteln lassen.
Idee von der w<1: damit kann man Schatten-Volumen effectiver ersellen. Irgentwo im Forum von www.opengl.org gab es auch so ein Thread. Könnt mal ein blick werfen...
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.