Diesmal Draw3D2 und Orthogonal :-)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Chrise

Betreff: Diesmal Draw3D2 und Orthogonal :-)

BeitragDi, Jun 08, 2010 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich weiß, ich hatte die selbe Frage schoneinmal bezüglich Draw3D Version 1 gestellt. Allerdings hat sich seit Draw3D2 irgendwie der Aufbau der Technik geändert, sodass ich die damalige Lösung von Hectic nicht mehr umsetzen kann.

Wie kann ich die Projektion nun umstellen, dass Bilder noch richtig, trotz orthogonaler Darstellung gezeichnet werden? Geht das überhaupt irgendwie?

Wäre eine Funktion wie DrawProjMode3D(Camera,Mode) nicht eine Überlegung Wert?

Vielen Dank für Antworten und Hilfe! Smile

lg Chrise
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jun 08, 2010 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Kein Problem. Mach folgendes:

In der Draw3D2.bb änderst du bitte folgende Konstante nach 0
Code: [AUSKLAPPEN]
Const AUTOFLUSHFACE%=0 ;AUTO/FLUSHFACE3D<1/0>


und merkst du dir den Wert in der Draw3D2.bb bei
Code: [AUSKLAPPEN]
Const DRAWDISTANCE%=800 ;DRAWING/DISTANCE


Die (in diesem Beispiel =800) stellst du dann in deinem Code wie folgt ein:

Code: [AUSKLAPPEN]
CameraProjMode Camera,2
CameraZoom Camera,1/800.0


- - -

Die Konstante FLUSHFACE3D ''reinigt'' ein Surface beim laden einmal automatisch ab. Das läuft so ab, gleich nach dem laden das Surface einmal komplett bis zum maximum erstellt und wieder gelöscht wird. Das hebt einen Blitz3D-Bug auf, der bei vielen Partikeln des selben Surfaces zu abstürzen führen kann. Leider - hab ich bemerkt - stockt das Programm sehr, wenn man das aktiv hat und zeitgleich orthographische Projektion geschaltet hat.

Die Konstante DRAWDISTANCE dagegen, gibt die Entfernung an, in der das Surface (=0) von der Kamera entfernt gezeichnet wird. Es ist also der Wert, der CameraRange umschliessen muß. Dieses variabel gehalten verhindert bei Spaceshootern, dass die Zeichenungenauigkeit bei großer Entfernung aus der Position 0,0,0 wegen Rundungsfehler der Grafikkarte, das Surface nicht anfängt zu ''zittern''. Die Draw3D2 gibt also mehr Kontrolle dem Programmierer gegenüber der älteren Draw3D V.3.2.

- - -

Bei weiteren Problemen immer her mit den Fragen.

Edit1:

Wenn du bereits ein festgelegtes CameraZoom benötigst, kannst du entweder mit der Konstante DRAWDISTANCE spielen, oder alle Surfaces über CreatePivot3D laufen lassen. Denn da kannst du auch das Surface manuell skallieren (letzter Parameter).
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Chrise

BeitragMi, Jun 09, 2010 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool! Vielen Dank, hat wunderbar funktioniert!
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

faeX

BeitragMi, Jun 23, 2010 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wollte jetzt keinen neuen Thread aufmachen, und da sich die Fragen recht ähnlich sind: Wie positioniere ich die Camera pixelperfekt? Also mit PositionEntity Camera.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jun 23, 2010 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum Beispiel über:
1:1 Code: [AUSKLAPPEN]
Handle=CreatePivot3D(0, 0,0,GraphicsWidth()/2, 0,0,0, 1)

1:10 Code: [AUSKLAPPEN]
Handle=CreatePivot3D(0, 0,0,GraphicsWidth()/20, 0,0,0, 0.1)

1:100 Code: [AUSKLAPPEN]
Handle=CreatePivot3D(0, 0,0,GraphicsWidth()/200, 0,0,0, 0.01)

1:1000 Code: [AUSKLAPPEN]
Handle=CreatePivot3D(0, 0,0,GraphicsWidth()/2000, 0,0,0, 0.001)

Das erste Beispiel ermöglicht eine 1:1-Steuerung. Das heißt, eine Welteinheit gleich ein Pixel. Problematisch wird es jedoch erst, wenn man 3D-Kollisionen (bei 2D-Darstellung) verwendet, und die Kamera jenseits einer Position von +/- 4000 in X/Y sich befindet. Denn dann spielt die Kollision immer mehr und mehr verrückt. In solchen Fällen sollte man dann eine kleinere Skalierung verwenden, die über die Weltgrenzen nicht über +/- 4000 hinaus geht. Die Kamerabewegung muss dann natürlich entsprechend runter gerechnet werden. Also /10, /100 ...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group