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
// 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
Sin und Cos ;)
kannste mal ein kurzes beispiel geben? wo muss ich die werte der kamera übergeben? da ist doch kein drehwinkel angegeben.
danke.
mfg
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
geht wunderbar damit.
werde hier und da noch einmal rumspielen mit dem code.
mfg
Darfst du gerne machen ;)
wie wir dann eine nickbewegung der kamera programmiert?
mfg
Verschieb' einfach die Kamera:
X_CAMERA x,y,z, x-sin(nick)*dist, ycam, z+cos(nick)*dist
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
z+ oops.
die kamera wander von rechts oder nach links, nicht nach oben oder unten !!! woran liegt der fehler?
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
dist =100 statt 1. Viel zu kleiner Abstand