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

the[V]oid

Alter Hase

  • »the[V]oid« ist der Autor dieses Themas

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

1

20.07.2007, 21:05

Verständnisproblem zur Transformation

Wenn ich einen Punkt im dreidimensionalen Raum als Vektor gegeben habe und möchte nun berechnen, an welcher Stelle dieser Punkt auf dem Bildschirm zu sehen sein wird, so müsste ich (so wie ich es verstanden habe) diesen Vektor zuerst mit der Weltmatrix, anschließend mit der Viewmatrix und abschließend mit der Projektionsmatrix multiplizieren. Allerdings ergeben diese Multiplikationen wieder einen dreidimensionalen Vektor, obwohl ich doch einen zweidimensionalen erwarte. Wo ist mein Fehler?

mfG

Progater

Treue Seele

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

2

20.07.2007, 22:38

Es würde ja auch komisch sein, wenn am Ende ein 2D-Vektor rauskommt ;)
Afaik, benutzt man die x- und die y-Koordinaten, um die Lage auf dem Bildschirm zu beschreiben.
Der z-Wert wird im Z-Buffer gespeichert, wo er mit jedem neuen Wert vergliechen wird und wenn der neue Wert (Standarteinstellung) kleiner oder gleich dem bereits im Z-Buffer gespeicherten ist, kann der Punkt gezeichnet werden und landet dann zur weiteren Vergleichen im Z-Buffer (es sei denn die Render-States für den Z-Buffer wurden geändert).
To go back to the drawing board is not everyone's cup of tea! :-)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

26.07.2007, 21:58

du musst den punkt mit world, view und projectionmatrix multiplizieren. daraus ergibt sich ein 4d vektor. diesen dividierst du dann durch seine w koordinate (die 4te koordinate) und erhältst so einen 3d vektor, dessen x und y koordinaten dir angeben wo auf dem bildschirm der punkt gezeichnet würde (allerdings nicht in pixeln, sondern im bereich [-1,1], wobei der punkt (-1, -1) die linke untere ecke ist).

achja: D3DX hat ne funktion namens D3DXVec3Project() die das alles für dich macht ;)

the[V]oid

Alter Hase

  • »the[V]oid« ist der Autor dieses Themas

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

4

28.07.2007, 15:42

Zitat von »"dot"«

du musst den punkt mit world, view und projectionmatrix multiplizieren. daraus ergibt sich ein 4d vektor. diesen dividierst du dann durch seine w koordinate (die 4te koordinate) und erhältst so einen 3d vektor, dessen x und y koordinaten dir angeben wo auf dem bildschirm der punkt gezeichnet würde (allerdings nicht in pixeln, sondern im bereich [-1,1], wobei der punkt (-1, -1) die linke untere ecke ist).

Vieeelen Dank, hat super geklappt^^

Werbeanzeige