FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Bataille navale SM
Perdu dans l'espace Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
Perdu dans l'espace Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
Perdu dans l'espace Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Perdu dans l'espace Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Perdu dans l'espace Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Perdu dans l'espace Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Perdu dans l'espace Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Perdu dans l'espace Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Perdu dans l'espace Emptypar papydall Dim 21 Avr 2024 - 23:30

» Form
Perdu dans l'espace Emptypar leclode Dim 21 Avr 2024 - 18:09

» trop de fichiers en cours
Perdu dans l'espace Emptypar Marc Dim 21 Avr 2024 - 2:41

» 2D_fill_color(résolu)
Perdu dans l'espace Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Perdu dans l'espace Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Perdu dans l'espace Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Perdu dans l'espace Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-45%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
339 € 622 €
Voir le deal

 

 Perdu dans l'espace

Aller en bas 
+4
Jean Claude
JL35
papydall
treehouse
8 participants
AuteurMessage
treehouse

treehouse


Nombre de messages : 28
Localisation : UK
Date d'inscription : 21/10/2013

Perdu dans l'espace Empty
MessageSujet: Perdu dans l'espace   Perdu dans l'espace EmptyMer 6 Nov 2013 - 21:37

Bonjour, voici mon jeu d'aventure de l'espace 3D ! C'est un long post et une assez longue programme. Je n'ai pas traduit les commentaires de code.

