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
» Logiciel de planétarium.
Vue subjective (3D) Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Vue subjective (3D) Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Vue subjective (3D) Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Vue subjective (3D) Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Vue subjective (3D) Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Vue subjective (3D) Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Vue subjective (3D) Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Vue subjective (3D) Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Vue subjective (3D) Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Vue subjective (3D) Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Vue subjective (3D) Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Vue subjective (3D) Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Vue subjective (3D) Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Vue subjective (3D) Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Vue subjective (3D) Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -17%
(Black Friday) Apple watch Apple SE GPS + Cellular ...
Voir le deal
249 €

 

 Vue subjective (3D)

Aller en bas 
+3
bignono
Klaus
Sefiria
7 participants
AuteurMessage
Sefiria

Sefiria


Nombre de messages : 25
Age : 32
Localisation : Nîmes (30), France
Date d'inscription : 05/03/2013

Vue subjective (3D) Empty
MessageSujet: Vue subjective (3D)   Vue subjective (3D) EmptyMar 5 Mar 2013 - 4:52

.
Bon, voici mon véritable premier post (hors présentation donc):

Ça pourrait paraître idiot.
J'aimerai créer une vision subjective dans un scene3D.
Jusque là rien de troublant.
Sauf qu'à partir du moment où je tente de tourner avec mon "personnage" (nous dirons), là je bloque !
J'ai tenté d'utiliser le cercle trigonométrique, en vain, puis j'ai fini par tenter de le faire à ma sauce, toujours en vain.
Le problème vient du fait du déplacement de Point_Position sur les axes X et Z.
Voici un squelette de code, il n'y a plus qu'à entrer la formule magique (tout en bas du programme) permettant de faire
tourner le personnage sur lui-même, en commençant tout bêtement par le faire tourner par la gauche (d'où Scancode=37):



Code:
' initialisation
SCENE3D 1
3D_PLANE 2
WIDTH 1,640
HEIGHT 1,480
3D_LOAD_TEXTURE 2,"Texture 1.bmp"
3D_U_TILE 2,20
3D_V_TILE 2,20
3D_X_ROTATE 2,90
3D_CONE 3,3,1
3D_POSITION 3,5,1,1
CAM_POSITION 0,1,0

Label turn_left
' x_pt = coord x du point visé par la cam
' z-pt = bis pour la coordonnée z
' il est possible de faire de même pour y, ce qui peux être plus long
DIM x_pt,z_pt
' à vous de définir les variables appropriées (rayon, et cetera)
x_pt=1 : z_pt=0

POINT_POSITION x_pt,1,z_pt

' -------------------------------  MAIN
' fin du main et arrêt du programme si touche "echap" du clavier pressée
WHILE ScanCode><27

' tourner à gauche
If Scancode=37 Then GoSub turn_left





POINT_POSITION x_pt,1,z_pt

END_WHILE
' ------------------------------- FIN MAIN
TERMINATE
' ------------------------------- ARRET DU PROGRAMME

' Tourner à gauche
turn_left:


' debug
print_locate 0,500
print x_pt
print_locate 50,500
print z_pt
Return
' fin tourner à gauche

Si quelqu'un veut bien tenter quelque chose, quoique ce soit pourrait m'être utile ou m'inspirer, je vous remercie d'avance !

.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) EmptyMar 5 Mar 2013 - 9:01

Je propose une solution pour les rotations droite/gauche. Explications dans les commentaires:
Code:
' initialisation
SCENE3D 1
3D_PLANE 2
WIDTH 1,640
HEIGHT 1,480
' 3D_LOAD_TEXTURE 2,"Texture 1.bmp"
3D_U_TILE 2,20
3D_V_TILE 2,20
3D_X_ROTATE 2,90
3D_CONE 3,3,1
3D_POSITION 3,5,1,1
CAM_POSITION 0,1,0

