Aus 2d Koordinaten die 3d Koordinaten berechnen
Übersicht

![]() |
BlitzproggerBetreff: Aus 2d Koordinaten die 3d Koordinaten berechnen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Ich wollte nun ein Menu für mein Spiel erstellen und dieses soll "3d" sein, weil es schneller ist. Dafür wollte ich die Bildschirmbreite und -höhe in je 100 Teile (Prozent) einteilen mit denen man dann unabhänging von der Auflösung als Koordinatensystem hantieren kann. Wenn ich aber nun ein Quadrat / Sprite oder so habe und das von 0|0 zu 100|100 führen soll (also den ganzen Bildschirm ausfüllen), wie muss ich die Positionen der Vertices berechnen, dass unabhängig von Kamerawinkel das Menu richtig angezeigt wird? Ich hoffe ihr könnt mir helfen. mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
Progger93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verwende doch einfach die Draw3D von Hectic. Die kann so ziehmlich alles 2D, zeichnet dies aber mit Single-Surface in 3D was nochmal ordentlich schneller ist als sprites, etc.
MfG Pascal |
||
MfG Pascal
Win 7|T7250@2.0Ghz|3GB RAM|M8600GT |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dennoch nochmal kurz zur Frage selbst:
Perspektivische 3d-Grafik benutzt (in Blitz3d zumindest...) folgende recht simple Gleichung, um 3d-Koordinaten auf den Bildschirm zu projezieren, (hoffentlich vertue ich mich gerade nicht an der ein oder anderen Stelle...) Code: [AUSKLAPPEN] bildschirm_x = (GraphicsWidth() + GraphicsWidth() * camera_x / camera_z) / 2
Wobei bildschirm_x für die X-Koordinate des Punktes aufm Bildschirm und camera_x,z für die Koordinaten des Punktes im echten 3d-Raum stehen sollen.
bildschirm_y = (GraphicsHeight() - GraphicsWidth() * camera_y / camera_z) / 2 Diese Gleichung kannste nun beliebig Umstellen, wie mans in der Schule gelernt hat, um rauszufinden, welche 3d-Koordinaten du einem Punkt geben musst, um ihn an ner bestimmten Stelle aufm Bildschirm zu haben. Zum Beispiel empfiehlt es sich, solche GUI-Elemente an ein Pivot zu hängen, das Child der Kamera ist. In deinem Fall bietet es sich dann an, das Pivot an -50,ratio*50,50 zu positionieren und mit 1,ratio,1 zu skalieren, wobei ratio#=GraphicsHeight()/GraphicsWidth(). Dann sollte dein Bildschirm-Bereich von 0,0 bis 100,-100 gehen... (Was aber in vielerlei Hinsicht doof ist... Es sieht meist echt kacke aus, wenn die GUI mit-skaliert, besonders Schrift verändert ihre Gestalt völlig. Zwischen 5:4 und 16:9 liegen Welten. Lieber solltest du deine Elemente so clever positionieren, dass sie bei beliebigem Seitenverhältnis ein sinnvolles Layout ergeben, ohne verzerrt zu werden. |
||
MrKeks.net |
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich werde mir die Draw3D ansehen da sie von der Bedienung her mehr den 2dbefehlen ähnelt.
Vielen Dank. mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group