La scène est basé sur le jeu "Elite" pour la BBC Micro (et d'autres machines). Dans l'original, on ne peut que tourner votre vaisseau de haut en bas et autour de l'axe de déplacement (qui a fait pour certaines manœuvres intéressantes), mais j'ai ajouté un contrôle de tourner à gauche et à droite. Bien sûr, vous pouvez changer le scancode en fonction de vos préférences.

Haut, bas, gauche et droite, par la position du curseur de la souris. Les touches fléchées permettent un contrôle supplémentaire pour haut et bas, et tourner autour de l'axe de déplacement. La touche shift gauche est l'accélérateur, touche de commande gauche est le frein ou la direction inverse. En outre, les touches Q, A et Z choisissent haute, moyenne et faible accélération. Pour arrêter complètement, appuyez sur ESPACE.

ship% est l'indice de notre objet de vaisseau, qui est un rectangle plat. Ceci est nécessaire pour vérifier les collisions. La station spatiale tourne continuellement, afin d'accoster avec lui, vous devez aligner votre vaisseau et tourner avec soin pour correspondre à sa rotation. Il ya aussi un autre vaisseau, une soucoupe volante extraterrestre.

Pour l'instant, au début, la station spatiale est «en orbite» autour de la planète d'origine (le seul avec l'atmosphère), et nous sommes quelque part près de la station spatiale, afin que nous puissions avoir à tourner à voir. Dans le même temps, l'extraterrestre commence déplacement de la station vers nous.

Je travaillerai prochaine sur les mathématiques pour contrôler le(s) extraterrestre(s). Cela peut être "pas cher" et approximative, et je pense que j'ai une bonne idée de comment faire cela.

Cependant, j'ai un problème. Contrôler notre vaisseau doit être plus précise et la caméra doit se déplacer avec l'objet exactement. Quand j'ai appris cam_move, cam_turn, cam_roll, etc, je pensais que cela pourrait fonctionner, mais il se pose une divergence entre la position de l'objet et de la caméra au fil du temps. Voler autour pendant un moment et vous verrez la boîte rectangulaire à l'extérieur.

Il est possible de placer la caméra à plusieurs reprises à la position de l'objet avec cam_x_position etc, mais je ne peux pas le faire pointer dans la bonne direction (le long de l'axe Z local). Ce serait merveilleux si l'on pouvait écrire "cam_z_point N" pour aligner la caméra avec l'axe Z de l'objet N, ou s'il y avait une autre façon de maintenir l'alignement exact de la position et l'orientation de la caméra avec un objet choisi.

Une autre idée serait d'abandonner l'aide d'un objet pour le vaisseau, et calculer les collisions mathématiquement, mais cam_move etc ne pas maintenir la position absolue. Je tiens aussi à garder des positions absolues des objets dans le système de coordonnées de la scene3D pour d'autres calculs - gamme et la portée des objets, etc.

La seule solution que je vois va impliquer mathématiques complexes. Rotations 3D ne sont pas commutative, il est donc difficile de maintenir la connaissance des coordonnées des objets.

Toute aide serait génial.
Merci,
Treehouse

Code:
' Elite - based on the '80s BBC Micro game

label action,fin,noseup,nosedown,rollleft,rollright,accel,decel

' number of planets
Dim N%: N%=8
dim j%,ship%,sol%,halo1%,halo2%,s,m,n,o
' angles a,b, t=pitch step & u=roll step (mt & ut for mouse)
dim a,b,t,u,mt,mu
' Space station object indices & variables
dim stn%,shome,stnrot,stnspk1%,stnspk2%,stnring%,stnhub%,stndoor%,hubhit%,doorhit%
' Alien indices & vars
dim aliendisc%,alienbridge%,ala,alaxis
' constants
dim pi : pi=3.14159264
' Arrays for planets' positions x,y,z, orbital radius r
dim x(N%+2),y(N%+2),z(N%+2),r(N%+2)
' Ship's variables: position,speed,speed increment,rotations
dim sx,sy,sz,sp,boost,xrot,yrot,zrot

sp=0:boost=0.001:stnrot=0:xrot=0:yrot=0:zrot=0
doorhit%=0:hubhit%=0 : ' docking/crash detection
t=0.5 : ' pitch increment
u=1 : ' roll increment

 full_space 0
' height 0,570
' width 0,870

scene3d 1:full_space 1
cursor_cross 1
' Sun is light source, at origin, therefore,
light_position 0,0,0
' It's in space!
color 1,0,0,0

3d_skybox 2
' 3d_load_texture_bottom 2,"Bitmaps\stars.bmp"
' 3d_load_texture_top 2,"Bitmaps\stars.bmp"
' 3d_load_texture_left 2,"Bitmaps\stars.bmp"
' 3d_load_texture_right 2,"Bitmaps\stars.bmp"
' 3d_load_texture_front 2,"Bitmaps\stars.bmp"
' 3d_load_texture_back 2,"Bitmaps\stars.bmp"

' Planets created first to keep array index (j%) low without offset. Further object indices will be relative to end of array.
for j%=3 to N%+2 : ' 3 because of frame(0), scene3d(1), skybox(2); N%+2 as arrays start at zero.
   a = rnd(pi*1000)/500 : ' Full circle in radians
   r(j%)=rnd(100000)+5000 : ' solar systems are BIG!
   x(j%)=r(j%)*cos(a) : ' Circular coordinate
   y(j%)=(rnd(2000)-1000)/20 : ' A random offset from plane
   z(j%)=r(j%)*sin(a) : ' Circular coordinate
   s = power(r(j%),1.3)/10000 : ' size of planet
   caption 0,s : ' just to check
   3d_sphere j%,s
   3d_position j%,x(j%),y(j%),z(j%)
   3d_color j%,rnd(40),rnd(40),rnd(40)
   ' special home planet first:
   if j%=3
'      3d_load_texture j%,"Bitmaps\planet.bmp"
      shome=s*2 : ' radius of station rel. to size of planet (smaller=easier to find)
      3d_sphere j%+100,s*1.03 : ' safe index offset for (& may have others with) atmosphere
      3d_position j%+100,x(j%),y(j%),z(j%)
      3d_color j%+100,20,20,155
      3d_transparent j%+100,180
    end_if
next j%

' Sun
sol%=j%+1
3d_sphere sol%,800
3d_color sol%,255,245,50

halo1%=sol%+1
3d_sphere halo1%,900
3d_color halo1%,255,210,140
3d_transparent halo1%,190

halo2%=sol%+2
3d_sphere halo2%,1500
3d_color halo2%,255,55,140
3d_transparent halo2%,240

' Initialise spaceship coordinates near space station (for now)
sx=x(3)+shome+rnd(100)-50:sy=y(3)+shome+rnd(100)-50:sz=z(3)+shome+rnd(100)-50

ship%=sol%+3 : ' required for collision detection
3d_box ship%,0.8,0.2,0.8 : ' wide,thick,long
3d_position ship%,sx,sy,sz
' Pointing box at 0,0,0 (object sol%) so that camera is lined up with its Z.
3d_point_object ship%,sol%
' 3d_load_texture ship%,"Bitmaps\flare.bmp"
3d_color ship%,255,0,0

' Several concentric parts of the station follow:
stn%=sol%+4
3d_dodecahedron stn%
3d_scale stn%,3,3,3
' 3d_color stn%,55,55,40
3d_position stn%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stn%,3

' Spokes
stnspk1%=sol%+5
3d_box stnspk1%,0.8,20,0.1
' 3d_color stnspk1%,255,255,240
' 3d_color stnspk1%,100,100,50
' 3d_load_texture stnspk1%,"Bitmaps\mcheck4.bmp"
3d_position stnspk1%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stnspk1%,3

stnspk2%=sol%+6
3d_box stnspk2%,20,0.8,0.1
' 3d_color stnspk1%,255,255,240
' 3d_color stnspk2%,100,100,50
' 3d_load_texture stnspk1%,"Bitmaps\mcheck4.bmp"
3d_position stnspk2%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stnspk2%,3

' Ring
stnring%=sol%+7
3d_torus stnring%,10,0.5
3d_position stnring%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stnring%,3

' Cylinder hub
stnhub%=sol%+8
3d_cylinder stnhub%,3,1.3,1.3
3d_position stnhub%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stnhub%,3
3d_x_rotate stnhub%,90

' Box to give illusion of door (bug?: color 0,0,0 does not cover all sides)
stndoor%=sol%+9
3d_box stndoor%,0.3,1.3,3.01 : ' height,width,>cylinderlength
3d_position stndoor%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stndoor%,3
3d_color stndoor%,100,100,1
3d_transparent stndoor%,80

' Alien flying saucer
aliendisc%=sol%+10
alienbridge%=sol%+11
3d_sphere aliendisc%,1
3d_sphere alienbridge%,0.25
3d_y_scale aliendisc%,0.06
3d_y_scale alienbridge%,0.6
' Init at space station for now
3d_position aliendisc%,x(3)+shome,y(3)+shome,z(3)+shome
3d_position alienbridge%,x(3)+shome,y(3)+shome,z(3)+shome
3d_color aliendisc%,20,60,50
3d_color alienbridge%,10,40,70

' Initialize objects for collision
3d_collision_as_faces ship% : ' Idea is to rotate ship so that its wide shape fits in door!
3d_collision_as_faces stnhub% : ' Also need all other parts added
3d_collision_as_faces stndoor% : ' The good one to hit

' Point the alien at us
3d_point_object aliendisc%,ship%:3d_point_object alienbridge%,ship%

' View from inside space ship; we will move/rotate both together
cam_position sx,sy,sz

' MAIN LOOP (Timer)
' -=-=-=-=-=-=-=-=-=-=-
' on_close 0,fin
timer 99
timer_interval 99,10
on_timer 99,action

' === This steps back so you can see the ship for testing
' cam_move -1.5
' =================

end

' =====================

action:
   timer_off 99 : ' Not to trigger repeat in loop.
   select scancode
      case 38:gosub nosedown: ' up key (some may prefer opposite)
      case 40:gosub noseup: ' down key
      case 37:gosub rollleft: ' left key
      case 39:gosub rollright: ' right key
      case 81:boost=0.1: ' Q - fast acceleration & decel.
      case 65:boost=0.01: ' A - medium
      case 90:boost=0.001: ' Z - fine
      case 160:gosub accel: ' left shift
      case 162:gosub decel: ' left control
      case 32:sp=0: ' SPACE, dead stop (temporary cheat!)
      case 27:goto fin: ' ESCAPE (Why the warning beep from system?)
   end_select
   ' Rotate ship & cam on mouse position
   mt=2*(mouse_y_position(1)-height(1)/2)/height(1)
   mu=2*(mouse_x_position(1)-width(1)/2)/width(1)
   xrot=xrot-mt
   yrot=yrot-mu
   3d_x_rotate ship%,xrot : ' Object rotations are absolute
   3d_y_rotate ship%,yrot
   cam_pitch -1*mt        : ' Camera rotations are relative
   cam_turn mu
'   caption 0,"Pitch: "+str$(mt)+"   -   Yaw: "+str$(mu)

   ' Continually rotate space station
   3d_z_rotate stn%,stnrot
   3d_z_rotate stnspk1%,stnrot
   3d_z_rotate stnspk2%,stnrot
   3d_z_rotate stnring%,stnrot
   3d_z_rotate stndoor%,stnrot
   stnrot=wrap_value(stnrot+0.5): ' Is this necessary?
  
  ' Move ship & cam according to current speed
   cam_move sp
   3d_move ship%,sp

   ' MOVE ALIEN (choose random angle & axis)
   ala=ala+(rnd(200)-93)/1000 : ' odd calc due to bias in random if use rnd(2)-1, tweak neg number for stable direction
   alaxis=rnd(2) : ' Just choose an axis to rotate round at random
   select alaxis
      case 0 : 3d_x_rotate aliendisc%,ala:3d_x_rotate alienbridge%,ala
      case 1 : 3d_y_rotate aliendisc%,ala:3d_y_rotate alienbridge%,ala
      case 2 : 3d_z_rotate aliendisc%,ala:3d_z_rotate alienbridge%,ala
   end_select
   3d_move aliendisc%,0.05:3d_move alienbridge%,0.05

   ' TESTS
   ' Docking or collision with space station?  (Not perfect, but works, need other objects tested too)
   if o3d_collision(ship%,stndoor%)=1 then doorhit%=1
   if o3d_collision(ship%,stnhub%)=1 then hubhit%=1
   if hubhit%=1 : ' Can't avoid hitting hub, but...
      if doorhit%=0 then message "Crashed!":return : ' ...Missed door.
      if doorhit%=1 then message "Successfully docked!":return : ' ...hit door.
   end_if
   display
   timer_on 99
return


noseup:
   cam_pitch t
   xrot=xrot+t
   3d_x_rotate ship%,xrot
return

nosedown:
   cam_pitch -1*t
   xrot=xrot-t
   3d_x_rotate ship%,xrot
return

rollleft:
   cam_roll u
   zrot=zrot-u
   3d_z_rotate ship%,zrot
return

rollright:
   cam_roll -1*u
   zrot=zrot+u
   3d_z_rotate ship%,zrot
return

accel:
   sp=sp+boost
   caption 0,sp
return

decel:
   sp=sp-boost
   caption 0,sp
return

fin:
   terminate
'  ^^^^^^^^^
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6996
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyMer 6 Nov 2013 - 22:03

Hello treehouse   Perdu dans l'espace Text1343

Perdu dans l’espace mais les pieds sont sur terre !
Merci pour ce programme qui est très prometteur.
Je pense que Bignono (le spécialiste 3D) va pouvoir y intégrer quelques améliorations ou autres idées.

Nous avons gagné en ta personne un bon Panoramicien.
Tous mes encouragements.
Continue ainsi et amuse-toi bien : Panoramic est formidable !


Dernière édition par papydall le Jeu 7 Nov 2013 - 0:40, édité 1 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Invité
Invité




Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyMer 6 Nov 2013 - 22:31

Bonsoir Treehouse
Impressionnant ! Çà commence fort.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyMer 6 Nov 2013 - 22:39

Bonsoir treehouse,
Oui j'allais dire comme cosmos, joli programme, très réactif, et en si peu de lignes.
C'est très prometteur, bravo !
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 7:50

BRAVO je suis impatient de voir la suite.

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 11:00

Je n'ai pas encore testé, vu que l'intervention pour mon ADSL a été repoussée à vendredi ... mais en tout cas merci pour ce premier partage Wink
Je suis sûr que j'y prendrais plaisir.
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 13:57

Bonjour treehouse, Very Happy 

Que dire? Que ton programme est excellent et que je n'aurais certainement pas fait mieux!!!
Maintenant, je comprend mieux ta question sur 3d_chain! Pouvoir chainer tous les éléments de la station orbitale ensemble, aurait pu économiser plusieurs lignes de code. Mais chainer un dodecahedron avec un box ou un torus ou alors un box avec un cylindre, etc... n'est pas possible. C'est l'accès violation assuré! Je ne vois qu'une seule solution, concevoir la station dans un programme de modèlisation 3D (comme wings3D ou blender, mais il en existe plein d'autres) et enregistrer l'objet 3D ainsi créé en un mesh 3ds. Ainsi, il n'y a plus qu'un seul objet 3D à controler dans le programme.
Pour ce qui est de contôler ton vaisseau (ship%, le 3d_box rouge), effectivement, il sort du champ de la caméra au bout d'un moment. J'avais déjà remarqué cela et toute mes tentatives pour y remédier sont restées vaines. Je crois me souvenir que Jack avait dit qu'avec les commandes cam_pitch, cam_turn, cam_roll, cam_move les mouvements de la caméra étaient trop saccadés. Ceci explique peut-être le problème de sortie du champ de vision. En plus je crois qu'il avait dit qu'il n'était pas bon d'utiliser les touches flèchées (scancode 38 à 40) pour contrôler la camera.
Je ne vois qu'une seule solution, si tu veux diriger ton vaisseau et la caméra avec les touches fléchées, c'est d'utiliser cam_position avec des calculs plus complexes. Il faut que la caméra, soit, se place à l'intérieur de ton vaisseau et prend les même coordonnées que lui, soit, elle suit l'arrière de ton vaisseau afin de voir évoluer celui-ci dans l'espace.

Voilà, sinon mes félicitations pour ce super programme!
A+ Wink Wink Wink 

Hello treehouse, Very Happy 
That to say? That your program is excellent and that I would not certainly have done better!!!
Now, me includes better your question on 3d_chain! To be able to chain all the elements of the orbiting space station together, would have been able to save several lines of code. But to chain a 3d_dodecahedron with a 3d_box or a 3d_torus or then a 3d_box with a 3d_cylinder, etc. is not possible. It is the access violation insurant! I see only a single solution, to conceive(design) the orbital station in a program of 3D modelling (as wings3D or blender, but he(it) exists height of others there) And register(record) the 3D object so created in a mesh 3ds. So, there is not more than a single 3D object in check(Control) in the program.
To check(control) your vessel (ship %, the red 3d_box), effectively, he(it) goes out of the field of the camera after a while. I had already noticed it and quite my attempts for it to remedy remained vain. I believe to remember that Jack had said that with the commands(orders) Cam_pitch, cam_turn, cam_roll, cam_move the movements of the camera were too jerky. This explain maybe the problem of exit(release) of the field of vision. Besides I believe that he had said that it was not good to use arrowed touches (scancode 38 - 40) to check(control) her(it) will be on drugs.
I see only a single solution, if you want to manage your vessel and the camera with touches arrowed, it is to use cam_position with more complex calculations. It is necessary that the camera, either, he takes place inside your vessel and sets even coordinated as, or, she(it) follows the back of your vessel to see evolving this one in the space.

Here we are, otherwise my congratulations for this great program!

Bye bye Wink Wink Wink
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 14:38

J'ai essayé de faire une station orbital avec Wings3d! Pas très difficile à première vue:
1°) j'ai créé un tore
2°) une sphère au centre du tore
3°) un cylindre traversant ma sphère
4°) un tube reliant de part et d'autre le tore en passant par la sphère
et 5°) j'ai dupliqué le tube et je l'ai fait tourner à 90° sur l'axe y
je n'ai eu plus qu'à combiner les 5 objets et les exporter en 3ds!