Label turn_left, turn_right
' x_pt = coord x du point visé par la cam
' z-pt = bis pour la coordonnée z
' il est possible de faire de même pour y, ce qui peux être plus long
DIM x_pt,z_pt, teta, delta, pi
' à vous de définir les variables appropriées (rayon, et cetera)
x_pt=5 : z_pt=0

pi    = 4*atn(1)  : ' valeur de pi
teta  = pi/2      : ' angle de visée initial
delta = pi/90    : ' incrément de visée

POINT_POSITION x_pt,1,z_pt

' -------------------------------  MAIN
' fin du main et arrêt du programme si touche "echap" du clavier pressée
WHILE ScanCode><27

' tourner à gauche
If Scancode=37 Then GoSub turn_left
If Scancode=39 Then GoSub turn_right



POINT_POSITION x_pt,1,z_pt

END_WHILE
' ------------------------------- FIN MAIN
TERMINATE
' ------------------------------- ARRET DU PROGRAMME

' Tourner à droite
turn_right:
  teta = teta - delta
  if teta>2*pi then teta = teta - 2*pi
  if teta<0 then teta = teta + 2*pi
  x_pt = 5 + 5*sin(teta)
  z_pt = 5*cos(teta)
  return
 
' Tourner à gauche
turn_left:
' position de la caméra par défaut: (0,0,5)
' point visé par défaut: (0,0,0)
' donc, rotation a gauche/droite représente un changement
' du point visé en le déplaçant sur un cercle de
' centre (0,0,5) et de rayon 5:
  teta = teta + delta
  if teta>2*pi then teta = teta - 2*pi
  if teta<0 then teta = teta + 2*pi
  x_pt = 5 + 5*sin(teta)
  z_pt = 5*cos(teta)


' debug
print_locate 0,500
print x_pt
print_locate 50,500
print z_pt
Return
' fin tourner à gauche
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
bignono

bignono


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

Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) EmptyMar 5 Mar 2013 - 9:43

Bonjour Sefiria, Smile
Donc tu vas voir dans le code suivant les différentes manières de se déplacer dans un monde en 3d!
Je pense avoir suffisament mis d'observation pour comprendre comment procéder, donc à toi de décortiquer le code!
Si tu ne saisis pas bien, n'hésite surtout pas à t'adresser à nous par le biais de ce forum. Je crois qu'il y aura toujours quelqu'un pour t'apporter une solution à ton problème.
Code:
' ********************************************************************
' ************************* COMMANDES CLAVIER ************************
' ********************************************************************
' * TOUCHE ESC ==> MET FIN AU PROGRAMME:................... CASE 27  *

' * TOUCHE "page up" ==> DÉCOLLER (vision aérienne):....... CASE 33  *
' * TOUCHE "page down" ==> REDESCENDRE (vision aérienne):.. CASE 34  *
' * TOUCHE FLÈCHE GAUCHE ==> PIVOTER À GAUCHE:............. CASE 37  *
' * TOUCHE FLÈCHE HAUTE ==> AVANCER:....................... CASE 38  *
' * TOUCHE FLÈCHE DROITE ==> PIVOTER À DROITE:............. CASE 39  *
' * TOUCHE FLÈCHE BASSE ==> RECULER:....................... CASE 40  *
' * TOUCHE "B" ==> REGARDER VERS LE BAS:................... CASE 66  *
' * TOUCHE "H" ==> REGARDER VERS LE HAUT:.................. CASE 72  *
' ********************************************************************
' ************************** PAVÉ NUMÉRIQUE **************************
' ********************************************************************
' * TOUCHE "1" ==> RECULER VERS LA GAUCHE:................. CASE 97  *
' * TOUCHE "2" ==> RECULER:................................ CASE 98  *
' * TOUCHE "3" ==> RECULER VERS LA DROITE:................. CASE 99  *
' * TOUCHE "4" ==> DÉPLACEMENT LATÉRAL VERS LA GAUCHE:..... CASE 100 *
' * TOUCHE "5" ==> RETOUR AU POINT D'ORIGINE:.............. CASE 101 *
' * TOUCHE "6" ==> DÉPLACEMENT LATÉRAL VERS LA DROITE:..... CASE 102 *
' * TOUCHE "7" ==> AVANCER VERS LA GAUCHE:................. CASE 103 *
' * TOUCHE "8" ==> AVANCER:................................ CASE 104 *
' * TOUCHE "9" ==> AVANCER VERS LA DROITE:................. CASE 105 *
' * TOUCHE "+" ==> MONTER:................................. CASE 107 *
' * TOUCHE "-" ==> DESCENDRE:.............................. CASE 109 *
' ********************************************************************

