Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [DirectX] FOVY/Sichtfeld berechnen (https://www.delphipraxis.net/114038-%5Bdirectx%5D-fovy-sichtfeld-berechnen.html)

.chicken 18. Mai 2008 20:48


[DirectX] FOVY/Sichtfeld berechnen
 
Hi, also ich habe schon wieder ein Problem. Ich muss für meine 2DEngine die Fläche berechnen, die von der Kamera gezeigt wird. Habe nun im Internet nach allem möglichen gesucht, Sinus, Kosinus, Tangens...ich konnte einfach keine Lösung dafür finden.
Delphi-Quellcode:
  D3DXMatrixPerspectiveFovLH(Mat, [b]1[/b], Parent.Width / Parent.Height, 1, 0);
  Parent.Device.SetTransform(D3DTS_PROJECTION, Mat);
Delphi-Quellcode:
  D3DXMatrixLookAtLH(Mat, D3DXVector3(Position.X, Position.Y, [b]-ZoomY[/b]), D3DXVector3(Position.X, Position.Y, 0), D3DXVector3(0, 1, 0));
  Parent.Device.SetTransform(D3DTS_VIEW, Mat);
So setze ich bisher die Kamera. Dabei dachte ich eigentlich, dass wenn ich FOVY auf 1 setze, dann mit einer Kameraentfernung von 1 auch eine Vertikale Fläche mit der Höhe 1 gezeigt wird. Dem ist aber nicht so.

Also FOVY ist ja der Winkel im Bogenmaß, dh Alpha/180*PI. Aber wie ich nun damit berechne wie weit meine Kamera vom Objekt entfernt sein muss, um die bei ZoomY angezeigt Fläche abzudecken weiss ich nicht. Kann mir das bitte wer sagen? ^^ Ist sonst etwas schwer die Kamera genau einzustellen :P

Grüße, chicken

Khabarakh 18. Mai 2008 22:07

Re: [DirectX] FOVY/Sichtfeld berechnen
 
Kleine Zwischenfrage: 2D und perspektivische Projektion? Passt das zusammen :freak: ?

Zum Problem: Das DX-SDK installiert gerade noch *g* , aber aus dem Kopf würde ich für
Zitat:

Zitat von .chicken
[...], dann mit einer Kameraentfernung von 1 auch eine Vertikale Fläche mit der Höhe 1 gezeigt wird.

auf 2 * arctan(.5) tippen (eine kleine Zeichnung sollte beim Verstehen helfen). Dürfte[*] sich auch mit yScale = cot(fovY/2) decken.
[*]Zu dieser Uhrzeit lieber keine Absolutismen :mrgreen: .

.chicken 19. Mai 2008 05:09

Re: [DirectX] FOVY/Sichtfeld berechnen
 
Danke, wenn ich heute Abend auser Schule wieder da bin, teste ich das.
Zu deiner ersten Frage. Wie sollte ich es denn stattdessen machen? Gibt es noch ne andere Projektionsmöglichkeit?

Grüße und Danke, .ch!cken

Khabarakh 19. Mai 2008 10:08

Re: [DirectX] FOVY/Sichtfeld berechnen
 
In einer 2D-Engine wird der Z-Wert doch nur benutzt, um die Reihenfolge der Sprites festzulegen, ein oben liegendes Sprite soll dadurch ja nicht größer werden. Also würde ich mal eine Parallelprojektion vorschlagen => http://msdn.microsoft.com/en-us/library/bb205347(VS.85).aspx

.chicken 19. Mai 2008 17:21

Re: [DirectX] FOVY/Sichtfeld berechnen
 
Och super, das macht die Sache ja viel einfacher. Danke dir :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz