3D Punkt in 2D umrechnen

Surma

Erfahrenes Mitglied
Hallo,
ich bin gerade auf Lanzarote in einem sauteuren Internetcafe, und hatte nicht viel Zeit zu googlen, und hab auf die schnelle nichts gefunden. Verzeiht mir also bitte.
Ich muss (Auftrag) einen 3D-Punkt auf 2D Abbilden (Also eignetlich ganze Polygonkoerper)
Ich meinte mich dunkel zu erinnern das das wie folgt geht.
x`=x/z
y`=y/z

das kommt der loesung nahe, aber als ich einen Wuerfel umgerechnet habe, war das nicht so wirklich ein Wuerfel mehr, eher ein Quader...
Wie gehts richtig?

MfG
Crock
 
Zuletzt bearbeitet:
Hallo!

Kann es sein, dass du noch das Seitenverhältnis mit einkalkulieren musst?

Z.Bsp.: 1024/768 -> 4 / 3 ....

Gruß Tom
 
naja, eher nicht...
ich arbeite gerade nur auf einem 800x800 Bild... ich hab das Gefuehl, das dieser besagte Quader genau doppelt so tief ist, wie er sein soll... ich werd heute Mittag das nochmal nachbauen, vielleicht durch 2? Es gibt da eine Formel, ich hab das Buch sogar zuhause, aber eben nicht hier... naja, vielleicht kennt sie ja einer (Mir faellt gerade ein, es stand in dem Buch "3D-Spiele-Programmierung" von David Scherfgen, ein DirectX Einsteigerbuch)

MfG
Crock
 
Abbildungen von 3D nach 2D gibt es wie Sand am Meer. Die einfachste dürfte sein, einfach eine Koordinate wegzulassen (entspricht der senkrechten Projektion auf eine der Ebenen die durch die verbleibenden Koordinatenachsen gebildet wird).
 
Sagt dir der Strahlensatz was, Crock? Damit kannst du ganz einfach die Abbbildung auf eine Ebene herleiten... siehe Anhang!

Links ist der Betrachter, das in der Mitte ist die Projektionsebene und das ganz rechts ist ein abzubildendes Objekt im dreidimensionalen Raum (hergeleitet wird die Abbildung des oberen Punktes P auf P', was man aber natürlich auf alle Raumpunkte anwenden kann.)
 

Anhänge

  • projektion.png
    projektion.png
    2,7 KB · Aufrufe: 466
dann ist d also die Z-Kooridnate?
Weil die Anwendung auf mein Problem versteh ich leider nicht, auch wenn ich weis, dass das die Loesung ist:rolleyes:

Vielleicht kannst du dir die Meueh machen, mir das noch zu erklaeren? oder wie genau ist f auf eine PC-Grafik anzuwenden?

Danke, und ioc bin ein bisschen bloed (z.Z :) )
Crock

PS: Das Internetcafe war schelcht geschuetzt, ich kann jetzt umsonst surfen :)
 
d ist der Abstand deines Punktes von der Projektionsebene. Wenn du selbige zufälligerweise als z=0 wählst, dann ist d die z-Koordinate, ja :)

f ist der Abstand des Betrachters von der Projektionsebene. Da musst du ein bisschen rumprobieren, um auf einen annehmbaren Wert zu kommen. Der Abstand von der Projektionsebene beeinflusst auch dein FOV = Field of View. Ist deine Projektionsfläche beispielsweise 100 LE breit, und du befindest dich 50 LE vor dieser Ebene, so hast du ein FOV von 90°.
 
Vielleicht noch ein Bild zur Veranschaulichung... die ganze Situation von oben.

Wenn du jetzt das entsprechende f für ein gegebenes alpha berechnen willst, musst du einfach nach f auflösen und einsetzen...
 

Anhänge

  • fov.png
    fov.png
    2,5 KB · Aufrufe: 1.206
*an-die-stirn-klatsch*
*vormatthias-nieder-knie*

jo, ich habs nun auch hingekriegt. werd mir gleich mal n simples Programm bauen, wo ein Wuerfel gezeichnet wird, und manndie Werte verstellen kann.

Ach ja, in gewisser Weise entspricht d der Z-Koordinate.
Mit d hab ich jetzt festgelegt, wo mein 3D-Koordiantesystem anfaengt.
(z.B. 10 E hinter der Projektionsflaeche). Somit ist d = 10+z;
wenn du es nicht so meintest, ist es mir nun wurscht (nicht persoenlich nehmen), denn es geht ja.
Vielen Dank, den Post werd ich linken :)

MfG
Crock
 

Neue Beiträge

Zurück