Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Aya hat geschrieben:
nur aus irgendeinem grund muß ich den punkt den ich am ende mit der matrix multipliziere in y * -1 rechnen, da sonst die projektion an der y-achse gespiegelt ist.. (jetzt dann ohne die invertierte modelview matrix)
Vielleicht könnte das daran liegen, dass OpenGL sein (0/0) unten links hat?
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
an der projections matrix kann es doch eigentlich nicht liegen, weil wie gesagt ist sie exakt genauso wie wenn ich sie via gluPerspective erstellen lasse.. ich denk eher das da bei dem, wo ich (TP * (Projection * Modelview)) * Point mache noch was schief läuft.. seid ihr denn sicher das danicht noch irgendwas fehlt, oder das dass TP evtl bei ner perspektivischen projektion anders sein muß etc?
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Hallo,
Ich habe inzwischen auch glFrustum geschafft. Zumindest kann ich das, was dabei rauskommt interpretieren und es erscheint mir auch plausibel. Ich würde es aber nicht als Texturkoordinatenerzeugungsmaschine empfehlen, glOrtho ist da erheblich besser und vorhersehbarer. Die Texturkoordinaten, die bei glFrustum herauskommen sind noch dazu seitenverkehrt und stehen auf dem Kopf. Wenn ihr das Ergebnis wissen wollt, stelle ich das noch hier herein.
Traude
Das liegt an dem, was ich als Unterschied DX/OGL gemeint habe. Wie Lord Horazont schon sagte, in OGL liegt der Urpsrung im Texture Space in der unteren linken Ecke vom Bild, und dann geht x nach rechts und y nach oben. Bei DX ist es an der y-Achse gespiegelt. Dort liegt der Ursprung oben links im Bild und dann geht x nach rechts und y nach unten. WEnn du deinen Ursprung oben haben willst, dann musst du an y spiegeln. Das kannst du in die TP-Matrix gleich mit reinnehmen, indem du in der Zeile für y das - mit reinmachst. Also an Stelle (2,2) die -0.5
_________________ __________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
OK ich stelle Euch mal das Bildchen (Transformation mit glFrustum) herein. Es ist genauso aufgebaut wie das erste. Ich habe aber die ModelView-Matrix kaltgestellt, das hat mich zu sehr verwirrt. Es agiert also nur die Projektionsmatrix und die Matrix, die in den Texturraum transformiert.
Ich habe den Tip mit dem Minus vor dem 0.5 im Original-Worksheet ausprobiert, es funktioniert. Aber man muss auch beim X ein Minus davor setzen, weil die Texturkoordinaten auch links- und rechtsverdreht sind. Ich war zu faul, das Bild jetzt nochmal mit den korrigierten Werten zu generieren, sorry. Aber man sieht, wie es gerechnet wird.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
hab es jetzt hinbekommen Dank dem letzten bild von traude ^^
Ich hatte den punkt den ich am ende mit der matrix multipliziert habe nicht durch w geteilt, bei der ortho war das praktischerweise egal, bei der perspective dann nichtmehr...
Daaaanke~~~
Aya~
PS: EDIT: Nur das mit dem um y-spiegeln in TP einbauen klappt nicht, also einfach die y-achse auf -0.5 setzten hilft nichts
hab jetzt doch noch ein kleines problem Wenn ich versuche meinen projektor im 3D view darzustellen, gehen die kanten von meinem "cone" immer ein wenig an der projektion vorbei..
Den cone berechne ich so:
float v = tanf(angleOfView * (pi / 180.0f)) * 10.0f);
float left = -v * aspect;
float top = -v;
float right = v * aspect;
float bottom = v;
Und zeichnen tu ich dann halt nen quad mit left, top, bottom und right als X und Y und 10 als Z-Wert...
aber es ist halt immer ein wenig zu groß.. muß ich da irgendwie zNear und zFar mit einberechnen?
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Hallo Aya,
@Problem mit den 0.5: Es war gedacht, dass das Minuszeichen in der "TP" Matrix eingebracht wird, also beim ersten 0.5 in der Zelle mit dem Index (0,0) , die zweite mit dem Index (1,1). Meines Erachtens könntest Du auch einfach das Endresultat ändern:
u = (1-u)
v= (1-v)
@Quad ist nicht ganz drauf: ich glaube du musst die Blende deines Projektors etwas weiter aufmachen. Wenn Du z.B. anstatt 45 Grad 75 Grad angibst, ist die hintere "Wand" des Frustums etwas größer und müßte auch mehr von dem Quad zu sehen sein.
Mitglieder in diesem Forum: 0 Mitglieder und 12 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.