Cameraviewport problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

shootermaker

Betreff: Cameraviewport problem

BeitragSa, März 07, 2009 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.
Seht euch bitte mal dieses Code-Beispiel an:

Code: [AUSKLAPPEN]

Graphics3D 640,480,16,2

cam = CreateCamera()
PositionEntity cam,0,0,-200
CameraProjMode cam,2
CameraZoom cam,1.0/320.0
CameraViewport cam,0,0,400,200
tex = CreateTexture(128,128)
SetBuffer TextureBuffer(tex)
ClsColor 55,110,50
Cls

SetBuffer BackBuffer()

ent = CreateCube()
ScaleEntity ent,2,2,2
EntityColor ent,255,55,210

pitch# = 0.0
x# = 0

WireFrame 0

Repeat
Cls

If KeyHit(200) y = y + 20
If KeyHit(208) y = y - 20
If KeyHit(203) x = x - 20
If KeyHit(205) x = x + 20

PositionEntity ent,x,y,0
RotateEntity ent,pitch,0,0

UpdateWorld()
RenderWorld()

Flip
Until KeyHit(1):End


(Pfeiltasten zum bewegen)

Wenn ihr ihn ausführt werdet ihr sehen, dass sich der cube(rosa punkt) in der größe beim bewegen verändert.

Weiß jemand wie man das problem beheben könnte?
Wenn ich cameraviewport weglasse funktioniert es. ich möchte aber dieses System als Minimap benutzen.

Vielen Dank im Voraus.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, März 07, 2009 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
CameraZoom cam,1.0/200.0
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

shootermaker

BeitragSa, März 07, 2009 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
hectic hat Folgendes geschrieben:
CameraZoom cam,1.0/200.0


Hallo,
Danke Smile
Das mit dem CameraZoom ist alles schön und gut, aber wenn ich die größe des cameraviewports verändere(also die größe der minimap) kann das problem wieder auftreten... die frage ist also warum funktioniert /200 bei dem beispiel aber bei einer anderen größe der minimap ist es wieder ganz ein anderer Wert?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, März 07, 2009 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz einfach, bei einer Kameraprojektion muß immer die hälfte der Bildschirmbreite ein Objekt nach hinten positioniert werden, damit es 1:1 (eine Einheit : ein Pixel) bewegt werden kann. In deinem Fall hast du aber lieber den Weg über CameraProjMode = 2 gewählt. Hier spielt die Z-Position keine eine Rolle, es muß lediglich vor der Kamera positioniert werden und innerhalb der CameraRange sich aufhalten. Dafür hast du aber über CameraZoom nun keine 1:1 Stellung hingebommen. Allerdings mit dem Zusatz von CameraViewPort. Da aber hier nicht mehr die Auflösung, sondern das Viewport als Bezug genommen werden muß, nimmst du einfach die hälfte der Viewport-Breite. Also 1.0/200.0

Denn die Projektionen sind gleich ob du nun Graphics 800,600 nimmst, oder Graphics 1024,768 und CameraViewPort 800,600. Klar? Beide haben letztendlich die Breite 800 Einheiten.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

shootermaker

BeitragSa, März 07, 2009 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, hectic!
Super Erklärung! Habs verstande, im code eingebaut und funktioniert natürlich. Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group