Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

19.05.2012, 13:53

EDIT @Dot: ach wo du das gerade schreibst fällt mir auf dass ich U/V linear interpoliere und am ende versuche das perspektivisch zu korrigieren.

Das funktioniert nicht. Du musst die Werte u/w, v/w und 1/w an den Vertices bestimmen und dann diese Werte linear interpolieren.
u bzw. v selbst verlaufen nicht linear im Screenspace, genau darum brauchst du das alles ja erst...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (19.05.2012, 13:58)


12

19.05.2012, 15:54

Ja jetzt habe ich es fast.

Aber W = Z?
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

19.05.2012, 15:56

Das hängt von deiner Projektionsmatrix ab. w ist eben die vierte Koordinate im Clipspace. Im Falle einer perspektivischen Projektion wird w = z sein (oder -z)...

14

19.05.2012, 16:32

Und jetzt stehe ich gerade wohl auf dem schlauch:

wenn ich vorher 1/w interpoliert habe, nennen wir das ergebnis mal PW, wäre der kehrwert PW/1?
Was dann doch bedeutet dass ich den schritt weglassen kann?

edit: ach quatsch, ist dann 1/PW
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

19.05.2012, 16:35

Der Kehrwert von PW ist 1/PW. Wieso meinst du, diesen Schritt weglassen zu können?

16

19.05.2012, 16:53

@Dot: hatte meinen beitrag nochmal editiert, da haben wir uns wohl verpasst ;)

Soo also es schaut ja schonmal nach irgendwas aus:

(Link)


Komisch nur das die beiden Triangles sich an der jeweils anderen ober/unterkante orientieren.

Die trennung der faces geht von der oberen linken zur unteren rechtren ecke.

Von der rotenseite nicht irritieren lassen, da gibts noch kein UV.

Der nebbeneffekt im oberen Bild, stimmt da was mit den UV koordinaten nicht oder habe ich wieder was am texturemapping versemmelt?

EDIT: nö, mapper scheint korrekt zu sein, aber dann wirds wohl das UV setup sein. Gerade mal nur eine Face sich drehen lassen, schaut OK aus.
EDIT2: ne da muss noch irgendwas schief laufen -.-
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Memnarch« (19.05.2012, 17:50)


17

21.05.2012, 20:52

AH ok, ich konnte inzwischen herausfinden das der algorythmus zwar funktioniert, aber die Z/W koordinate probleme macht.

Ich arbeite mit 4DVectoren (X,Y,Z,W) und einer 4D-Projektionsmatrix

In dem Tutorial zu matrizen etc dass ich mal geselen habe, stand dass der 4dVector nach einer multiplikation mit einer 4dMatrix so rescaliert wird, dass W = 1 herauskommt(man lasse die CPU ungenauigkeit mal außer acht)
Weswegen dort XYZ rescaliert wurden wenn W <> 1 war. W wurde dann stumpf auf 1 gesetzt.

Ich schätze mal hier liegt der Hase im Pfeffer vergraben?

EDIT: deswegen nutze ich übrigens auch Z


MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Memnarch« (21.05.2012, 20:58)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

21.05.2012, 21:05

Mir ist nicht ganz klar was genau du meinst. Die Projektionsmatrix transformiert dir Punkte in den Clipspace. Um vom Clipspace zu normalisierten Gerätekoordinaten zu kommen, musst du x, y und z durch w dividieren (Multiplikation mit genau dem 1/w das du in weiterer Folge auch zum Interpolieren brauchst). Diese Division durch w ist genau der Moment wo die eigentliche Projektion passiert, eine Matrix an sich kann so eine nicht lineare Transformation schon rein theoretisch gar nicht darstellen. Das z das du dort rausbekommst ist nur fürs Depth Buffering interessant. Nachdem es sich dabei um z/w handelt, kannst du das linear im Screenspace interpolieren.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (21.05.2012, 21:13)


19

21.05.2012, 21:23

Ja genau, x,y,z werden durch W geteilt.
Ok einen fehler schonmal beseitigt. Ausversehen beim berechnen der Konstanten für die Flächengleichung z nochmal geteilt. Das geht natürlich schlecht.

Ahja und den W wert den ich auch zum teilen von x,y,z verwendet habe, muss ich dann auch auf UV anwenden. Da schwant mir schon die fehlerstelle...
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

20

21.05.2012, 21:34

Fällt mal wieder in die tüte: "Kaum macht mans richtig, schon funktionierts"

MEIN GOTT stand ich auf dem Schlauch o.O


(Link)


Vielen herzlichen dank an die Community, und natürlich besonders an dich Dot, dafür dass du so geduldig bist.

MFG
Memnarch
Meine Website mit Updates/News zu Aktuellen Projekten:SpareTime-Development

Werbeanzeige