dim rot,chy,phy,bh:rot=180:chy=1.7:phy=1.7
' rot=angle auquel se trouve le cube invisible du moteur 3d, soit 3d_y_rotate 1000,rot
' chy=la position y de la caméra, soit cam_y_position
' phy=la position y du point visé par la caméra, soit point_y_position
label bouge

scene(): ' création et initialisation de la scène

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

bouge:
timer_off 200
deplace()
timer_on 200
return

sub deplace()
dim_local vrot,vd,vhy,i,mv,pv,x,z,a$,p$
vrot=1:vd=0.2:vhy=0.25:mv=1000:pv=1001
' vrot=vitesse de rotation lorsqu'on pivote à gauche ou à droite (flèches gauche ou droite)
' vd=vitesse de déplacement lorsqu'on avance, recule, va droite ou à gauche
' vhy=vitesse ascensionnelle pour monter ou descendre (touches + ou -)
' mv=numéro objet 3d véhicule moteur soit 1000 (3d_cube 1000,1)
' pv=numéro objet 3d point visé soit 1001 (3d_mesh 1001; on peut mettre aussi un 3d_cube ou autre, mais il faut lui faire hide aussi)
select scancode
  case 27:terminate
  case 33:if chy<300 then for i=chy to 200 step 05:cam_position o3d_x_position(mv),i,o3d_z_position(mv):display:next i:chy=300
  case 34:if chy>phy then for i=200 to phy step -5:cam_position o3d_x_position(mv),i,o3d_z_position(mv):display:next i:chy=phy
  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 66:bh=bh+.2:if bh>11 then bh=11
  case 72:bh=bh-.2:if bh<-11 then bh=-11
  case 97:3d_move mv,vd-(2*vd):3d_x_position mv,o3d_x_position(mv)+(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)-(sin(rot*3.1415/180)*vd)
  case 98:3d_move mv,vd-(2*vd)
  case 99:3d_move mv,vd-(2*vd):3d_x_position mv,o3d_x_position(mv)-(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)+(sin(rot*3.1415/180)*vd)
  case 100:3d_x_position mv,o3d_x_position(mv)+(cos(rot*3.1415/180)*(vd*2)):3d_z_position mv,o3d_z_position(mv)-(sin(rot*3.1415/180)*(vd*2))
  case 101:bh=0:rot=180:chy=1.7:phy=1.7:3d_position mv,0,chy,0:3d_y_rotate mv,rot:3d_move mv,-13
  case 102:3d_x_position mv,o3d_x_position(mv)-(cos(rot*3.1415/180)*(vd*2)):3d_z_position mv,o3d_z_position(mv)+(sin(rot*3.1415/180)*(vd*2))
  case 103:3d_move mv,vd:3d_x_position mv,o3d_x_position(mv)+(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)-(sin(rot*3.1415/180)*vd)
  case 104:3d_move mv,vd
  case 105:3d_move mv,vd:3d_x_position mv,o3d_x_position(mv)-(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)+(sin(rot*3.1415/180)*vd)
  case 107:phy=phy+vhy:chy=chy+vhy
  case 109:phy=phy-vhy:chy=chy-vhy
