Crush Geschrieben 6. Dezember 2001 Geschrieben 6. Dezember 2001 Hallo, ich hoffe jemand hat noch etwas über Matrizen im Kopf, weil ich eine Matrizenregel nicht so ganz durchschaue: Eine 2-dimensionale Rotation eines Punktes P(x,y) um den Koordinatenursprung um den Winkel w ergibt sich diese Rotationsmatrix: R(w) = cos(w) sin(w) -sin(w) cos(w) alles klar ... wenn ich das jetzt in eine 3-dimensionale Rotationsmatrix einsetzen will also P(x,y,z) ist ergibt sich für eine Rotation um z (z bleibt also gleich) diese Matrix: Rz(w) = cos(w) sin(w) 0 -sin(w) cos(w) 0 0 0 1 alles, was die z-achse kreuzt bleibt also 0 außer der Grundfaktor 1 bei Rotation um die x-Achse ist das auch noch optisch logisch nachvollziehbar: Rx(w) = 1 0 0 0 cos(w) sin(w) 0 -sin(w) cos(w) alles, was die x-achse kreuzt bleibt also 0 außer der Grundfaktor was mich jetzt irritiert ist jetzt die Rotation um die y-Achse, deren 0er-Werte mir logisch sind, aber nach einem Buch, welches ich hier habe werden die winkelfunktionen irgendwie ausgetauscht, was ich nicht so ganz durchblicke: Ry(w) = cos(w) 0 -sin(w) 0 1 0 sin(w) 0 cos(w) Kann mir irgendein Mathemeister erklären, warum die Winkelfunktionen hier ausgetauscht werden, bzw. ob cos(w) auch über kreuz ausgetauscht wird oder nur die sin(w)-Funktionen??? Ich verstehe hier nicht, warum das Einsetzen einer Matrize in einer höherdimensionalen Matrize dieses "Tauschen" auslöst. Die ersten zwei Versionen werden doch auch nur roh eingesetzt. Eine Regel dafür habe ich komischerweise nicht finden können. Wie sieht die aus??? <FONT COLOR="#a62a2a" SIZE="1">[ 06. Dezember 2001 14:29: Beitrag 1 mal editiert, zuletzt von Crush ]</font> Zitieren
Klotzkopp Geschrieben 6. Dezember 2001 Geschrieben 6. Dezember 2001 Es sieht nur so aus, als ob was vertauscht würde, tatsächlich wird rotiert. Es wird von einer Matrix zur nächsten jeweils nach rechts und unten rotiert, und was rechts und unten rausfällt, kommt links und oben wieder dran. Wenn Du den Vorgang auf die letzte Matrix anwendest, erhältst Du wieder die erste. Leg einfach die letzte Matrix mal in ein 2x2-Muster aneinander, dann sieht man in der Mitte wieder die Ursprungsmatrix. Zitieren
Crush Geschrieben 6. Dezember 2001 Autor Geschrieben 6. Dezember 2001 Ich schaue mir das heute abend nochmal genauer an, weil das Rotieren wirklich irritierend und wohl nur step-by-step direkt nachvollziehbar ist. Das bedeutet also, daß die cos(w) auch getauscht werden! Logisch! Danke für die schnelle Antwort! Zitieren
Crush Geschrieben 6. Dezember 2001 Autor Geschrieben 6. Dezember 2001 AAAAHHH!!! Jetzt hab´ ich´s gerafft. Sieht tatsächlich nur so aus als ob es getauscht wäre ... ist es aber überhaupt nicht! Unbegreiflich, wie einen die Optik täuschen kann, gell!!! Zitieren
gajUli Geschrieben 7. Dezember 2001 Geschrieben 7. Dezember 2001 Saluti, ei was der Crush wieder Schoenes treibt. :-)) Klotzkopp hat es schon richtig erkannt, der exakte Nachweis geht ueber Matrizen-Vektor-produkte, etwa so: R*e = U (U, e: 3d-Vektoren) Fuer R = Ry(w) bekommt man dann drei Skalargleichungen: Ux = cos(w)ex - sin(w)ez Uy = ey Uz = sin(w)ex + cos(w)ez Heisst im Klartext erstmal nur, eine Lissajous-Figur taumelt in einer x-z-Ebene bei konstantem y. Wenn man den Betrag von U, also sqrt(UxUx+UyUy+UzUz) ausrechnet, bekommt man fuer alle w exakt den Betrag von e, also sqrt(exex+eyey+ezez) Das kann nur auf einer Kreisbahn der Fall sein. Perfekt, wuerde ich sagen. Hausaufgabe: Was muss man machen, damit die Rotation im umgekehrten Drehsinn ablaeuft? :D Uli Zitieren
Crush Geschrieben 7. Dezember 2001 Autor Geschrieben 7. Dezember 2001 Oh, was macht denn der Uli nachts um 2? Immer noch knechten? Achso: Elton.TV lief ja und die Vollversion von "wir kiffen!" =8-D (hehe - mußte ich mir natürlich auch geben) Muß ich jetzt auch wieder mit Hausaufgaben anfangen? Naja. Laß mich raten: alle 1er in den Matrizen werden mit -1 ersetzt? Oder alle w mit (360-w)? (sag ich einfach mal aus dem Bauch raus - egal ob ich richtig oder falsch liege). Dann würde sich allerdings der Koordinaten-Ursprung auf links verlegen und der Punkt sich verhalten als ob ich einen Spiegel mit 90 Grad (optisch) anlegen würde und den Punkt nur im Spiegel betrachte. Wenn ich vom normalen 2D-Kreis ausgehe würde ich aber sagen, daß x unberührt bleiben sollte und nur y betroffen ist. Kommt wahrscheinlich drauf an, was man sich so wünscht oder unter Richtungswechsel vorstellt. Ich fange mit dem ganzen Matrizengewurstel ja erst an - in der Schule gab´s das bei uns damals nicht - aber ich find´s interessant. (Außerdem wollte ich schon immer wissen, wie man überhaupt auf die Standard-Formeln für 3D-Grafik kommt) Obwohl mir die Raytracing-Berechnung beim Überfliegen immer noch ein Buch mit sieben Siegeln zu sein scheint ... aber vielleicht steig ich da irgenwann auch mal durch. Echt toll, daß in einem 13 Jahre altem Amiga Buch als einzigstes sogar an Raytracing-Grundlagen - bis zum Erstellen eines eigenen Raytracers - rangeführt wird - sowas gibt´s wohl heute im "normalen" Buchladen gar nicht mehr! <FONT COLOR="#a62a2a" SIZE="1">[ 07. Dezember 2001 07:17: Beitrag 7 mal editiert, zuletzt von Crush ]</font> Zitieren
gajUli Geschrieben 7. Dezember 2001 Geschrieben 7. Dezember 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Crush: <STRONG>Oh, was macht denn der Uli nachts um 2? Immer noch knechten? </STRONG> Zitieren
Crush Geschrieben 7. Dezember 2001 Autor Geschrieben 7. Dezember 2001 Interessant, aber bei den allgemeinen 3D-Rechnungen wird immer gegen den Uhrzeigersinn gearbeitet (hat sich halt so eingebürgert). Was ist Raytracing? Das Strahlenverfolgungs-Prinzip zum Berechnen von realistisch(er)en 3D-Umgebungen mit Reflektion und weiteren Spezialeffekten. Da wird halt von einer Lichtquelle aus in jede Richtung ein Strahl losgeschickt und die Farben und Brechungswinkel des Strahls werden entsprechend an den Objekten die er schneidet verändert (bei transparenten Objekten wird der Strahl mehrfach geschnitten und je nach Brechungswinkel auf der anderen Seite wieder weiterberechnet), bis er durch die Kamera (oder besser dem Monitor) fliegt. (Beim Raytracing wird der Strahl vom Monitor zur Lichtquelle berechnet) Das Raycasting ist praktisch dasselbe, allerdings werden hier keine Strahlen gebrochen und Reflektionen meist unterdrückt oder stark eingegrenzt). Du kennst doch bestimmt 3D-Studio Max, Maya, Renderman, Maxon4D und andere Raytracer. Halt das, was besser aussieht als das Zeug was aus der Grafikkarte normalerweise kommt. Ich wollte ja nur mal erwähnen, daß ausgerechnet ein uraltes Buch aus meiner Jugend das Thema 3D so extrem von 0 bis 100 führt, wie ich es noch NIRGENDS in keinem Tutorial oder regulär erhältlichen Buch jemals gesehen habe (war sogar alles mit C-Sourcecodes versehen, was für die damalige Zeit auch eher die Ausnahme war). Übrigens kann ich mich erinnern, daß vor ca. 3-4 Jahren sich einer vom "Silicon Vally" aufgemacht hat eine realtime Raytracing 3D-Karte zu entwickeln. Ich bin gespannt, ob die nicht langsam mal fertig wird oder ob das eher floppt. Im Grafikkartenmarkt ist einfach noch etwas wenig los zur Zeit und so interessante Meldungen wie ein früher mal veröffentlichtes Preview des Grafikchips von den "Bitboys Oy´s" hätten der Geforce gut kontra geben können - schade das es denen wohl am Investitionskapital gemangelt hat. Aber mit dem was es derzeit so gibt kann man ja auch schon mehr als zufrieden sein (obwohl man es manchen wirklich nie recht machen kann)! Ich habe mir halt vorgenommen mich in Mathe etwas weiterzubilden und das Buch scheint wirklich eine gute Stütze zu sein, weil da auch gleich gezeigt wird wie man was direkt in Programmcode umsetzen kann. Das Problem war ja nur das seltsame "Tauschen" der Matrize, was leider nicht ausführlich genug beschrieben war - aber ansonsten ist der Schmöker ganz gut. Was versteht man eigentlich unter einer geraden oder ungeraden Funktion? So wie ich das sehe ist der Cosinus doch nur ein um 90 Grad später startender Sinuswert? Ist ja egal - hauptsache es funktioniert das was man sich vornimmt. <FONT COLOR="#a62a2a" SIZE="1">[ 08. Dezember 2001 13:41: Beitrag 3 mal editiert, zuletzt von Crush ]</font> Zitieren
gugelhupf Geschrieben 7. Dezember 2001 Geschrieben 7. Dezember 2001 @Crush: kannst Du mir sagen welches Buch Du da durchnimmst ? würd mich auch interessieren... Zitieren
gajUli Geschrieben 7. Dezember 2001 Geschrieben 7. Dezember 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Crush: <STRONG> Was versteht man eigentlich unter einer geraden oder ungeraden Funktion? So wie ich das sehe ist der Cosinus doch nur ein um 90 Grad später startender Sinuswert?</STRONG> Zitieren
Crush Geschrieben 7. Dezember 2001 Autor Geschrieben 7. Dezember 2001 Amiga 3D-Grafik und Animation (Axel Plenge) von Markt & Technik ISBN 3-89090-526-9 Geht ziemlich ans Eingemachte für 3D-Mathematik Themenbereiche grob abgegrenzt sind (steht vorne jedenfalls drauf): Grundlagen, Clipping, perspektivische Projektion, verdeckte Linien und Flächen, 3D-Funktionsplotter, Ray-Tracing, Spiegelungen, Reflexionen, Lichtquellen, Lichtbrechung, Schatten, Rotationskörper. Hab es damals neu gekauft und erst kürzlich beim Kramen in meinem alten Bücherarchiv wiederentdeckt - das Ding ist bestimmt sauschwer aufzutreiben - ich habe auch nur einen Hinweis im Net gefunden. WOW: Hier habe ich noch ein paar von meinen alten "Goldies" wiederentdeckt - irgendwie bringe ich es nicht übers Herz die ins Schredder-Nirvana zu schicken: http://www.amigahistory.de/buecher/prog_allg.html Es ist auch sehr lehrreich in die Karten der alten C-Gurus reinzuschauen. Damals gab´s auf dem PC noch nicht allzu viel Profis und die haben mit viel Liebe zum Detail damals hervorragende Bücher geschrieben, deren Informationsgehalt ich heute nur noch in Hanser, Franzis´ und Prentice Hall-Büchern so wiederfinde. Einen blassen Schimmer, was einen in dem Buch erwartet kannst Du hier sehen: http://www2.inf.fh-rhein-sieg.de/mi/lv/vr/ws98/stud/raytracing/raytracing.htm ist alles aus dem Buch geklaut - und das ist nur in den ersten 1-2 Seiten der Raytracing Einführung (geht später vieeeel härter zur Sache und wird bis ins letzte Detail erklärt, hergeleitet und beschrieben bis zum fertigen voll ausdokumentiertem Sourcecode - wie gesagt: ist mir selber noch ein wenig zu hoch). Auf jeden Fall ist das das "Höchste" was ich bisher zu diesem Thema gesehen habe. Ich muß mich noch korrigieren: Es wird vom Bildschirm rückwärts bis zur Lichtquelle der Strahl berechnet! Sorry, ist halt schon über 10 Jahre her, daß ich das Raytracing-Kapitel überflogen habe. Das ist Axel´s Firma heute: http://www.plengeservice.de/ ... aber wenn wir schon bei harten Büchern sind: DAS HÄRTESTE WELCHES ICH BESITZE (wovon ich schon nach wenigen Seiten Kopfschmerzen bekomme) ist das hier: Künstliche Neuronale Netze - Das Lehrbuch von Dan Patterson (Prentice Hall) ISBN 3-8272-9531-9 Ich kenne persönlich nur zwei Menschen die das noch (vermutlich) kapieren und das ganze noch weiterspinnen können - zwei meiner alter Coder-Kumpel mit denen ich angefangen habe, die es bis in die physikalische Forschungsabteilung von irgendeinem riesen Konzern geschafft haben und dort an der Entwicklung neuer Supraleittechniken arbeiten. Das waren eigentlich meine persönlichen Gurus, Vorbilder und Freunde. Leider habe ich mit denen heute praktisch keinen Kontakt mehr ... so ist halt das Leben ... den sollte ich vielleicht mal wieder anwerfen. <FONT COLOR="#a62a2a" SIZE="1">[ 07. Dezember 2001 14:41: Beitrag 11 mal editiert, zuletzt von Crush ]</font> Zitieren
gugelhupf Geschrieben 7. Dezember 2001 Geschrieben 7. Dezember 2001 @Crush: Vielen Dank für die Infos Zitieren
TingleTangle Geschrieben 10. Dezember 2001 Geschrieben 10. Dezember 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR> Beim Raytracing wird der Strahl vom Monitor zur Lichtquelle berechnet Zitieren
Technician Geschrieben 10. Dezember 2001 Geschrieben 10. Dezember 2001 Hi! <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von DocNeo: <STRONG> Der Strahl wird von einer (fiktiven) Lichtquelle aus bis zur Kamera (Monitor) verfolgt - nicht andersherum. Genaugenommen machen 3D-Studio Max, Maya, Lightwave und Co. nicht von Haus aus raytracing sondern benutzen Shading-Techniken (Sie können es aber). Ein echter reiner Raytracer ist PovRay (weiss nicht obs das noch gibt).</STRONG> Zitieren
Crush Geschrieben 11. Dezember 2001 Autor Geschrieben 11. Dezember 2001 "Beim Raytracing wird der Strahl vom Monitor zur Lichtquelle berechnet" Habe ich nur geschrieben, weil´s so in dem Link stand, den ich gepostet habe, allerdings erscheint es mir andersrum auch sinnvoller. Ich habe mir mal angeschaut wo der Unterschied sein soll: Es gibt Rayshader, Scanlinerenderer und Raytracer, wobei der Raytracer die besten Ergebnisse erzielt. Der Raytracer geht also von der Lichtquelle aus - der Scanlinerenderer ist tatsächlich die umgekehrte Version (vom Monitor die Strahlen ins Bild schicken, deshalb gibt es dort keine Reflektionen) - der Rayshader ist eine Abwandlung - dabei werden die Strahlen lediglich mit prozeduralen Texturen versehen (halt von einem Shader berechnet, was einem Texturprogramm entspricht). Spiegelungen werden einfach so erreicht, indem man die Landschaft aus den 6 verschiedenen Blickwinkeln als Maps berechnet und einfach per Environment-Mapping entsprechend auf die Objekte klatscht, sodaß der Eindruck von "echten" Spiegelungen entsteht, allerdings ist das Ergebnis nicht so genau und detailliert wie das echte Raytracing. Rayshading ist relativ einfach zu realisieren und wesentlich weniger rechenaufwendig, deshalb sind die puren Raytracer schon fast ausgestorben, allerdings alle guten 3D-Programme haben trotzdem einen adaptiven Raytracer, den man bei Bedarf zuschalten kann. Die Shader können in allen möglichen denkbaren Kombinationen miteinander verkettet werden - deren Aussehen wird durch verstellbare Parameter bestimmt. So spart man Speicher beim Rendern. Es gibt aber auch 3D-Programme, die es erlauben die komplette Animation mit den heutigen Grafikkarten über D3D oder OpenGL zu berechnen, was noch schneller geht und auch recht gut aussieht! Das Raycasting (oder halt Scanline Renderer) hat übrigens lange Zeit als Grundlage von Spielen gedient und stammt auch daher, wie z.B. Doom, Wolfenstein, etc. Jetzt wird der Thread allerdings Off-Topic, deshalb an dieser Stelle: SCHLUSS! <FONT COLOR="#a62a2a" SIZE="1">[ 11. Dezember 2001 09:56: Beitrag 5 mal editiert, zuletzt von Crush ]</font> Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.