J'ai bricolé une pseudo texture avec photofiltre studio à partir d'une autre, et voilà le résultat
sur mon webdav dans le dossier 3D, fichier orbital.zip


I tried to make a station orbital with Wings3d! Not very difficult at first sight:
1 °) I created a torus
2 °) a sphere in the center of the torus
3 °) a cylinder crossing my sphere
4 °) a tube connecting(binding) on both sides the torus by way of the sphere
And 5 °) I duplicated the tube and I made him(it) turn(shoot) in 90 ° on the Y axis
I did not have more than to combine(organize) 5 objects and to export them 3ds there!

I tinkered a so called texture with photofilter studio from an other one, and here is a
result on my webdav in the 3D file(case), the orbital.zip file

web dav: http://www.mydrive.ch/
username : panoramic@bignono password : panoramic123
Revenir en haut Aller en bas
treehouse

treehouse


Nombre de messages : 28
Localisation : UK
Date d'inscription : 21/10/2013

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 17:57

Merci à tous pour vos gentils commentaires !

bignono a écrit:
Je crois me souvenir que Jack avait dit qu'avec les commandes cam_pitch, cam_turn, cam_roll, cam_move les mouvements de la caméra étaient trop saccadés. Ceci explique peut-être le problème de sortie du champ de vision.
Intéressant, mais je ne pense pas que les touches fléchées fonctionnent différemment des alpha-numériques ceux. Certaines méthodes remplir la mémoire tampon du clavier, mais ce serait la même pour les différentes touches. Comme la caméra et la boîte sont sollicités à chaque passage dans le code, je pense que le problème est causé par de très petites différences de valeurs (entre cam_move etc et 3d_move etc), qui s'accumulent progressivement dans une grande différence dans la position. En fait, l'angle ne semble pas aussi mauvais que la position. Malheureusement, à partir de mes expériences, il semble que l'utilisation cam_position de placer la caméra à l'intérieur de la boîte réinitialise également la direction de pointage de la caméra.

Citation :
En plus je crois qu'il avait dit qu'il n'était pas bon d'utiliser les touches flèchées (scancode 38 à 40) pour contrôler la camera.
Je ne vois qu'une seule solution, si tu veux diriger ton vaisseau et la caméra avec les touches fléchées, c'est d'utiliser cam_position avec des calculs plus complexes. Il faut que la caméra, soit, se place à l'intérieur de ton vaisseau et prend les même coordonnées que lui, soit, elle suit l'arrière de ton vaisseau afin de voir évoluer celui-ci dans l'espace.
Cette dernière est une bonne solution car l'appareil peut être aligné avec un objet, mais non l'un des axes d'un objet. Je préfère, cependant, de ne pas le faire. Il faudrait l'objet à être belle et prendre le temps de traitement précieuse! Et vous ne voudriez pas voir ce qui est juste en face de vous. Le vaisseau serait en cours de route.

Merci aussi pour l'aide au sujet de la construction d'objets 3D, et je vais télécharger votre station spatiale bientôt. Ma méthode pour extraterrestres intelligents cause plus de mal que ce que j'attendais !

"Ta-ta!"
Revenir en haut Aller en bas
mindstorm

mindstorm


Nombre de messages : 684
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 19:38

sorry
y have a "no correct expression line 201"
Panoramic Editor V 0.9.24
can you see that?
thank you
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6996
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 19:58

La version V 0.9.24 que tu utilises ne reconnait pas CAM_PITCH A ; CAM_TURN A ;  CAM_ROLL A ;  CAM_MOVE d ; POINT_OBJECT N

Ces commandes sont celles de la version V 0.9.25i2.

Mets-toi à jour et ça ira !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 20:00

Pour ce code, il faut prendre la 25i.3 du 05/09/2013.
A+

On s'est croisé Papydall, mais le message est le même.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 20:09

@Minstorm,

Attention: conserve la version V09.24 qui est une version "régulière" et pas limitée, ce qui n'est pas le cas de de la V09.25i.3

Perdu dans l'espace Image_11

A+
Revenir en haut Aller en bas
mindstorm

mindstorm


Nombre de messages : 684
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 20:57

peut on installer cette version sans ecraser la precedante?
merci
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 21:18

Oui, tu la garde dans un répertoire (dossier) différent de l'autre version.
A+
Revenir en haut Aller en bas
mindstorm

mindstorm


Nombre de messages : 684
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 7 Nov 2013 - 21:34

merci ça marche cheers 
tres beau jeu avec des idees a reprendre
very funny
thanks
Revenir en haut Aller en bas
treehouse

treehouse


Nombre de messages : 28
Localisation : UK
Date d'inscription : 21/10/2013

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyLun 11 Nov 2013 - 1:35