end_select

' après les calculs suite à l'appui sur une touche, on met à jour la vision de la scène en 3d
3d_position pv,o3d_x_position(mv),o3d_y_position(mv),o3d_z_position(mv): ' on positionne le véhicule point visé au nouvel emplacement du véhicule moteur
3d_rotate pv,o3d_x_rotate(mv),o3d_y_rotate(mv),o3d_z_rotate(mv): ' on positionne l'angle véhicule point visé au nouvel angle du véhicule moteur
3d_move pv,1:' on déplace le véhicule point visé qui doit toujours se trouver devant la caméra
cam_position o3d_x_position(mv),sin(bh/6.28)+chy,o3d_z_position(mv): ' à son tour la caméra se positionne au nouvel emplacement du véhicule moteur
point_position o3d_x_position(pv),phy,o3d_z_position(pv): ' le nouveau point visé

' affichage des positions de x, y et z ainsi que de l'angle de rotation
x=o3d_x_position(mv):z=o3d_z_position(mv)
p$="X= "+str$(int(x*100)/100)+"  Y= "+str$(int(chy*100)/100)+"  Z= "+str$(int(z*100)/100):a$="Angle= "+str$(wrap_value(rot))+"°"
3d_position 27,o3d_x_position(pv),phy+0.3,o3d_z_position(pv):3d_text_change 27,p$
3d_position 28,o3d_x_position(pv),phy-0.7,o3d_z_position(pv):3d_text_change 28,a$
3d_rotate 27,o3d_x_rotate(mv),o3d_y_rotate(mv)+180,o3d_z_rotate(mv)
3d_rotate 28,o3d_x_rotate(mv),o3d_y_rotate(mv)+180,o3d_z_rotate(mv)
end_sub

' sub de création de la scene3d
sub scene()
full_space 0: ' on ajuste l'espace du formulaire à tout l'écran
scene3d 1:' on crée une scène en 3d
hide 1:' on la cache pour que la création des objets à l'intérieur soit plus rapide
full_space 1:' on occupe tout l'espace du formulaire, c'est à dire tout l'écran
color 1,0,0,200: ' on lui donne un couleur (bleu)

' création des objets de la scène en 3d
' sol de notre scene
3d_plane 1
3d_scale 1,40,40,1
3d_x_rotate 1,90
3d_y_position 1,0
3d_color 1,0,150,0

' création d'un mur à gauche
3d_box 2,8,3,1
3d_position 2,-8,1.5,-5
3d_y_rotate 2,90

' création d'une sphère à droite à demi enfoncée dans le sol
3d_sphere 3,2
3d_position 3,8,0,-4
3d_color 3,255,0,0

' création d'un cone au loin
3d_cone 4,10,4
3d_position 4,0,5,-50
3d_color 4,200,200,0

' création d'un cylindre au loin derrière la caméra, donc invisible au début
3d_cylinder 5,10,3,3
3d_position 5,0,5,52
3d_color 5,0,200,200

' objets d'affichage des positions de x et de z ainsi que de l'angle de rotation
3d_text 27,"":3d_scale 27,.1,.1,.1:3d_text 28,"":3d_scale 28,.1,.1,.1

' ici on crée un véhicule moteur de la caméra, un cube que l'on cache
3d_cube 1000,1
3d_y_rotate 1000,rot:3d_move 1000,-13:3d_hide 1000
' ici on crée un véhicule point visé: ça peut-être une sphere, un cube, etc... (mais il faut faire 3d_hide 1001 aussi)
3d_mesh 1001

show 1
end_sub
tu peux changer les valeurs de vd, vhy et vrot pour accélérer ou ralentir les déplacements.
A+ Wink Wink Wink


Dernière édition par bignono le Mar 5 Mar 2013 - 14:07, édité 2 fois (Raison : edité suite petite erreur dans le code)
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Vue subjective (3D) Empty
MessageSujet: Re   Vue subjective (3D) EmptyMar 5 Mar 2013 - 9:50

