Orthographische Projektion - Zoomfaktor

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

funkmaster5000

Betreff: Orthographische Projektion - Zoomfaktor

BeitragDo, März 03, 2016 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo an alle,

ich stehe im Moment ziemlich auf dem Schlauch. Ich nutze Blitz3D für ein 2D Game und habe dafür auf Orthographische Projektion umgeschaltet, mit empfohlenem 0.1 CameraZoom. Das funktioniert in der Auflösung 640x480 (dafür ist das Spiel optimiert) prima, denn die Szene ist ja fertig eingestellt und alles ist positioniert. Ich möchte dem Spieler aber die Möglichkeit geben, die Auflösung zu verändern. Damit ändert sich allerdings auch der benötigte Zoomfaktor. Nur um welchen Wert? Sicher kann ich jede Auflösung durchprobieren, mit der Plus und Minus Taste den Zoom um 0.001 verringern, bis es richtig aussieht und alles in einer Ini hinterlegen. Aber wofür habe ich denn einen RECHNER, der liebenswerterweise solche Aufgaben übernimmt?

Ich bekomme nur irgendwie den Faktor nicht heraus Rolling Eyes

So sieht alles richtig aus (ausprobiert), aber wie komme ich von 640x480x0.1 auf 1920x1080x0.075 und all die möglichen Auflösungen dazwischen?

Code: [AUSKLAPPEN]
Const zoom_640# = 0.1
Const zoom_1920# = 0.075


Vielen Dank im Voraus!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, März 03, 2016 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Orthographisch ist nicht zwangsweise notwendig. Aber egal. Folgender Code sollte weiter helfen:

Code: [AUSKLAPPEN]
;Graphics3D 800,400,0,2
;Graphics3D 400,800,0,2
Graphics3D 1920,1080,0,2
;Graphics3D 640,480,0,2

Local KurzeSeiteInEinheiten#=10

SetBuffer FrontBuffer()
Local camera=CreateCamera()
PositionEntity camera,0,0,-10
CameraProjMode camera,2
CameraZoom camera,KurzeSeiteInEinheiten/(GraphicsWidth()*0.5)

PositionEntity CreateCube(),-2,+2,0
PositionEntity CreateCube(),+2,+2,0
PositionEntity CreateCube(),0,0,0
PositionEntity CreateCube(),-2,-2,0
PositionEntity CreateCube(),+2,-2,0

RenderWorld
WaitKey

Die Variable KurzeSeiteInEinheiten gibt die Anzahl Einheiten an, die eine Weltkoordinate in Pixel einnehmen soll. Im Umkehrschluss kann man natürlich auch einfach eine 1 eintragen, dann nimmt eine Weltkoordinate genau einen Pixel ein. Oder man trägt einfach eine 1080 ein, so kann man auf FullHD coden, egal welche Bildschirmauflösung tatsächlich geladen wird. Allerdings erscheinen dann auf anderen Auflösungen die Sachen unscharf. Logisch.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

funkmaster5000

BeitragFr, März 04, 2016 9:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für deine schnelle und gute Erklärung.

hectic hat Folgendes geschrieben:
Orthographisch ist nicht zwangsweise notwendig.

Hmm wieso nicht? Sagen wir, ich nutze einen texturierten Würfel und ändere die Höhe der Kamera. Dann sehe ich die Oberseite vom Würfel. Den Würfel nutze ich für die Kollisionsabfrage, daher kann ich nicht so komfortabel mit Billboards/Quads arbeiten.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, März 04, 2016 12:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich stelle gerade fest, dass meine wörtliche Erklärung fehlerhaft war. Aber der Code sollte erklärend sein. Haptsache, es hat geholfen.

Eine Sache will ich aber mal einbringen. Wenn du einen texturierten Würfel als Plattform nutzen möchtest, stellt es erst einmal kein Problem dar. Ich vermute aber mal, dass es nicht bei ein paar bleiben wird und du womöglich einen ganzen Level damit erstellen willst. Hier kann ich dir sagen, dass es eine schlechte Idee ist... Denn, jedes Cube ist ein Entity welches dann auch einzeln bearbeitet wird. Sofern die Cubes dann Tiles ersetzen sollen, gute Nacht. Hier bietet sich eine einfache 'Engine' die das ganze als Single-Surface erstellt. Sowohl für den texturierten Hintergrund, wie auch für die Kollisionslinien. Ist am Ende keine Große Sache und du hast alle Möglichkeiten offen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Kruemelator

BeitragFr, März 04, 2016 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Als kleine Anmerkung:
Der "Start"-Wert also die minimale Renderdistanze die man mit BlitzBasic: [AUSKLAPPEN]
CameraRange
setzt beeinflusst die Zoombreite. Der abgebildete Bereich ist Zoom*MinDistanz in beide Richungen breit.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group