Bignono, désolé pour le retard. J'ai eu un coup d'œil à vos orbital.bas et c'est incroyable. En outre, vous préempté ma poser des questions sur la façon de concevoir les objets pour enregistrer et charger comme .3ds. Je vais essayer un logiciel pour le faire.

Pour tester s'écraser ou amarrage réussi, je peux encore besoin d'un porte séparée à l'intérieur de la station spatiale, mais bien sûr, la forme complexe pourrait être un objet 3D unique, comme vous l'avez indiqué.

J'espère que Jack sera en mesure d'ajouter de nouvelles fonctions au Panoramic pour accéder à l'orientation d'un objet dans le système de coordonnées global. Est-il absent pour le moment ?

Je n'ai aucune idée si ce sera possible. Peut-être six fonctions seraient nécessaires, deux pour chaque axe, quelque chose comme la déclinaison et ascension droite qui sont utilisés en astronomie. Je me suis rendu compte que mon jeu demande beaucoup du moteur 3D et/ou le programmeur, et mes compétences sont très rouillé ! confused  Je peux avoir besoin de changer la façon dont je déplacer et faire pivoter l'objet "ship" et cam de garder les déplacer comme un seul. Et cela pourrait signifier la prise en main avec des angles d'Euler, les mathématiques matricielles et autres joyeusetés. Sleep 

Malgré cela, je ne vois pas comment il est possible avec les commandes et fonctions actuellement disponibles. Peut-être que s'il y avait un 3d_point_position x, y, z pour les objets, j'ai pu travailler sur quelque chose impliquant coordonnées vers lequel tant le cam et "ship" peut pointer . Ils peuvent être donnés la même position absolue, mais seulement le cam peuvent faire point_position x, y, z. Inversement, on peut obtenir o3d_x_position(N), etc, mais pas o3d_x_position(CAM). Je ne suis pas sûr de capacités supplémentaires permettrait de résoudre le problème, mais j'espère que Jack (ou un autre) peut trouver un moyen.

Eh bien , désolé de taper sur ce sujet.
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyLun 11 Nov 2013 - 10:12

Bonjour treehouse, Smile 

Je ne comprends pas très bien votre question. Certainement une mauvaise traduction de google. Mais ce n'est pas grave. Je pense que vous ne savez pas comment déplacer la caméra et votre vaisseau en même temps. Voici un petit programme avec remarques qui peut apporter un début de solution. L'astuce est de représenter la caméra dans un 3d_cube et le point visé par la caméra dans un autre qui peut être aussi le vaisseau. Il suffit ensuite de contrôler les mouvements des 2 cubes ou objets ensemble. Pour les mouvements de rotations et de pivots du vaisseau (case 65 et 90) là je ne sais pas faire. Il y a d'autres calculs plus complexes à rajouter, mais c'est réalisable.
J'espère vous avoir aidé
A bientôt Wink Wink Wink 

Hello treehouse, Smile 
I do not understand very well your question. Certainly a bad translation of Google. But it doesn't matter. I think that you do not know how to move the camera and your vessel at the same time. Here is a small program with remarks who can bring the beginning of solution. The trick(cleverness) is to represent the camera in one 3d_cube and the point aimed by the camera in an other who can be also the vessel. It is then enough to check(control) the movements of 2 cubes or objects together. For the movements of rotations and pivots of the vessel (case 65 and 90) there I do not know how to make. There are other more complex calculations to be added, but it is practicable.

I hope to have helped you
See you soon Wink Wink Wink 

(Veuillez excuser la mauvaise traduction, merci)
( Please excuse the bad translation, thank you)

Code:
' * key ESC ==> terminate PROGRAM
' Touches arrowed to manage the objects 3d_cube and the camera
' ********************************************************************
' rot=angle which is the invisible cube of the engine 3d, is 3d_y_rotate mv,rot
' Chy=Y position of the camera, or cam_y_position or chy
' phy=Y position of the point aimed by the camera, or point_y_position or phy
' vrot=Rotation speed when we revolve to the left or to the right (arrows left or right)
' vd=Speed of travel(movement) when we move forward, moves(puts) back, goes right or to the left
' mv=number object of engine 3d =================> 1000 (3d_cube 1000,1)
' pv=number object of point aimed by the camera => 1001 (3d_cube 1001,1) (in your program, the ship ?)

dim rot,chy,phy,vrot,vd,mv,pv
rot=180:chy=1.5:phy=1.5:vrot=1:vd=0.2

label move

full_space 0:scene3d 1:full_space 1:color 1,0,0,255

3d_plane number_3d_objects+1:3d_x_rotate number_3d_objects,90
3d_color number_3d_objects,0,255,0:3d_scale number_3d_objects,100,100,1

3d_cone number_3d_objects+1,10,3:3d_color number_3d_objects,255,255,0

3d_cube 1000,1:' Driving vehicle (camera)
3d_y_rotate 1000,rot
3d_move 1000,-13:' you can use point_position
3d_hide 1000:' invisible
mv=1000

3d_cube 1001,1:' Driving vehicle (point_position)
' 3d_hide 1001: ' The object must be hidden in normal use
pv=1001

timer 200:timer_interval 200,1:on_timer 200,move
end

move:
timer_off 200
select scancode
   case 27:terminate
   case 37:rot=rot+vrot:3d_y_rotate mv,rot
   case 39:rot=rot-vrot:3d_y_rotate mv,rot
   case 38:3d_move mv,vd
   case 40:3d_move mv,vd-(2*vd)
'   case 65:3d_z_rotate mv,o3d_z_rotate(mv)-1
'   case 90:3d_z_rotate mv,o3d_z_rotate(mv)+1
end_select
' case 65 and case 90 need more complex calculations

3d_position pv,o3d_x_position(mv),o3d_y_position(mv),o3d_z_position(mv)
3d_rotate pv,o3d_x_rotate(mv),o3d_y_rotate(mv),o3d_z_rotate(mv)
3d_move pv,1
cam_position o3d_x_position(mv),chy,o3d_z_position(mv)
point_position o3d_x_position(pv),phy,o3d_z_position(pv)

timer_on 200
return


Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyLun 11 Nov 2013 - 10:40

En tout cas, j'ai testé le programme, c'est très prometteur pour le jeu.
J'ai hâte de voir la suite que tu programmera treehouse.

Peut être que je pourrais retrouver les joies que j'ai connus plus jeune en jouant à xwing ou à tie-fighter Wink
Si on arrive a des jeux aussi amusants, je crois que les programmeurs pourront être plutôt fier.

Je mets la barre haut, mais bon en tout cas le début de ce jeu promet beaucoup et je ne peux pas m’empêcher de rêver Wink
Revenir en haut Aller en bas
treehouse

treehouse


Nombre de messages : 28
Localisation : UK
Date d'inscription : 21/10/2013

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyLun 11 Nov 2013 - 17:53

Salut Bignono,

Oui, en effet, ce sont des sujets difficiles dans sa propre langue !

Je suis très reconnaissant. J'ai fait face à deux problèmes particuliers, et vous avez résolu l'un d'eux, à savoir, comment pointer l'objet ship_ dans la même direction que la caméra.

(je me sers "_" dans des mots comme " ship_ " pour arrêter google leur traduction (par exemple, "navire" ???) )

J'aurais pensé à cela, car il ya quelques jours, j'ai utilisé la même technique pour faire mes aliens(?) à pointer dans la direction dans laquelle ils voyagent. J'ai créé un cube invisible et placé en face de l'étranger(?). J'ai calculé une trajectoire pour l'étranger en utilisant X, Y et Z coordonne directement (pas des angles), il était donc facile. Je viens de mettre le cube invisible à la somme de la position de coordonnées et la vitesse, dans chaque dimension, et fait 3d_point_object.