@ Sefiria,

Tu peux jeter un oeil sur mon webdav dans "...\Sources\3D\Viewer3ds"

Prends le dossier complet Laughing


Ps : Tu peux aussi y trouver des objets 3ds dans "...\Ressources Externes"
Revenir en haut Aller en bas
Sefiria

Sefiria


Nombre de messages : 25
Age : 32
Localisation : Nîmes (30), France
Date d'inscription : 05/03/2013

Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) EmptyMar 5 Mar 2013 - 17:00

.
Et bien, si je m'attendais à ça o.O
Merci à vous tous, je vais étudier chacun de vos codes et ainsi donner mes impressions (ce que je préfères),
ce que je ne comprends pas (le cas échéant donc), et ainsi profiter de cette merveilleuse rotation tant attendue !
Merci encore à vous tous !
Revenir en haut Aller en bas
bignono

bignono


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

Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) EmptyMar 5 Mar 2013 - 17:59

Voici le même code que dans mon précédent post mais au lieu d'utiliser scancode, je fais appel à l'évènement on_key.
Code:
' ******************************************************************************
' ***************************** COMMANDES CLAVIER ******************************
' ******************************************************************************
dim esc  :' * TOUCHE ESC ==> MET FIN AU PROGRAMME:................... CASE 27  *
dim tpu  :' * TOUCHE "page up" ==> DÉCOLLER (vision aérienne):....... CASE 33  *
dim tpd  :' * TOUCHE "page down" ==> REDESCENDRE (vision aérienne):.. CASE 34  *
dim tfg  :' * TOUCHE FLÈCHE GAUCHE ==> PIVOTER À GAUCHE:............. CASE 37  *
dim tfh  :' * TOUCHE FLÈCHE HAUTE ==> AVANCER:....................... CASE 38  *
dim tfd  :' * TOUCHE FLÈCHE DROITE ==> PIVOTER À DROITE:............. CASE 39  *
dim tfb  :' * TOUCHE FLÈCHE BASSE ==> RECULER:....................... CASE 40  *
dim tcb  :' * TOUCHE "B" ==> REGARDER VERS LE BAS:................... CASE 66  *
dim tch  :' * TOUCHE "H" ==> REGARDER VERS LE HAUT:.................. CASE 72  *
' ******************************************************************************
' ****************************** PAVÉ NUMÉRIQUE ********************************
' ******************************************************************************
dim pn1  :' * TOUCHE "1" ==> RECULER VERS LA GAUCHE:................. CASE 97  *
dim pn2  :' * TOUCHE "2" ==> RECULER:................................ CASE 98  *
dim pn3  :' * TOUCHE "3" ==> RECULER VERS LA DROITE:................. CASE 99  *
dim pn4  :' * TOUCHE "4" ==> DÉPLACEMENT LATÉRAL VERS LA GAUCHE:..... CASE 100 *
dim pn5  :' * TOUCHE "5" ==> RETOUR AU POINT D'ORIGINE:.............. CASE 101 *
dim pn6  :' * TOUCHE "6" ==> DÉPLACEMENT LATÉRAL VERS LA DROITE:..... CASE 102 *
dim pn7  :' * TOUCHE "7" ==> AVANCER VERS LA GAUCHE:................. CASE 103 *
dim pn8  :' * TOUCHE "8" ==> AVANCER:................................ CASE 104 *
dim pn9  :' * TOUCHE "9" ==> AVANCER VERS LA DROITE:................. CASE 105 *
dim pnp  :' * TOUCHE "+" ==> MONTER:................................. CASE 107 *
dim pnm  :' * TOUCHE "-" ==> DESCENDRE:.............................. CASE 109 *
' ******************************************************************************
label t1,t2
on_key_down 0,t1
on_key_up 0,t2


