Orthographische Projektion - Zoomfaktor
Übersicht

funkmaster5000Betreff: Orthographische Projektion - Zoomfaktor |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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! |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Als kleine Anmerkung:
Der "Start"-Wert also die minimale Renderdistanze die man mit BlitzBasic: [AUSKLAPPEN] CameraRangesetzt beeinflusst die Zoombreite. Der abgebildete Bereich ist Zoom*MinDistanz in beide Richungen breit. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group