(merci de me dire comment je dois traduire "alien" ! Il peut signifier étranger, un autre pays, mais peut-être l'un dit «étranger» en français. Je veux dire, bien sûr, un "extraterrestre", pas un Anglais !) lol! 

Le deuxième problème est encore plus difficile à décrire (et de résoudre). Si on lit sur la géométrie en trois dimensions et la compare avec la 2D, on apprend que les mouvements en 3D ont une complexité supplémentaire. Comme je l'ai dit plus tôt, les rotations en 3D ne sont pas "commutative" (alors qu'ils sont en 2D). Je vais vous expliquer mieux que je peux dans un instant. Tout d'abord, je dois dire que c'est à la limite de ma compréhension, donc je ne suis pas sûr que ce soit la nature exacte du problème.

Commutatif(?): l'addition est commutative et la multiplication est commutative. Ainsi :
4 +7 +8 = 8 +4 +7
4 * 7 * 8 = 8 * 7 * 4
etc

De la même façon, se déplacer dans deux dimensions, l'ordre des opérations n'a pas d'importance. Si on se promène du nord à 20 pas, puis au sud-ouest pendant encore 40 pas, on arrive au même point que si on marche 40 pas vers le sud-ouest puis 20 vers le nord.

Mais en 3D, ce n'est pas le cas.

Si je comprends bien, ce sont surtout les angles qui sont importants. C'est-à-dire, si nous n'agissons pas à travers une distance, mais simplement tourner, la fonction (résultat non-commutative ) peut être observée.

Pour le démontrer, faire pivoter un objet (la main) autour de "l'axe x" , puis autour de l'axe y. Ensuite, répétez les actions dans l'ordre inverse. Il est important de comprendre la différence entre le système de coordonnées (global / scene3D / universel) et les axes locaux d'un objet. Chaque fois que nous disons, par exemple
3d_x_rotate N, A
nous faisons tourner l'objet N autour de son propre axe x.

Si l'objet a déjà été mis en rotation autour de l'axe y ou z, l'axe x correspond plus avec l'axe X universel.

La plupart des jeux que nous appelons «3D» sont en fait en 2D, avec une troisième (la hauteur) totalement indépendant des autres. Cela signifie que l'on peut garder la trace de la position des objets sur le plan du sol assez facilement. Il peut encore exiger sinus et cosinus, mais, comme dans votre exemple, nous faisons tourner autour d'un seul axe (y).

Ayant dit tout cela, vous avez résolu une grande partie de ma difficulté. Avec ça, je devrais être en mesure de toujours garder le ship_ et le camera_ à la même position et correctement orientée.

Si je peux résoudre le problème reste, je peux calculer les informations dont dispose un pilote dans le cockpit, précisément, l'aspect (orientation ?) - Désolé , très difficile à traduire. En anglais, range_ and_ bearing_ .

Le range_ est la distance. Le bearing_ est l'angle. Encore une fois, cela montre la différence entre 2D et 3D. Nous pouvons simplement dire "20km ; 174 degrés" en 2D. Dans un vaisseau spatial, nous avons notre horizon local (notre plan XZ local) et nous devons donner deux mesures angulaires: on décrit l'angle d'une cible autour de cet horizon local, l'autre, l'angle au-dessus ou en dessous. Universal X, Y, et Z sont complètement hors de propos, en effet, aucun sens. C'est la nature des voyages dans l'espace !

Je veux donner au joueur un écran radar 3D (ou quelque chose de similaire) par lequel il peut voir les objets autour de lui. Sinon, il saura que ce qu'il peut voir à l'extérieur du pare-brise. Ce sera comme la conduite sans rétroviseur ! Aussi je voudrais lui donner bearings_ (comment dire ?) pour la navigation sur des planètes ou des systèmes d'étoiles qui sont trop loin pour voir.

Je peux aussi vous permettre camera_ de tourner indépendamment de la ship_, afin qu'il puisse regarder à gauche, droite, haut, etc, mais ce serait mieux si ce n'était pas le seul moyen. A la fin de la journée (?), je crois que j'ai besoin de comprendre les mathématiques vectoriels beaucoup mieux!

J'espère que c'est tout compréhensible. Merci également à mindstorm et Jicehel pour l'encouragement. J'espère Syzygy sera à la hauteur des attentes. C'est ce qu'elle sera appelée, je crois.

Soit dit en passant, mes aliens(?) ne sont pas prêt à aller à l'université, mais ils ont descendu des arbres et ils ont des pouces opposable. Cool

"Warm regards"
treehouse
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyMar 12 Nov 2013 - 19:08

Hello treehouse Smile 
Study these 2 programs and see if it can use(get) for your game(set,play)!
See you soon Wink Wink Wink 
Code:
dim rep$:rep$="C:\jeubasic\3d\travail\":dir_change rep$: ' <=== to change, to adapt "rep$"
dim vrot:vrot=1
full_space 0:scene3d 1:full_space 1:color 1,0,0,0
cam_position 10,10,10:light_position 10,10,10

' 3d_skybox 1
' 3d_load_texture_top 1,"texture3.bmp"
' 3d_load_texture_left 1,"texture3.bmp"
' 3d_load_texture_back 1,"texture3.bmp"
' 3d_load_texture_front 1,"texture3.bmp"
' 3d_load_texture_right 1,"texture3.bmp"
' 3d_load_texture_bottom 1,"texture3.bmp"

3d_box 2,10000000,1,10000000:3d_position 2,1,-5000000,1:3d_color 2,250,000,000:' 3d_load_texture 2,"texture3.bmp":' 3d_hide 2
3d_box 3,10000000,10000000,1:3d_position 3,1,1,05000000:3d_color 3,000,250,000:' 3d_load_texture 3,"texture3.bmp":' 3d_hide 3
3d_box 4,10000000,10000000,1:3d_position 4,1,1,-5000000:3d_color 4,000,000,250:' 3d_load_texture 4,"texture3.bmp":' 3d_hide 4
3d_box 5,10000000,1,10000000:3d_position 5,1,05000000,1:3d_color 5,250,250,000:' 3d_load_texture 5,"texture3.bmp":' 3d_hide 5
3d_box 6,1,10000000,10000000:3d_position 6,-5000000,1,1:3d_color 6,250,000,250:' 3d_load_texture 6,"texture3.bmp":' 3d_hide 6
3d_box 7,1,10000000,10000000:3d_position 7,05000000,1,1:3d_color 7,000,250,250:' 3d_load_texture 7,"texture3.bmp":' 3d_hide 7

axes_show

' 3d_mesh 8:3d_load_object 8,"VAISSEAU2.3ds":3d_load_texture 8,"texture1.bmp":3d_position 8,1,1,1
3d_cube 8,6:3d_scale 8,0.1,1,1
3d_cube 9,5:3d_scale 9,1,0.1,1

while scancode <>27
if scancode=37 then cam_turn vrot*-1      :' camera turn to the left ==========> Key "left arrow"
if scancode=39 then cam_turn vrot         :' camera turn to the right =========> Key "right arrow"
if scancode=38 then cam_move 0.1          :' camera Move forward ==============> Key "up arrow"
if scancode=40 then cam_move -0.1         :' camera Move back =================> Key "down arrow"
if scancode=86 then cam_roll vrot*-1      :' camera roll to the left ==========> Key "V"
if scancode=78 then cam_roll vrot         :' camera roll to the right =========> Key "N"
if scancode=66 then cam_pitch vrot*-1     :' camera looping down ==============> Key "B"
if scancode=72 then cam_pitch vrot        :' camera looping up ================> Key "H"
if scancode=79 then cam_position 10,10,10 :' camera origine ===================> Key "O"
if scancode=65 then point_object 4        :' camera towards -Z  ===============> Key "A"
if scancode=90 then point_object 3        :' camera towards +Z  ===============> Key "Z"
if scancode=84 then point_object 2        :' camera towards -Y  ===============> Key "T"
if scancode=89 then point_object 5        :' camera towards +Y  ===============> Key "Y"
if scancode=87 then point_object 6        :' camera towards -X  ===============> Key "W"
if scancode=88 then point_object 7        :' camera towards +X  ===============> Key "X"
end_while
terminate
Code:
dim rep$:rep$="C:\jeubasic\3d\travail\":dir_change rep$: ' <=== to change, to adapt "rep$"
dim d,rx,ry,rz,px,py,pz,vrot:vrot=1:' px=1:py=1:pz=1
full_space 0:scene3d 1:full_space 1:color 1,0,0,0
cam_position 10,10,10:light_position 10,10,10