dim rot,chy,phy,bh:rot=180:chy=1.7:phy=1.7
' rot=angle auquel se trouve le cube invisible du moteur 3d, soit 3d_y_rotate 1000,rot
' chy=la position y de la caméra, soit cam_y_position
' phy=la position y du point visé par la caméra, soit point_y_position
label bouge

scene(): ' création et initialisation de la scène

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

bouge:
timer_off 200
deplace()
timer_on 200
return

sub deplace()
dim_local vrot,vd,vhy,i,mv,pv,x,z,a$,p$
vrot=1:vd=0.2:vhy=0.025:mv=1000:pv=1001
' vrot=vitesse de rotation lorsqu'on pivote à gauche ou à droite (flèches gauche ou droite)
' vd=vitesse de déplacement lorsqu'on avance, recule, va droite ou à gauche
' vhy=vitesse ascensionnelle pour monter ou descendre (touches + ou -)
' mv=numéro objet 3d véhicule moteur soit 1000 (3d_cube 1000,1)
' pv=numéro objet 3d point visé soit 1001 (3d_mesh 1001; on peut mettre aussi un 3d_cube ou autre, mais il faut lui faire hide aussi)
if esc=1 then terminate
if tpu=1
  if chy<300 then for i=chy to 200 step 05:cam_position o3d_x_position(mv),i,o3d_z_position(mv):display:next i:chy=300
end_if
if tpd=1
  if chy>phy then for i=200 to phy step -5:cam_position o3d_x_position(mv),i,o3d_z_position(mv):display:next i:chy=phy
end_if
if tfg=1 then rot=rot+vrot:3d_y_rotate mv,rot
if tfd=1 then rot=rot-vrot:3d_y_rotate mv,rot
if tfh=1 then 3d_move mv,vd
if tfb=1 then 3d_move mv,vd-(2*vd)
if tcb=1 then bh=bh+.2:if bh>11 then bh=11
if tch=1 then bh=bh-.2:if bh<-11 then bh=-11
if pn1=1 then 3d_move mv,vd-(2*vd):3d_x_position mv,o3d_x_position(mv)+(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)-(sin(rot*3.1415/180)*vd)
if pn2=1 then 3d_move mv,vd-(2*vd)
if pn3=1 then 3d_move mv,vd-(2*vd):3d_x_position mv,o3d_x_position(mv)-(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)+(sin(rot*3.1415/180)*vd)
if pn4=1 then 3d_x_position mv,o3d_x_position(mv)+(cos(rot*3.1415/180)*(vd*2)):3d_z_position mv,o3d_z_position(mv)-(sin(rot*3.1415/180)*(vd*2))
if pn5=1 then bh=0:rot=180:chy=1.7:phy=1.7:3d_position mv,0,chy,0:3d_y_rotate mv,rot:3d_move mv,-13
if pn6=1 then 3d_x_position mv,o3d_x_position(mv)-(cos(rot*3.1415/180)*(vd*2)):3d_z_position mv,o3d_z_position(mv)+(sin(rot*3.1415/180)*(vd*2))
if pn7=1 then 3d_move mv,vd:3d_x_position mv,o3d_x_position(mv)+(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)-(sin(rot*3.1415/180)*vd)
if pn8=1 then 3d_move mv,vd
if pn9=1 then 3d_move mv,vd:3d_x_position mv,o3d_x_position(mv)-(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)+(sin(rot*3.1415/180)*vd)
if pnp=1 then phy=phy+vhy:chy=chy+vhy
if pnm=1 then phy=phy-vhy:chy=chy-vhy

