carl
Nombre de messages : 6 Date d'inscription : 14/08/2010
| Sujet: camera 3d Lun 16 Aoû 2010 - 16:02 | |
| voici un essai de manipulation de la camera avec un système de collision très basic pas tout a fait au point mais qui seras amélioré certainement grâce au prochaines version de Panoramic je l'espère. je cherche la solution pour que les axes ne s'inversent pas par rapport aux touches - Code:
-
dim dxx,dxy,x_sphere,y_sphere,z_sphere,camerax,cameray,cameraz,speed,speedcam ,backx,backy,backz,x,origin,z dxx = screen_x : dxy = screen_y : width 0,dxx : height 0,dxy : caption 0,"" scene3d 1 : height 1,dxy : width 1,dxx : left 1,0 : top 1,0 :full_space 1 : axes_show speed =.1 : speedcam = speed/2 : origin = -20 3d_sphere 2,1 3d_color 2,250,0,0 for x = 5 to 30 3d_cube x,1 3d_x_position x,origin +rnd(40) : 3d_y_position x,origin +rnd(40) : 3d_z_position x,origin +rnd(40) next x while scancode <> 27 caption 0,"utiliser les touches fléches et page up/pagedown , echap pour quitter " if scancode = 38 : x_sphere = x_sphere + speed : end_if if scancode = 40 : x_sphere = x_sphere - speed : end_if if scancode = 33 : y_sphere = y_sphere + speed : end_if if scancode = 34 : y_sphere = y_sphere - speed : end_if if scancode = 39 : z_sphere = z_sphere + speed : end_if if scancode = 37 : z_sphere = z_sphere - speed : end_if 3d_x_position 2,x_sphere : 3d_y_position 2,y_sphere : 3d_z_position 2,z_sphere if o3d_x_position(2) > camerax : camerax = camerax + speedcam : end_if if o3d_x_position(2) < camerax : camerax = camerax - speedcam : end_if if o3d_y_position(2) > cameray : cameray = cameray + speedcam : end_if if o3d_y_position(2) < cameray : cameray = cameray - speedcam : end_if if o3d_z_position(2) > cameraz : cameraz = cameraz + speedcam : end_if if o3d_z_position(2) < cameraz : cameraz = cameraz - speedcam : end_if backx = -4 : backy = 0 cam_position camerax+backx,cameray+backy,cameraz+backz point_position o3d_x_position(2), o3d_y_position(2),o3d_z_position(2) for x = 5 to 30 if int(o3d_x_position(x)) = int(o3d_x_position(2))and int(o3d_y_position(x)) = int(o3d_y_position(2)) and int(o3d_z_position(x)) = int(o3d_z_position(2)) 3d_color x,250,0,0 end_if next x end_while terminate
| |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: camera 3d Lun 16 Aoû 2010 - 16:40 | |
| Excellente démonstration,
Je suis épaté de voir le résultat avec un si petit code.
A+ | |
|
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Lun 16 Aoû 2010 - 19:30 | |
| Eh, ça s'est modernisé, la cadre de réponse... @carl : c'est effectivement très beau et ça donne des idées de programmes en 3d (difficiles) En tout cas, c'est intéressant de voir comment fait quelqu'un qui programme différemment (et surtout qui sait bien programmer en 3d !) Bravo, carl ! | |
|