' 3d_skybox 1
' 3d_load_texture_top 1,"texture3.bmp"
' 3d_load_texture_left 1,"texture3.bmp"
' 3d_load_texture_back 1,"texture3.bmp"
' 3d_load_texture_front 1,"texture3.bmp"
' 3d_load_texture_right 1,"texture3.bmp"
' 3d_load_texture_bottom 1,"texture3.bmp"

3d_box 2,10000000,1,10000000:3d_position 2,1,-5000000,1:3d_color 2,250,000,000:' 3d_load_texture 2,"texture3.bmp":' 3d_hide 2
3d_box 3,10000000,10000000,1:3d_position 3,1,1,05000000:3d_color 3,000,250,000:' 3d_load_texture 3,"texture3.bmp":' 3d_hide 3
3d_box 4,10000000,10000000,1:3d_position 4,1,1,-5000000:3d_color 4,000,000,250:' 3d_load_texture 4,"texture3.bmp":' 3d_hide 4
3d_box 5,10000000,1,10000000:3d_position 5,1,05000000,1:3d_color 5,250,250,000:' 3d_load_texture 5,"texture3.bmp":' 3d_hide 5
3d_box 6,1,10000000,10000000:3d_position 6,-5000000,1,1:3d_color 6,250,000,250:' 3d_load_texture 6,"texture3.bmp":' 3d_hide 6
3d_box 7,1,10000000,10000000:3d_position 7,05000000,1,1:3d_color 7,000,250,250:' 3d_load_texture 7,"texture3.bmp":' 3d_hide 7

axes_show

3d_cube 8,6:3d_scale 8,0.1,1,1
3d_cube 9,5:3d_scale 9,1,0.1,1
' 3d_mesh 8:3d_load_object 8,"VAISSEAU2.3ds"
' 3d_x_rotate 8,rx:3d_position 8,1,1,1:
' 3d_load_texture 8,"texture1.bmp"

while scancode <>27
if scancode=104 then d=d+0.005:' ship Accelerate and Move forward ======> accélère et avance key "8"
if scancode=098 then d=d-0.005:' ship Slow down and stop ===============> freine et s'arrête key "2"
if scancode=100 then ry=ry+1:' ship turn to the left =================> tourne à gauche    key "4"
if scancode=102 then ry=ry-1:' ship turn to the right ================> tourne à droite    key "6"
if scancode=034 then rx=rx-1:' ship Fall forward and come down(fall) => pique en avant et descend  key "page down"
if scancode=033 then rx=rx+1:' ship ascension ========================> pointe en l'air et monte   key "page up"
if scancode=097 then rz=rz-1:' ship roll left ===> fait 1 tonneau sur la gauche  key "1"
if scancode=099 then rz=rz+1:' ship roll rigt ===> fait 1 tonneau sur la droite  key "3"
if scancode=107 then py=py+0.05:' ship go up =================> monte   key "+"
if scancode=109 then py=py-0.05:' ship go down ===============> descend key "-"
3d_rotate 8,rx,ry,rz:3d_rotate 9,rx,ry,rz
3d_y_position 8,py:3d_y_position 9,py
if d>0.1 then d=0.1
if d<0 then d=0
3d_move 8,d:3d_move 9,d
px=o3d_x_position(8):py=o3d_y_position(8):pz=o3d_z_position(8)
ship()
end_while
terminate

sub ship()
point_position px,py,pz
cam_position px-9,py+9,pz-9
end_sub
Revenir en haut Aller en bas
treehouse

treehouse


Nombre de messages : 28
Localisation : UK
Date d'inscription : 21/10/2013

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyMer 13 Nov 2013 - 14:42

Oh là là, malheureusement, votre idée ne fonctionne pas dans mon cas, mais j'ai appris quelque chose d'essayer. Je commence à penser à ce problème peut-être être insurmontable, mais je vais voir ce que Jack peut faire.

Il est assez déconcertant. Lors du déplacement et la rotation de la caméra, tout va bien. Lors du déplacement et la rotation d'un objet, tout va bien. Vos derniers exemples montrent cela. Mais dans les circonstances spécifiques requis par Elite / Syzygy, un problème se pose. Je pense que le problème se pose lorsque vous pointez la caméra à quelque chose, ou peut-être en plaçant certaines coordonnées.

Votre exemple précédent a résolu le problème de mettre la caméra à l'intérieur du ship_ et orientant dans la bonne DIRECTION sur un objet invisible.

On peut diriger l'appareil vers l'objet invisible. On peut fixer l'orientation de la caméra autour de son axe z. Donc, tout devrait être bien. Toutefois, je pense que, lorsque vous placez ou pointer caméra, Panoramic_ fait quelque chose de bizarre (peut-être utile dans la plupart des programmes). Je n'ai pas découvert encore exactement ce qu'il fait. Peut-être il oriente automatiquement caméra le bon sens (pour la plupart des programmes). Il en résulte que lorsque mon ship_ tourne autour de l'axe x, il jamais devient inversée. En anglais, nous appelons cette pitching_. Nous disons avion, navire, etc., pitches_.

J'ai continuera à essayer de déboguer mon programme. Étant donné que vous travaillez sur certaines de ces questions 3D, peut-être vous pouvez également résoudre ce dernier problème, mais vos exemples ne représentent pas des conditions totalement. Ensuite, vous devez voler dans trois dimensions, à pitch_, turn_ et roll_ et capable de voler à l'envers ou dans n'importe quelle orientation. Je crois que vous devrez utiliser votre technique de placer la caméra à l'intérieur de l'objet ship_ et pointant la caméra sur un objet invisible (mais le laisser visible pour l'essai, bien sûr!). Et je crois que vous découvrirez le problème que je veux parler.

Ou, au contraire, vous aimeriez analyser ma dernière version, ci-dessous, et le débogage pour moi. Ou n'importe qui. Mais peut-être écrire un autre programme sans tous les trucs superflu serait utile. Je devrais essayer probablement que le prochain moi-même.

Bien sûr, pitching_ et turning_ et rolling_ peuvent être obtenus avec les commandes cam_ pertinentes, et un objet peut être rendu à pitch_ et turn_ et roll_ avec les commandes 3d_rotate. Je le sais. Je faisais tout cela.

On pourrait penser que, parce que point_object et point_position ne spécifient pas de montant de « roll_ » de caméra, il suffit de dire (écrire) "cam_roll zrot". Mais aucun. Je pense que c'est parce que cam_roll est « relative ». Il tourne la caméra d'angle, de son orientation actuelle, plutôt qu'à un angle absolu. Ceci est différent de 3d_z_rotate pour un objet qui spécifie une orientation absolue (même si autour de ses propres axes locaux).

C'est compliqué !

Merci encore pour travaillé si dur sur cela et pour la lecture de mes longues randonnées.

Code:
' Syzygy
' PLEASE NOTE: ESCAPE THEN Alt-F4 to QUIT
'                     ^^^^^^^^^^^
'              ESCAPE ... ALT-F4 pour quitter.

label action,slowpanel,fin

' number of planets
Dim N%: N%=5
' General control variables
dim quit%,cursor%,fps,i%
quit%=0:cursor%=1
' Objects
dim j%,ship%,lead%,sol%,halo1%,halo2%,a%,s,m,n,o
' angles a,b, t=pitch step & u=roll step (mousey & ut for mouse)
dim a,b,t,u,mousey,mousex,rng
' Space station object indices & variables
dim stn%,shome,stnrot,stnspk1%,stnspk2%,stnring%,stnhub%,stndoor%,hubhit%,doorhit%
' Alien indices & vars
dim abod%,acab%,dummy%,xd,yd,zd,rngchk%,kill%,au,ar,apch%,ayaw%,u2n,r2n,maxsp
' constants
dim pi : pi=3.14159264
' Arrays for planets' positions x,y,z, orbital radius r
dim x(N%+2),y(N%+2),z(N%+2),r(N%+2)
' Ship's variables: position,speed,speed increment,rotations
dim sx,sy,sz,sp,boost,xrot,yrot,zrot
' Control Panel
dim stickx%,sticky%