' après les calculs suite à l'appui sur une touche, on met à jour la vision de la scène en 3d
3d_position pv,o3d_x_position(mv),o3d_y_position(mv),o3d_z_position(mv): ' on positionne le véhicule point visé au nouvel emplacement du véhicule moteur
3d_rotate pv,o3d_x_rotate(mv),o3d_y_rotate(mv),o3d_z_rotate(mv): ' on positionne l'angle véhicule point visé au nouvel angle du véhicule moteur
3d_move pv,1:' on déplace le véhicule point visé qui doit toujours se trouver devant la caméra
cam_position o3d_x_position(mv),sin(bh/6.28)+chy,o3d_z_position(mv): ' à son tour la caméra se positionne au nouvel emplacement du véhicule moteur
point_position o3d_x_position(pv),phy,o3d_z_position(pv): ' le nouveau point visé

' affichage des positions de x, y et z ainsi que de l'angle de rotation
x=o3d_x_position(mv):z=o3d_z_position(mv)
p$="X= "+str$(int(x*100)/100)+"  Y= "+str$(int(chy*100)/100)+"  Z= "+str$(int(z*100)/100):a$="Angle= "+str$(wrap_value(rot))+"°"
3d_position 27,o3d_x_position(pv),phy+0.3,o3d_z_position(pv):3d_text_change 27,p$
3d_position 28,o3d_x_position(pv),phy-0.7,o3d_z_position(pv):3d_text_change 28,a$
3d_rotate 27,o3d_x_rotate(mv),o3d_y_rotate(mv)+180,o3d_z_rotate(mv)
3d_rotate 28,o3d_x_rotate(mv),o3d_y_rotate(mv)+180,o3d_z_rotate(mv)
end_sub

' sub de création de la scene3d
sub scene()
full_space 0: ' on ajuste l'espace du formulaire à tout l'écran
scene3d 1:' on crée une scène en 3d
hide 1:' on la cache pour que la création des objets à l'intérieur soit plus rapide
full_space 1:' on occupe tout l'espace du formulaire, c'est à dire tout l'écran
color 1,0,0,200: ' on lui donne un couleur (bleu)

' création des objets de la scène en 3d
' sol de notre scene
3d_plane 1
3d_scale 1,40,40,1
3d_x_rotate 1,90
3d_y_position 1,0
3d_color 1,0,150,0

' création d'un mur à gauche
3d_box 2,8,3,1
3d_position 2,-8,1.5,-5
3d_y_rotate 2,90

' création d'une sphère à droite à demi enfoncée dans le sol
3d_sphere 3,2
3d_position 3,8,0,-4
3d_color 3,255,0,0

' création d'un cone au loin
3d_cone 4,10,4
3d_position 4,0,5,-50
3d_color 4,200,200,0

' création d'un cylindre au loin derrière la caméra, donc invisible au début
3d_cylinder 5,10,3,3
3d_position 5,0,5,52
3d_color 5,0,200,200

' objets d'affichage des positions de x et de z ainsi que de l'angle de rotation
3d_text 27,"":3d_scale 27,.1,.1,.1:3d_text 28,"":3d_scale 28,.1,.1,.1

' ici on crée un véhicule moteur de la caméra, un cube que l'on cache
3d_cube 1000,1
3d_y_rotate 1000,rot:3d_move 1000,-13:3d_hide 1000
' ici on crée un véhicule point visé: ça peut-être une sphere, un cube, etc... (mais il faut faire 3d_hide 1001 aussi)
3d_mesh 1001

show 1
end_sub

