Aus 2d Koordinaten die 3d Koordinaten berechnen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Blitzprogger

Betreff: Aus 2d Koordinaten die 3d Koordinaten berechnen

BeitragMi, März 10, 2010 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Wink

Progger93

BeitragMi, März 10, 2010 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, März 10, 2010 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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
bildschirm_y = (GraphicsHeight() - GraphicsWidth() * camera_y  / 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.

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

BeitragDo, März 11, 2010 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Wink

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group