sp=0:boost=0.001:stnrot=0:xrot=0:yrot=0:zrot=0
doorhit%=0:hubhit%=0 : ' docking/crash detection
t=0.5 : ' pitch increment
u=1 : ' roll increment
rngchk%=1
au=1:ar=0
maxsp=0.5

border_hide 0
width 0,screen_x:height 0,screen_y
color 0,64,64,64
font_color 0,55,55,255
font_bold 0
to_foreground 0

scene3d 1
' full_space 1
width 1,screen_x-200
height 1,screen_y-70
left 1,100:top 1,10

stickx%=screen_x/2
sticky%=570

cursor_hide 0
cursor_cross 1
' Sun is light source, at origin, therefore,
light_position 0,0,0
' It's in space!
color 1,0,0,0

' 3d_skybox 2
' 3d_load_texture_bottom 2,"Bitmaps\stars.bmp"
' 3d_load_texture_top 2,"Bitmaps\stars.bmp"
' 3d_load_texture_left 2,"Bitmaps\stars.bmp"
' 3d_load_texture_right 2,"Bitmaps\stars.bmp"
' 3d_load_texture_front 2,"Bitmaps\stars.bmp"
' 3d_load_texture_back 2,"Bitmaps\stars.bmp"

' Planets created first to keep array index (j%) low without offset. Further object indices will be relative to end of array.
for j%=3 to N%+2 : ' 3 because of frame(0), scene3d(1), skybox(2); N%+2 as arrays start at zero.
   a% = rnd(360):' Not degrees, radians, but any large number will do
  r(j%)=rnd(100000)+5000 : ' solar systems are BIG!
   x(j%)=r(j%)*cos(a%) : ' Circular coordinate
   y(j%)=(rnd(2000)-1000)/20 : ' A random offset from plane
   z(j%)=r(j%)*sin(a%) : ' Circular coordinate
   s = power(r(j%),1.3)/5000 : ' size of planet (temp. bigger than nec.)
   3d_sphere j%,s
   3d_position j%,x(j%),y(j%),z(j%)
   3d_color j%,rnd(40),rnd(40),rnd(40)
   ' special home planet first:
   if j%=3
'       3d_load_texture j%,"Bitmaps\tardis_support.bmp"
      shome=s*2 : ' radius of station rel. to size of planet (smaller=easier to find)
      3d_sphere j%+100,s*1.03 : ' safe index offset for (& may have others with) atmosphere
      3d_position j%+100,x(j%),y(j%),z(j%)
      3d_color j%+100,20,20,155
      3d_transparent j%+100,180
    end_if
next j%

' Sun
sol%=j%+1
3d_sphere sol%,800
3d_color sol%,255,245,50

halo1%=sol%+1
3d_sphere halo1%,900
3d_color halo1%,255,210,140
3d_transparent halo1%,190

halo2%=sol%+2
3d_sphere halo2%,1500
3d_color halo2%,255,55,140
3d_transparent halo2%,240

' Initialise spaceship coordinates near space station (for now)
sx=x(3)+shome+rnd(100)-50:sy=y(3)+shome+rnd(100)-50:sz=z(3)+shome+rnd(100)-50

ship%=sol%+3 : ' required for collision detection
3d_box ship%,0.8,0.2,0.8 : ' width,thickness,length
' 3d_load_texture ship%,"Bitmaps\flare.bmp"

' Leading object ahead of ship to point camera at (merci bignono!)
lead%=sol%+4
3d_cube lead%,2
' 3d_hide lead%
3d_color lead%,255,255,255
3d_transparent lead%,128

' Several concentric parts of the station follow:
stn%=sol%+5
3d_dodecahedron stn%
3d_scale stn%,3,3,3
' 3d_color stn%,55,55,40
3d_position stn%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stn%,3

' Spokes
stnspk1%=sol%+6
3d_box stnspk1%,0.8,20,0.1
' 3d_color stnspk1%,255,255,240
' 3d_color stnspk1%,100,100,50
' 3d_load_texture stnspk1%,"Bitmaps\mcheck4.bmp"
3d_position stnspk1%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stnspk1%,3

stnspk2%=sol%+7
3d_box stnspk2%,20,0.8,0.1
' 3d_color stnspk1%,255,255,240
' 3d_color stnspk2%,100,100,50
' 3d_load_texture stnspk1%,"Bitmaps\mcheck4.bmp"
3d_position stnspk2%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stnspk2%,3

' Ring
stnring%=sol%+8
3d_torus stnring%,10,0.5
3d_position stnring%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stnring%,3

' Cylinder hub
stnhub%=sol%+9
3d_cylinder stnhub%,3,1.3,1.3
3d_position stnhub%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stnhub%,3
3d_x_rotate stnhub%,90

' Box to give illusion of door (bug?: color 0,0,0 does not cover all sides)
stndoor%=sol%+10
3d_box stndoor%,0.3,1.3,3.01 : ' height,width,>cylinderlength
3d_position stndoor%,x(3)+shome,y(3)+shome,z(3)+shome
3d_point_object stndoor%,3
3d_color stndoor%,120,120,10

' "Alien" flying saucer
abod%=sol%+11
acab%=sol%+12
3d_sphere abod%,1
3d_sphere acab%,0.25
3d_y_scale abod%,0.06
3d_z_scale abod%,0.5
3d_y_scale acab%,0.6
3d_z_scale acab%,1.6
' Init at space station for now
3d_position abod%,x(3)+shome,y(3)+shome,z(3)+shome
3d_position acab%,x(3)+shome,y(3)+shome,z(3)+shome
3d_color abod%,20,60,50
3d_color acab%,10,40,70
3d_transparent acab%,80

dummy%=sol%+13
3d_cube dummy%,0.01:3d_hide dummy% : ' Allows us to point alien in its flying direction!

' Initialize objects & methods used for collision
3d_collision_as_faces ship% : ' Idea is to rotate ship so that its wide shape fits in door!
3d_collision_as_faces stnhub% : ' Also need all other parts added
3d_collision_as_faces stndoor% : ' The good one to hit

' View from inside space ship; we will move/rotate both together
' cam_position sx,sy,sz
' point_position x(3)+shome,y(3)+shome,z(3)+shome
' 3d_point_object ship%,stn%

3d_position ship%,sx,sy,sz
3d_point_object ship%,sol%
cam_position sx,sy,sz
point_object sol%
3d_y_rotate ship%,180
cam_turn 180
' WHY DOES THIS NOT WORK?
' IT SHOULD BEGIN GAME WITH US LOOKING DIRECTLY AWAY FROM THE SUN!

' on_close 0,fin

timer 99
timer_interval 99,100
on_timer 99,slowpanel

i%=0: ' Counter for fps (frames per second)
gosub action
' timer_off_all
end
' =====================

' MAIN LOOP
action:
while quit%=0
   i%=i%+1
   select scancode
      case 38:xrot=xrot-t: ' up key (some may prefer opposite)
      case 40:xrot=xrot+t: ' down key
      case 37:zrot=zrot-u: ' left key
      case 39:zrot=zrot+u: ' right key
      case 81:boost=0.1: ' Q - fast acceleration & decel.
      case 65:boost=0.01: ' A - medium
      case 90:boost=0.001: ' Z - fine
      case 160:sp=sp+boost: ' left shift
      case 161:sp=sp+boost: ' right shift
      case 162:sp=sp-boost: ' left control
      case 163:sp=sp-boost: ' right control
      case 32:sp=0: ' SPACE, dead stop (temporary cheat!)
      case 27:goto fin: ' ESCAPE (Why the warning beep from system?)
      case 67:cursor_cross 1 : ' C (Cross hairs on)
      case 68:cursor_hide 1 : ' D  (-"- off)
   end_select
   ' Rotate ship & cam on mouse position
   mousey=4*(mouse_y_position(1)-height(1)/2)/height(1)
   mousex=4*(mouse_x_position(1)-width(1)/2)/width(1)
   xrot=xrot-mousey
   yrot=yrot-mousex
   xrot=wrap_value(xrot)
   yrot=wrap_value(yrot)
   zrot=wrap_value(zrot)
   3d_move ship%,sp
   3d_rotate ship%,xrot,yrot,zrot
   3d_position lead%,o3d_x_position(ship%),o3d_y_position(ship%),o3d_z_position(ship%)
   3d_rotate lead%,xrot,yrot,zrot
   3d_move lead%,10
   cam_position o3d_x_position(ship%),o3d_y_position(ship%),o3d_z_position(ship%)