t1:
if key_down_code=27 then esc=1
if key_down_code=33 then tpu=1
if key_down_code=34 then tpd=1
if key_down_code=37 then tfg=1
if key_down_code=38 then tfh=1
if key_down_code=39 then tfd=1
if key_down_code=40 then tfb=1
if key_down_code=66 then tcb=1
if key_down_code=72 then tch=1
if key_down_code=97 then pn1=1
if key_down_code=98 then pn2=1
if key_down_code=99 then pn3=1
if key_down_code=100 then pn4=1
if key_down_code=101 then pn5=1
if key_down_code=102 then pn6=1
if key_down_code=103 then pn7=1
if key_down_code=104 then pn8=1
if key_down_code=105 then pn9=1
if key_down_code=107 then pnp=1
if key_down_code=109 then pnm=1
return
t2:
if key_down_code=27 then esc=0
if key_down_code=33 then tpu=0
if key_down_code=34 then tpd=0
if key_down_code=37 then tfg=0
if key_down_code=38 then tfh=0
if key_down_code=39 then tfd=0
if key_down_code=40 then tfb=0
if key_down_code=66 then tcb=0
if key_down_code=72 then tch=0
if key_down_code=97 then pn1=0
if key_down_code=98 then pn2=0
if key_down_code=99 then pn3=0
if key_down_code=100 then pn4=0
if key_down_code=101 then pn5=0
if key_down_code=102 then pn6=0
if key_down_code=103 then pn7=0
if key_down_code=104 then pn8=0
if key_down_code=105 then pn9=0
if key_down_code=107 then pnp=0
if key_down_code=109 then pnm=0
return
A+ Wink Wink Wink


Dernière édition par bignono le Mar 5 Mar 2013 - 19:38, édité 1 fois
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) EmptyMar 5 Mar 2013 - 18:31

Personnellement, je préfère la version ON_KEY..., Bignono. C'est plus propre dans l'esprit de Panoramic. Mais cela n'enlève rien à la solution SCANCODE qui est parfaitement fonctionnelle.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) EmptyMar 5 Mar 2013 - 18:42

Salut Bignono
Très bon code, bien documenté, merci.
Une petite rectification, les 2 dernières lignes du programme :
Code:
if key_down_code=106 then pnp=0
if key_down_code=107 then pnm=0
c’est plutôt 107 et 109 au lieu de 106 et 107, n’est-ce pas ?
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
bignono

bignono


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

Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) EmptyMar 5 Mar 2013 - 19:41

Merci Papydall Smile
Heureusement que tu es là, je ne sais pas ce qu'on ferait sans toi! Tu as l'oeil à tout! Laughing
J'ai édité et corrigé...
A+ Wink Wink Wink
Revenir en haut Aller en bas
papydall

papydall


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

Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) EmptyMer 6 Mar 2013 - 1:33

J’essaye d’être utile, c’est tout !
Et parfois j’y arrive, pas toujours mais quelques fois, oui ça peut m'arriver. Vue subjective (3D) MDR-mort-de-rire
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jimx78

jimx78


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

Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) EmptyMer 13 Mar 2013 - 14:36

Bonjour tout le monde ça fait longtemps ^^

Je m'été spécialiser dans la 3D avec panoramic.

Pour ce déplacer dans un monde 3D:
https://panoramic.1fr1.net/t1185-gestion-de-la-camera-dans-une-scene-3d-1er-et-3e-personne

J'avez réaliser un autre tuto que je n'est jamais fini (et que je ne finirai jamais) mais qui peut vous être utile. Il y a plein de faute d’orthographe dans ce dernier donc désoler Sad

http://jimx78.e-monsite.com/pages/panoramic/tutoriel-de-3d.html
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) EmptyMer 13 Mar 2013 - 15:56

Salut Jim78. En effet, ça faisait un bail...
Tu devrais te remettre à la 3D sous Panoramic. Jack va réimplanter des fonctions sympa bientôt.
Fais nous de jolis programmes et on fera un effort pour fermer les yeux sur les fautes d'orthographes ... Wink
PS: Regarde le dernier jeu 3D fait par Bignono. Il a réussi à faire un super jeu avec peu de lignes et de ressources ... Je suis sur que ça te remotivera pour t'y remettre.
Revenir en haut Aller en bas
Contenu sponsorisé





Vue subjective (3D) Empty
MessageSujet: Re: Vue subjective (3D)   Vue subjective (3D) Empty

Revenir en haut Aller en bas
 
Vue subjective (3D)
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: