GLBasic forum

Other languages => GLBasic - de => Topic started by: sechsrad on 2008-Feb-24

Title: kamera mit objekt drehen
Post by: sechsrad on 2008-Feb-24
hallo fachleute, ich möchte die kamera mit dem objekt drehen, wie geht das?
habe hier im forum2 beiträge gesehen, waren aber für mich nicht so eindeutig.
die kamera folgt dem objekt schon aber  wie dreht sie sich mit ?

mfg


Code (glbasic) Select
// X: rot
// Y: grün
// Z: blau

LOADSPRITE      "image.bmp",0

X_OBJSTART 1
X_OBJADDVERTEX   20, 0, 20,  0,1, RGB(255,255,255)
X_OBJADDVERTEX   -20,  0, 20,  0,0, RGB(255,255,255)
X_OBJADDVERTEX    20, 0, -20,  1,1, RGB(255,255,255)
X_OBJADDVERTEX    -20,  0, -20,  1,0, RGB(255,255,255)
X_OBJEND

WHILE TRUE

 IF phi>=360 THEN phi=phi-360
 
 X_MAKE3D 1, 1000, 45

 X_CAMERA x+0, y+50, z+50, x,y,z

 X_DRAWAXES 0, 0, 0

 X_SETTEXTURE 0, 0
 X_MOVEMENT x,y,z
 X_ROTATION phi, 0, 1, 0
 X_DRAWOBJ 1, 0

 IF KEY(16) = 1
  phi=phi+0.5
 ENDIF
 IF KEY(18) = 1
  phi=phi-0.5
 ENDIF

 IF KEY(205) = 1
  x=x+0.5
 ENDIF
 IF KEY(203) = 1
  x=x-0.5
 ENDIF

 IF KEY(30) = 1
  y=y+0.5
 ENDIF
 IF KEY(44) = 1
  y=y-0.5
 ENDIF

 IF KEY(208) = 1
  z=z+0.5
 ENDIF
 IF KEY(200) = 1
  z=z-0.5
 ENDIF

 SHOWSCREEN
WEND
Title: kamera mit objekt drehen
Post by: Schranz0r on 2008-Feb-24
Sin und Cos ;)
Title: kamera mit objekt drehen
Post by: sechsrad on 2008-Feb-24
kannste mal ein kurzes beispiel geben? wo muss ich die werte der kamera übergeben? da ist doch kein drehwinkel angegeben.

danke.

mfg
Title: kamera mit objekt drehen
Post by: Schranz0r on 2008-Feb-24
Deshalb ja Sin und Cos, irgendwo in den Codeschnippseln ist ein Beispiel wie das geht !


Siehe da: http://www.glbasic.com/forum/viewtopic.php?id=1147
Title: kamera mit objekt drehen
Post by: sechsrad on 2008-Feb-24
geht wunderbar damit.

werde hier und da noch einmal rumspielen mit dem code.

mfg
Title: kamera mit objekt drehen
Post by: Schranz0r on 2008-Feb-24
Darfst du gerne machen ;)
Title: kamera mit objekt drehen
Post by: sechsrad on 2008-Feb-25
wie wir dann eine nickbewegung der kamera programmiert?

mfg
Title: kamera mit objekt drehen
Post by: Kitty Hello on 2008-Feb-25
Verschieb' einfach die Kamera:

X_CAMERA x,y,z,   x-sin(nick)*dist, ycam, z+cos(nick)*dist
Title: kamera mit objekt drehen
Post by: sechsrad on 2008-Feb-25
damit setze ich ja die kamera (prog ist von schranz0r), ist zb de erste aufruf:
X_CAMERA Cam_X, Cam_Y, Cam_Z,   Cam_X+COS(phiXZ), Cam_Y+SIN(phiXY), Cam_Z+SIN(phiXZ)

dann mus ja dieser aufruf folgen zum nicken der kamera, welche werte kommen denn jetzt hier rein: nick, cma_x, cam_y und cam_z ist klar :
X_CAMERA Cam_X, Cam_Y, Cam_Z,   x-sin(nick)*dist, ycam, z*cos(nick)*dist


aber welche werte kommen hier rein :  x-sin(nick)*dist, ycam, z*cos(nick)*dist ?

warum wird mit z multipliziert? > z*cos(nick)*dist

mfg
Title: kamera mit objekt drehen
Post by: Kitty Hello on 2008-Feb-25
z+ oops.
Title: kamera mit objekt drehen
Post by: sechsrad on 2008-Feb-25
die kamera wander von rechts oder nach links, nicht nach oben oder unten !!! woran liegt der fehler?

Code (glbasic) Select
Global nick
Global dist

IF KEY(31) // S
        nick=nick+0.1
        dist=1
    ENDIF
   
    IF KEY(45) // S
        nick=nick-0.1
        dist=1
    ENDIF  
ENDSUB

SUB X3D_CAM_SET:
X_CAMERA Cam_X, Cam_Y, Cam_Z,   Cam_X-SIN(nick)*dist, Cam_Y, Cam_Z-COS(nick)*dist

ENDSUB
Title: kamera mit objekt drehen
Post by: Kitty Hello on 2008-Feb-25
dist  =100 statt 1. Viel zu kleiner Abstand