'   point_position o3d_x_position(lead%),o3d_y_position(lead%),o3d_z_position(lead%)
   point_object lead%
   cam_roll -1*zrot

   ' Continually rotate space station
   3d_z_rotate stn%,stnrot
   3d_z_rotate stnspk1%,stnrot
   3d_z_rotate stnspk2%,stnrot
   3d_z_rotate stnring%,stnrot
   3d_z_rotate stndoor%,stnrot
   stnrot=wrap_value(stnrot+0.5): ' Is this necessary?
  
  ' MOVE ALIEN
   xd=o3d_x_position(ship%)-o3d_x_position(abod%)
   yd=o3d_y_position(ship%)-o3d_y_position(abod%)
   zd=o3d_z_position(ship%)-o3d_z_position(abod%)
   rng=sqr(xd*xd+yd*yd+zd*zd)
   3d_x_position abod%,o3d_x_position(abod%)+m
   3d_y_position abod%,o3d_y_position(abod%)+n
   3d_z_position abod%,o3d_z_position(abod%)+o
   3d_x_position acab%,o3d_x_position(acab%)+m
   3d_y_position acab%,o3d_y_position(acab%)+n
   3d_z_position acab%,o3d_z_position(acab%)+o
   3d_position dummy%,o3d_x_position(acab%)+m,o3d_y_position(acab%)+n,o3d_z_position(acab%)+o
   3d_point_object acab%,dummy%
   3d_point_object abod%,dummy%
   if kill%=0
      m=m+0.000000002*power(xd,3)*rng: ' *sgn(xd)
      n=n+0.000000002*power(yd,3)*rng: ' *sgn(yd)
      o=o+0.000000002*power(zd,3)*rng: ' *sgn(zd)
      if abs(m)>maxsp then m=maxsp*sgn(m)
      if abs(n)>maxsp then n=maxsp*sgn(n)
      if abs(o)>maxsp then o=maxsp*sgn(o)
   end_if
      ' This tries to correct endless orbiting, making alien dive towards us.
   if rnd(2000)<1 and rng>35 then kill%=30
   if kill%>0
      m=m*0.9
      n=n*0.9
      o=o*0.9
      kill%=kill%-1
   end_if
'   orng=rng
   display

' TESTS
   ' Docking or collision with space station?  (Not perfect, but works)
   if o3d_collision(ship%,stndoor%)=1 then doorhit%=1
   if o3d_collision(ship%,stnhub%)=1 then hubhit%=1
   if hubhit%=1 : ' Can't avoid hitting hub, so...
      if doorhit%=0 then message "Crashed!":quit%=1 : ' ...Missed door.
      if doorhit%=1 then message "Successfully docked!":quit%=1 : ' ...hit door.
   end_if
end_while : ' Main loop ends when quit%=1
return

' OUTPUT ON DASHBOARD
slowpanel:
   fps=i%*10:i%=0
   timer_off 99 : ' No trigger repeat in loop. Also "return" without resetting timer ends game".
   ' Speed
   2d_fill_color 5,255,5
   print_locate 2,80:print "Spd ";int(sp*1000);"  "
   ' Position
   print_locate 2,100:print "X ";int(o3d_x_position(ship%));" "
   print_locate 2,120:print "Y ";int(o3d_y_position(ship%));" "
   print_locate 2,140:print "Z ";int(o3d_z_position(ship%));" "
   ' Alien Position
   print_locate 2,250:print "aX ";int(o3d_x_position(abod%));" "
   print_locate 2,270:print "aY ";int(o3d_y_position(abod%));" "
   print_locate 2,290:print "aZ ";int(o3d_z_position(abod%));" "
   ' Alien "speed" (kinda)
   print_locate 2,320:print "aSpd ";int((sqr(m*m+n*n+o*o)*1000));" "
'   print_locate 2,340:print "ar ";ar;" "
   print_locate 2,400:print "Range ";int(rng);".";int(frac(rng)*1000);" "
   2d_fill_color 5,5,255
   2d_pen_width 1
   2d_rectangle stickx%-30,sticky%-30,stickx%+30,sticky%+30
   2d_pen_width 2
   2d_line stickx%,sticky%,stickx%+sqr(abs(400*mousex))*sgn(mousex),sticky%+sqr(abs(400*mousey))*sgn(mousey)
   2d_pen_width 5
   2d_line stickx%+sqr(abs(400*mousex))*sgn(mousex),sticky%+sqr(abs(400*mousey))*sgn(mousey),stickx%+sqr(abs(400*mousex))*sgn(mousex),sticky%+sqr(abs(400*mousey))*sgn(mousey)

   ' My data
   2d_fill_color 5,255,255
   print_locate screen_x-95,40:print fps;" fps"
   print_locate screen_x-95,80:print "Mx ";mousex;"    "
   print_locate screen_x-95,100:print "My ";mousey;"    "
   print_locate screen_x-95,140:print "xrot ";xrot;"    "
   print_locate screen_x-95,160:print "yrot ";yrot;"    "
   print_locate screen_x-95,180:print "zrot ";zrot;"    "

   timer_on 99
return

' ==============

fin:
   quit%=1
return
Par ailleurs, il vous aidera à voir ce qui se passe si vous chargez un fichier « texture » à la 3d_skybox. Points, ou n'importe quel motif contrastant.
Revenir en haut Aller en bas
jimx78

jimx78


Nombre de messages : 241
Age : 32
Localisation : Yvelines
Date d'inscription : 24/05/2010

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyMar 28 Avr 2015 - 13:19

Salut,
J'ai remarqué que quand la caméra ce trouve dans les valeur x y z très eleve (possitif ou négatif) il y a des bug de caméra.

Pour moi il n'y a qu'une raison rationnel: les nombres qui sont grand, est plus de travail pour l'ordinateur. conclusion, il n'arrive pas etre précis.
Donc il faut réduire l'echelle du monde pour ne pas ce retrouver trop loing dans une scène 3D.

C'est normal, d'autant plus que si on avez 60 fps, il faudera il qu'il face tout les calcules en fonctions des nombres en 16 millisecondes.

Je joue a un jeu: minecraft, quand on est a des valeurs élever, les items bouges bizarrement au sol. Donc tout les jeux on le meme probleme technique.

Si un ordinateur dois traité le nombre 10 ou 10000000000000000000000000000, il ne mettra pas le même temps. Cela cree des bug graphique. Cela est accentuer dans les jeux video car les images sont generer entre 20 et 60 en moyenne par seconde.
Revenir en haut Aller en bas
jimx78

jimx78


Nombre de messages : 241
Age : 32
Localisation : Yvelines
Date d'inscription : 24/05/2010

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyMar 28 Avr 2015 - 18:51

C'est bon j'ai test, bravo.

Tien, javais fait ça il y a longtemps, il y a peu être des chose qui peuvent t’intéresser ?

https://panoramic.1fr1.net/t1193-system-solaire

Les touches :
Les flèches et la barre espace.

bon courage a toi
Revenir en haut Aller en bas
treehouse

treehouse


Nombre de messages : 28
Localisation : UK
Date d'inscription : 21/10/2013

Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace EmptyJeu 30 Avr 2015 - 1:45

Merci. Malheureusement, je dois plus le temps de travailler avec Panoramic. Surtout parce que je dois essayer de comprendre des textes utiles après leur traduction. Sad C'est la vie. Je vais peut-être revenir à cela plus tard.
Revenir en haut Aller en bas
Contenu sponsorisé





Perdu dans l'espace Empty
MessageSujet: Re: Perdu dans l'espace   Perdu dans l'espace Empty

Revenir en haut Aller en bas
 
Perdu dans l'espace
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Je suis un peu perdu...
» J'ai perdu la couleur !!!
» Felicitation mais un peu perdu !!
» C'est pas dans l'axe...
» Un bug dans FILEBIN_HEXA_WRITE ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les jeux faits avec Panoramic-
Sauter vers: