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.
cam�ra - Problème caméra et 3D Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
cam�ra - Problème caméra et 3D Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
cam�ra - Problème caméra et 3D Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
cam�ra - Problème caméra et 3D Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
cam�ra - Problème caméra et 3D Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
cam�ra - Problème caméra et 3D Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
cam�ra - Problème caméra et 3D Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
cam�ra - Problème caméra et 3D Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
cam�ra - Problème caméra et 3D Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
cam�ra - Problème caméra et 3D Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
cam�ra - Problème caméra et 3D Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
cam�ra - Problème caméra et 3D Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
cam�ra - Problème caméra et 3D Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
cam�ra - Problème caméra et 3D Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
cam�ra - Problème caméra et 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
-47%
Le deal à ne pas rater :
SAMSUNG T7 Shield Bleu – SSD Externe 1 To à 89,99€
89.99 € 169.99 €
Voir le deal

 

 Problème caméra et 3D

Aller en bas 
+3
jpcr
jimx78
limp4re
7 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
limp4re




Nombre de messages : 3
Date d'inscription : 04/05/2011

cam�ra - Problème caméra et 3D Empty
MessageSujet: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyMer 4 Mai 2011 - 11:55

Bonjour , je suis nouveau je viens de découvrir panoramic langage .

mon problème c'est que je n'ai pas trouver de tutoriel sur la 3d qui explique bien comment faire et j'ai essayer de faire tout seul Embarassed

j'ai fait un plateau 3d et j'aimerai que la camera avance quand j'appuie sur la touche z mais je crois que je fait n'importe quoi enfaite . quelqu'un pourrais m'aider sa serrais sympa

voici mon code
Code:

Dim avancer
    avancer = 0
   

scene3d 1
full_space 1

cam_x_position 1
cam_y_position 4
cam_z_position 8

point_x_position 0
point_y_position 2
point_z_position -70

light_x_position 0
light_y_position 5
light_z_position 3

3d_box 1,30,1,30

3d_x_position 1,0
3d_y_position 1,-1
3d_z_position 1,-7


if scancode = 90 : cam_x_position = cam_x_position + 1 : end_if

Revenir en haut Aller en bas
Invité
Invité




cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyMer 4 Mai 2011 - 12:30

D'abord bienvenue parmi les Panoramiciens.

Le problème vient du fait qu'il n'y a pas de boucle pour tester la touche "Z", qui est z en majuscule (ne pas l'oublier).
voici le code qui marche:
Code:
Dim avancer
Dim x
    avancer = 0


scene3d 1
full_space 1

cam_x_position 1
cam_y_position 4
cam_z_position 8

point_x_position 0
point_y_position 2
point_z_position -70

light_x_position 0
light_y_position 5
light_z_position 3

3d_box 1,30,1,30

3d_x_position 1,0
3d_y_position 1,-1
3d_z_position 1,-7

REPEAT
  if scancode = 90 THEN x=x+1 : cam_x_position X
UNTIL SCANCODE =27

Tel que tu as écris le code, le programme est fini avant que tu appuis une touche.
Sortir avec <escarpe>
Revenir en haut Aller en bas
limp4re




Nombre de messages : 3
Date d'inscription : 04/05/2011

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyMer 4 Mai 2011 - 13:32

merci sa marche Very Happy

en revanche lorsque j'ai rajouter une texture j'ai remarquer que le déplacement de la caméra n'est pas fluide du tout . cela viendrait de quoi ?
Revenir en haut Aller en bas
Invité
Invité




cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyMer 4 Mai 2011 - 23:03

Je ne peux pas t'aider pour la texture. Je ne fais pas de programme en 3D. Il y a plein de candidats qui normalement devrait pouvoir t'orienter. Ils faut qu'ils se réveille.
Mais depuis ce midi, ils dorment Sleep Sleep Sleep Sleep Sleep Sleep Sleep Sleep Sleep Sleep Sleep Sleep Sleep Sleep Sleep Sleep Sleep
Revenir en haut Aller en bas
jimx78

jimx78


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

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyLun 9 Mai 2011 - 0:27

Salut limp4re!!

Désoler d’être long a la détente mais si tu a besoin d'aide en 3D je pourrait t'apprendre tout ce que j'ai appris ici.

Pour ta question sur les textures, la commande 3D_load texture est moyennement intéressantes.

Il est préférable de crée une image par IMAGE et d'utiliser la commande 3D_image_texture

Si tu utilise plusieurs foi la même texture tu gagnera en temps car
> 3D_load texture charge l'image et attribue la texture
> 3D_image_texture attribue la texture

CONCLUSION:
Tu ne charge l'image qu'une seul foi en utilisent (image et 3D_image_texture) ce qui est un temps très précieux!!
Tu peut aussi réduire la qualité de tes image pour gagner encore plus de temps au chargement.


Pour ce qui est du programme il est TRÈS FORTEMENT DÉCONSEILLER d'utiliser une boucle pour les touches ou l'affichage.
Tu doit utiliser un timer.
C'est un code qui sert a exécuter un sous programme automatiquement a un moment donner. Tu peut modifier ce temps par la commande timer_interval (mois je le mais sur 1) rappel: 1seconde dans la vie représente 1000ms (milliseconde) pour le pc donc si tu met
timer_interval 1,3000
le timer 1 se lancera toute les 3 secondes
REGARDE l'aide dans panoramic qui explique beaucoup mieux que moi

Pour ce qui est des touches, tu doit savoir quand on appui sur plusieurs touches du clavier. Ce qui te pour a utiliser d'un coter un evenement quant tu appui sur une touche et un AUTRE évènement quant tu la relâche par on_key_down on_key_up

Aujourd'hui j'ai un code universel tout fait que j'utilise dans tout mes programmes 3D en panorammic.
C'est ma facon de programmer donc chaqun son gout^^ mais cela pe sembler très lourd en faite je gagne mon temp Smile

Code:

error_french
' Les bibiothèques dim et label#################################################
' Bibliothèque des touches======================================================
dim touche_a , touche_b , touche_c , touche_d , touche_e , touche_f , touche_g , touche_h , touche_i , touche_j , touche_k , touche_l , touche_m , touche_n , touche_o , touche_p , touche_q , touche_r , touche_s , touche_t , touche_u , touche_v , touche_w , touche_x , touche_y , touche_z
dim touche_echap , touche_f1 , touche_f2 , touche_f3 , touche_f4 , touche_f5 , touche_f6 , touche_f7 , touche_f8 , touche_f9 , touche_f10 , touche_f11 , touche_f12 , touche_inser , touche_suppr , touche_1 , touche_2 , touche_3 , touche_4 , touche_5 , touche_6 , touche_7 , touche_8 , touche_9 , touche_0 , touche_retour , touche_enter , touche_maj_ver , touche_maj , touche_ctrl , touche_alt , touche_espace , touche_gauche , touche_haut , touche_droit , touche_bas , touche_fin , touche_pause , touche_page_haut , touche_page_bas , touche_ver_num , touche_slash , touche_etoile , touche_moins , touche_plus , touche_virgule , touche_pn_1 , touche_pn_2 , touche_pn_3 , touche_pn_4 , touche_pn_5 , touche_pn_6 , touche_pn_7 , touche_pn_8 , touche_pn_9 , touche_pn_0
label bibiotheque_touche_1 , bibiotheque_touche_2
on_key_down 0,bibiotheque_touche_1
on_key_up 0,bibiotheque_touche_2
' Bibliothèque des touches===================================================FIN
' Bibliothèque de création de camera============================================
dim numero_camera_viser , numero_camera% , numero_camera_default , vitesse_deplacement_camera , vitesse_rotation_camera , camera_vole , camera_activer , camera_activer_rotation , camera_activer_position , camera_activer_hauteur , camera_y_position1_modifier , camera_y_position2_modifier
label actualiser_camera , cree_camera
vitesse_deplacement_camera=0.02
vitesse_rotation_camera=1.8
camera_vole=0
camera_activer=1
camera_activer_rotation=1
camera_activer_position=1
camera_y_position1_modifier=0
camera_y_position2_modifier=0
camera_activer_hauteur=1
' Bibliothèque de création de camera=========================================FIN
' Les bibiothèques dim et label##############################################FIN
' PROGRAMME PRINCIPALE##########################################################
label programme
full_space 0
scene3d 2 : full_space 2
gosub cree_camera
3d_teapot number_3d_objects+1
3d_z_position number_3d_objects,2

timer 1 : timer_interval 1,1 : on_timer 1,programme
' PROGRAMME PRINCIPALE#######################################################FIN
end : ' LES SOUS PROGRAMMES#####################################################

' Les bibiothèques sous programme###############################################
' Bibliothèque des touches======================================================
bibiotheque_touche_1:
if key_down_code = 65 then touche_a=1
if key_down_code = 66 then touche_b=1
if key_down_code = 67 then touche_c=1
if key_down_code = 68 then touche_d=1
if key_down_code = 69 then touche_e=1
if key_down_code = 70 then touche_f=1
if key_down_code = 71 then touche_g=1
if key_down_code = 72 then touche_h=1
if key_down_code = 73 then touche_i=1
if key_down_code = 74 then touche_j=1
if key_down_code = 75 then touche_k=1
if key_down_code = 76 then touche_l=1
if key_down_code = 77 then touche_m=1
if key_down_code = 78 then touche_n=1
if key_down_code = 79 then touche_o=1
if key_down_code = 80 then touche_p=1
if key_down_code = 81 then touche_q=1
if key_down_code = 82 then touche_r=1
if key_down_code = 83 then touche_s=1
if key_down_code = 84 then touche_t=1
if key_down_code = 85 then touche_u=1
if key_down_code = 86 then touche_v=1
if key_down_code = 87 then touche_w=1
if key_down_code = 88 then touche_x=1
if key_down_code = 89 then touche_y=1
if key_down_code = 90 then touche_z=1
if key_down_code = 27 then touche_echap=1
if key_down_code = 112 then touche_f1=1
if key_down_code = 113 then touche_f2=1
if key_down_code = 114 then touche_f3=1
if key_down_code = 115 then touche_f4=1
if key_down_code = 116 then touche_f5=1
if key_down_code = 117 then touche_f6=1
if key_down_code = 118 then touche_f7=1
if key_down_code = 119 then touche_f8=1
if key_down_code = 120 then touche_f9=1
if key_down_code = 121 then touche_f10=1
if key_down_code = 122 then touche_f11=1
if key_down_code = 123 then touche_f12=1
if key_down_code = 45 then touche_inser=1
if key_down_code = 46 then touche_suppr=1
if key_down_code = 49 then touche_1=1
if key_down_code = 50 then touche_2=1
if key_down_code = 51 then touche_3=1
if key_down_code = 52 then touche_4=1
if key_down_code = 53 then touche_5=1
if key_down_code = 54 then touche_6=1
if key_down_code = 55 then touche_7=1
if key_down_code = 56 then touche_8=1
if key_down_code = 57 then touche_9=1
if key_down_code = 48 then touche_0=1
if key_down_code = 8 then touche_retour=1
if key_down_code = 13 then touche_enter=1
if key_down_code = 20 then touche_maj_ver=1
if key_down_code = 16 then touche_maj=1
if key_down_code = 17 then touche_ctrl=1
if key_down_code = 18 then touche_alt=1
if key_down_code = 32 then touche_espace=1
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
if key_down_code = 35 then touche_fin=1
if key_down_code = 19 then touche_pause=1
if key_down_code = 33 then touche_page_haut=1
if key_down_code = 34 then touche_page_bas=1
if key_down_code = 144 then touche_ver_num=1
if key_down_code = 111 then touche_slash=1
if key_down_code = 106 then touche_etoile=1
if key_down_code = 109 then touche_moins=1
if key_down_code = 107 then touche_plus=1
if key_down_code = 110 then touche_virgule=1
if key_down_code = 97 then touche_pn_1=1
if key_down_code = 98 then touche_pn_2=1
if key_down_code = 99 then touche_pn_3=1
if key_down_code = 100 then touche_pn_4=1
if key_down_code = 101 then touche_pn_5=1
if key_down_code = 102 then touche_pn_6=1
if key_down_code = 103 then touche_pn_7=1
if key_down_code = 104 then touche_pn_8=1
if key_down_code = 105 then touche_pn_9=1
if key_down_code = 96 then touche_pn_0=1
return
bibiotheque_touche_2:
if key_up_code = 65 then touche_a=0
if key_up_code = 66 then touche_b=0
if key_up_code = 67 then touche_c=0
if key_up_code = 68 then touche_d=0
if key_up_code = 69 then touche_e=0
if key_up_code = 70 then touche_f=0
if key_up_code = 71 then touche_g=0
if key_up_code = 72 then touche_h=0
if key_up_code = 73 then touche_i=0
if key_up_code = 74 then touche_j=0
if key_up_code = 75 then touche_k=0
if key_up_code = 76 then touche_l=0
if key_up_code = 77 then touche_m=0
if key_up_code = 78 then touche_n=0
if key_up_code = 79 then touche_o=0
if key_up_code = 80 then touche_p=0
if key_up_code = 81 then touche_q=0
if key_up_code = 82 then touche_r=0
if key_up_code = 83 then touche_s=0
if key_up_code = 84 then touche_t=0
if key_up_code = 85 then touche_u=0
if key_up_code = 86 then touche_v=0
if key_up_code = 87 then touche_w=0
if key_up_code = 88 then touche_x=0
if key_up_code = 89 then touche_y=0
if key_up_code = 90 then touche_z=0
if key_up_code = 27 then touche_echap=0
if key_up_code = 112 then touche_f1=0
if key_up_code = 113 then touche_f2=0
if key_up_code = 114 then touche_f3=0
if key_up_code = 115 then touche_f4=0
if key_up_code = 116 then touche_f5=0
if key_up_code = 117 then touche_f6=0
if key_up_code = 118 then touche_f7=0
if key_up_code = 119 then touche_f8=0
if key_up_code = 120 then touche_f9=0
if key_up_code = 121 then touche_f10=0
if key_up_code = 122 then touche_f11=0
if key_up_code = 123 then touche_f12=0
if key_up_code = 45 then touche_inser=0
if key_up_code = 46 then touche_suppr=0
if key_up_code = 49 then touche_1=0
if key_up_code = 50 then touche_2=0
if key_up_code = 51 then touche_3=0
if key_up_code = 52 then touche_4=0
if key_up_code = 53 then touche_5=0
if key_up_code = 54 then touche_6=0
if key_up_code = 55 then touche_7=0
if key_up_code = 56 then touche_8=0
if key_up_code = 57 then touche_9=0
if key_up_code = 48 then touche_0=0
if key_up_code = 8 then touche_retour=0
if key_up_code = 13 then touche_enter=0
if key_up_code = 20 then touche_maj_ver=0
if key_up_code = 16 then touche_maj=0
if key_up_code = 17 then touche_ctrl=0
if key_up_code = 18 then touche_alt=0
if key_up_code = 32 then touche_espace=0
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
if key_up_code = 35 then touche_fin=0
if key_up_code = 19 then touche_pause=0
if key_up_code = 33 then touche_page_haut=0
if key_up_code = 34 then touche_page_bas=0
if key_up_code = 144 then touche_ver_num=0
if key_up_code = 111 then touche_slash=0
if key_up_code = 106 then touche_etoile=0
if key_up_code = 109 then touche_moins=0
if key_up_code = 107 then touche_plus=0
if key_up_code = 110 then touche_virgule=0
if key_up_code = 97 then touche_pn_1=0
if key_up_code = 98 then touche_pn_2=0
if key_up_code = 99 then touche_pn_3=0
if key_up_code = 100 then touche_pn_4=0
if key_up_code = 101 then touche_pn_5=0
if key_up_code = 102 then touche_pn_6=0
if key_up_code = 103 then touche_pn_7=0
if key_up_code = 104 then touche_pn_8=0
if key_up_code = 105 then touche_pn_9=0
if key_up_code = 96 then touche_pn_0=0
return
' Bibliothèque des touches===================================================FIN
' Bibliothèque de création de camera============================================
actualiser_camera:
if camera_activer = 1
if camera_activer_position=1
if touche_haut=1
3d_move numero_camera%,vitesse_deplacement_camera
end_if
if touche_bas=1
3d_move numero_camera%,(0-vitesse_deplacement_camera)
end_if
end_if
if camera_activer_rotation=1
if touche_gauche=1
3d_y_rotate numero_camera%,(o3d_y_rotate(numero_camera%)+vitesse_rotation_camera)
end_if
if touche_droit=1
3d_y_rotate numero_camera%,(o3d_y_rotate(numero_camera%)-vitesse_rotation_camera)
end_if
end_if
if camera_activer_hauteur=1
if touche_plus=1
3d_y_position numero_camera%,o3d_y_position(numero_camera%)+vitesse_deplacement_camera
end_if
if touche_moins=1
3d_y_position numero_camera%,o3d_y_position(numero_camera%)-vitesse_deplacement_camera
end_if
end_if
3d_position numero_camera_viser,o3d_x_position(numero_camera%),o3d_y_position(numero_camera%),o3d_z_position(numero_camera%)
3d_rotate numero_camera_viser,o3d_x_rotate(numero_camera%),o3d_y_rotate(numero_camera%),o3d_z_rotate(numero_camera%)
3d_move numero_camera_viser,1
if camera_vole = 1 then 3d_point_object numero_camera%,numero_camera_viser
cam_position o3d_x_position(numero_camera%),o3d_y_position(numero_camera%)+camera_y_position1_modifier,o3d_z_position(numero_camera%)
point_position o3d_x_position(numero_camera_viser),o3d_y_position(numero_camera_viser)+camera_y_position2_modifier,o3d_z_position(numero_camera_viser)
end_if
return

cree_camera:
3D_cube number_3d_objects+1,1 : numero_camera_viser=number_3d_objects : 3D_hide numero_camera_viser
3D_cube number_3d_objects+1,1 : numero_camera_default=number_3d_objects : 3D_hide numero_camera_default
numero_camera%=numero_camera_default
return
' Bibliothèque de création de camera=========================================FIN
' Les bibiothèques sous programme############################################FIN

' SOUS PROGRAMME PRINCIPALE#####################################################
programme:
gosub actualiser_camera
return
' SOUS PROGRAMME PRINCIPALE##################################################FIN
' LES SOUS PROGRAMMES########################################################FIN

Tu doit utiliser les touches flécher ici mais si je te le met c'est pour que tu comprendre la structure qui me semble fonctionner le mieux pour la 3D.

A + et bon courage pour tes début
ps: je vais crée un tutoriel pour les débutant en 3D dans panoramique (sans fautes d’orthographe) avec des exemples a faire et tout quand j'aurais du temps
Revenir en haut Aller en bas
limp4re




Nombre de messages : 3
Date d'inscription : 04/05/2011

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyJeu 12 Mai 2011 - 20:46

Merci a toi Jimx78

dsl de répondre que maintenant mais reprise du lycé après les vacances Razz

se weekend j'aurais surement du temps de libre et je vais suivre se que tu m'a expliquer et tester ta méthode .

sinon le tuto 3D serrait le bien venu parceque ya pas beaucoup d'aide à part le manuel ou il y a juste les mots clé et une brève explication pale
Revenir en haut Aller en bas
jpcr

jpcr


Nombre de messages : 276
Age : 57
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyJeu 12 Mai 2011 - 22:39

salut,

étant nouveau aussi, je dois dire qu'un tutoriel 3d serait super.

merci d'avance.
jp
Revenir en haut Aller en bas
http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
Jack
Admin
Jack


Nombre de messages : 2395
Date d'inscription : 28/05/2007

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyVen 13 Mai 2011 - 7:49

S'il n'y a pas de volontaires pour un tutoriel sur la 3D, je peux en commencer un ce week-end et le mettre dans la rubrique "tutoriels et éclaircissements".

Il serait basé sur celui qui existe déja sur le site:
http://panoramic-language.pagesperso-orange.fr/French/Tuto/BASE3D.htm
Revenir en haut Aller en bas
https://panoramic.1fr1.net
jpcr

jpcr


Nombre de messages : 276
Age : 57
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyVen 13 Mai 2011 - 8:58

Jack,

je suis débutant en Panoramic mais pas en programmation. Si tu veux , je peux t'aider en testant les exemples et en donnant ma vision de débutant , qu'en penses tu?

si oui , tu peux m'envoyer un pm pour en discuter.

merci
jp
Revenir en haut Aller en bas
http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
jpcr

jpcr


Nombre de messages : 276
Age : 57
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptySam 14 Mai 2011 - 10:42

Bonjour,

je rebondis sur ce post pour demander un tutoriel 3D car je suis extrêmement perplexe.habitué a Blender , j'ai un certain confort avec les déplacements selon les axes X,Y,Z.


dans Panoramic, cette logique ne me semble( et je me trompe certainement) pas respectée ou en tout cas est surprenante .
par exemple :

en blender , si je me déplace le long de l'axe y je vais le long de cet axe en visualisant un point devant moi.

en panoramic , ça semble se déplacer un peu puis ... ça se met a tourner??? je ne lui ai jamais demandé de tourner.il ajit comme si il forçait en permanence la caméra a regarder en 0,0,0 quelque soient les instructions données par le programmeur.
voici un code très simple qui montre bien le problème, au début tout va bien puis ça se met a tourner sans raison et au lieu de continuer a voir le coté de théière on voit maintenant son chapeau et on voit bien la rotation des axes a la fin.

Code:
scene3d 1
axes_show
rem create a 3D object (a teapot)

3d_teapot 1

rem position the 3D camera in (2,3,6)
' loin
cam_position 2,3,16
' se rapproche
dim x
for x=16 to 1 step -0.5
cam_position 2,3,x
wait 100
next x


bref : help!!



merci
jp
Revenir en haut Aller en bas
http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
Jicehel

Jicehel


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

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptySam 14 Mai 2011 - 19:55

Bon, la 3D, je n'ai pas encore commencé, mais je m'y mettrai avec les pro qui nous ont rejoint ^^. Je pense qu'avec leur arrivée, les tutos ne vont pas tarder Smile
Revenir en haut Aller en bas
Jack
Admin
Jack


Nombre de messages : 2395
Date d'inscription : 28/05/2007

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptySam 14 Mai 2011 - 21:08

Maintenant que tu as donné un exemple, je comprends mieux ce que tu veux dire.

Ce qui se passe est tout à fait normal. Tu as l'impression que la théière bouge alors qu'elle est parfaitement immobile: c'est la caméra que tu fais bouger et cette caméra regarde toujours le point origine (0,0,0). Comme la caméra ne passe pas à la verticale de la théière, tu as l'impression que la théière a tourné.

Voici le même exemple, mais en faisant passer la caméra au dessus de la théière.
J'ai rajouté 2 lignes:
3D_position 1, 2,3,0 qui place la théière en (2,3,0) donc sous la trajectoire de la caméra, à la verticale de la trajectoire.
point_position 2,3,0 qui fait pointer la caméra sur la théière

Code:
scene3d 1
axes_show
rem create a 3D object (a teapot)

3d_teapot 1

3D_position 1, 2,3,0
point_position 2,3,0

rem position the 3D camera in (2,3,6)
' loin
cam_position 2,3,16
' se rapproche
dim x
for x=16 to 2.5 step -0.5
cam_position 2,3,x
wait 100
next x

Cette fois, la théière se présente toujours sous le même angle vu de la caméra, elle ne semble plus bouger. Remarque : la caméra la traverserait si on laisse 1 dans la boucle. c'est pourquoi j'arrête le mouvement de la caméra au point (2, 3, 2.5)

Une autre solution, c'est de laisser la théière là où elle est. Je te rappelle que lorsqu'un objet est créé, il est créé en (0,0,0).
On laisse donc la théière en (0,0,0), mais on fait passer la caméra à la verticale de la théière:

cam_position 0,3,16 met la caméra dans le plan YZ (coordonnée x nulle) et cam_position 0,3,x fait bouger la caméra dans le plan YZ (la coordonnée sur X est toujours nulle)

Code:
scene3d 1
axes_show
rem create a 3D object (a teapot)

3d_teapot 1

rem position the 3D camera in (0,0,6)
' loin
cam_position 0,3,16
' se rapproche
dim x
for x=16 to 1 step -0.5
cam_position 0,3,x
wait 100
next x

Autre chose, si tu veux faire bouger la théière et non pas la caméra, il y a alors 2 choses à ne pas confondre:
3D_position N, x, y, z positionne brutalement l'objet N en (x, y, z)
3D_move N, t bouge l'objet N de t sur sa direction propre.
La direction de l'objet N ayant été définie (ou pas) par 3 rotations 3D_x_rotate, 3D_y_rotate, 3D_z_rotate. Si tu utilises 3D_rotate, alors attention: on fait tourner l'objet d'abord sur X puis sur Y puis sur Z !

Je pense que ces 2 exemples sont le début du tutoriel sur la 3D...
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Jicehel

Jicehel


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

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptySam 14 Mai 2011 - 21:36

Ca y ressemble Smile Bon, ben je n'ai plus qu'à m'y mettre de mon côté maintenant et merci Jack pour les éclaircissements
Revenir en haut Aller en bas
jpcr

jpcr


Nombre de messages : 276
Age : 57
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyDim 15 Mai 2011 - 10:47

merci Jack, je m'y met moi aussi.

voila un dimanche qui promet... Very Happy

jp
Revenir en haut Aller en bas
http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
jimx78

jimx78


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

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyDim 15 Mai 2011 - 23:44

Salut a tous

Voici mon premier tutoriel qui sert à apprendre à utiliser la 3D dans panoramic.
Tout le monde peut le lire car je vais partir de zero.

I Comment faire la 3D?
Déjà il faut crée une scène 3D par la commande:
Code:
scene3D 1
Il est preferable d'utiliser la commande full_space pour mettre tout l'espace disponible à la scène 3D
Code:
scene3D 1
full_space 1
Voir avec un plein écran:
Code:
full_space 0
scene3D 1
full_space 1
On peut changer la couleur de fond par la commande color.
Code:
full_space 0
scene3D 1
full_space 1
color 1,0,0,255
Par défaut la couleur est blanche. (soit color 1,0,0,0)
On peut également activer les axes de couleurs
(X pour le rouge, Y pour le vert et bleu pour le Z:
Code:
full_space 0
scene3D 1
full_space 1
color 1,0,0,255
axes_show
Toutes les commandes de 3D sont automatiquement transmise a la première scène3D crée. Si vous avez plus de une scène 3D, il faudra rajouter la commande 3D_target_is n. Mais ne vous prenez pas la tête avec cela pour le moment Wink

II La lumière
Une lumière est automatiquement crée a la création de la scène3D.
Elle est unique et on peut régler sa position par la commande light_position
Code:
full_space 0
scene3D 1
full_space 1
color 1,0,0,255
light_position 0,1000,0 : ' La lumière est en haut
3d_teapot 1 : 3d_z_position 1,4 : ' (on vera ce qu'il y a à gauche plus tard.)
Si il n'y a pas de lumière, tout les objets (non texturer) seraient noire.
Attention> Il n'y a PAS l'effet de: plus la lumière est loin et moins il y a de lumière. Vous me suivez?
Code:
full_space 0
scene3D 1
full_space 1
color 1,0,0,255
light_position 0,10000000000,0 : ' La lumière est très haute mais il y a la même FORCE de lumière!
3d_teapot 1 : 3d_z_position 1,4 : ' (on vera ce qu'il y a à gauche plus tard.)

III Les axes
Rappel: une scène2D a deux axes le X et le Y.
Plus le X est important, plus on va vers la droite.(Si le X est NUL alors on est a l’extrême gauche)
Plus le Y est important, plus on va vers le bas.(Si le Y est NUL alors on est a l’extrême haut)
Il n'y a donc pas de chiffre négatif ici.

Pour la scene3D, ce n'est pas le cas. On peut avoir des nombre négatif. En 3D les axes sont le X, Y, et Z.
Arrow Le centre du monde 3D est la position ou les valeurs X,Y,Z sont égale a 0.
cam�ra - Problème caméra et 3D Dsc00710
Attention certain vont être surprit:
Le plus courent est le système de coordonnées main gauche. Comme panoramic donc!
Mais blender n'est pas conventionnel, luis, il est en système main droite!
Donc le Y représente la hauteur dans panoramic quand c'est le z dans blender!
Ce problème se contourne facilement mais on fera cela plus tard.

IV La caméra
Déjà, comment caractériser un point en 3D?
Il est caractériser par sa position X,Y et Z.
Imaginons un premier point dans la scène 3D.
cam�ra - Problème caméra et 3D 11

Imaginons un second point
cam�ra - Problème caméra et 3D 12

En créant en premier le point 1 et ensuite le point 2 on devine une direction:
cam�ra - Problème caméra et 3D 13

1>Maintenant il suffit juste de comprendre que le point 1 représente la camera. Wink
2>Et que le point 2 représente le point de viser.Laughing

1>Pour modifier la position de la camera (soit le point 1 sur mon schéma) , il y a la commande cam_position x,y,z
2>Pour modifier le point de viser (soit le point 2 sur mon schéma), il y a la commande point_position x,y,z

La camera regarde toujours le point de viser.
Je vous expliquerais comment se déplacer en 3D plus tard.

V Les objets 3D
Quand on crée un objet dans panoramic, on luis attribut un numéro de suivi.
Exemple:
Code:
scene3D 1 : ' Le numéro est le 1 ici
On ne peut pas avoir 2 objet au même numéro.
Exemple:
Code:
scene3D 1
scene3D 1 : ' L'erreur est ici
En 3D, c'est pareil. Il ne peut pas y avoir 2 objet 3D au même numéro.

En créant une scène 3D, on pourrait croire que si on est a:
Code:
scene3D 1
Qu'il faut continuer par:
Code:
scene3D 1
3d_teapot 2
Mais c'est faux car les numeros de suivi des objets sont séparé des numeros de suivi des objets 3D!
Code:
full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3d_teapot 1 : ' le numero 1 marche
' Les numeros de suivi des objets sont séparé des numeros de suivi des objets 3D!

Ce qui est cool dans panoramic, c'est que l'on peut crée des objets 3D basic très facilement!
Il suffi juste de mettre les paramètres propre a l'objet3D que l'on veu crée. (comme la longueur d'un côté pour un cube ou le rayon pour une sphere Wink)
Code:
full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3d_torus 1,2,0.5
' regarder les exemples inclut dans panoramic dans aide/Manuel de référence
' Choisisser les bonnes commandes et appuyer sur charger l'exemple ;)
Les objets de panoramic
3d_box
3d_cone
3d_cube
3d_cylinder
3d_dodecahedron
3d_line (3d_line_width)
3d_plane
3d_sphere
3d_teapot
3d_text (3d_text_change)
3d_torus

Pour importer des objet on verra les commandes plus tard

On peut également les supprimer ces objet 3D!
Il y a 2 commandes, la première pour supprimer 1 objet3D en particulier (3d_delete n) l'autre pour supprimer tout les objets de la scene d'un coup (3d_delete_all)

Exemple:
Code:
full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3d_torus 1,2,0.5
wait 3000
3d_delete 1 : ' le numero de suivie numero 1 est anssi libéré
3d_sphere 1,1 : ' le numero de suive peut donc être 1.
wait 3000
3d_sphere 2,1 : 3d_x_position 2,3 : ' création d'une autre sphere
wait 3000
3d_delete_all : ' tout les objet 3D sont maintenant supprimer

Ce qui est encore plus cool, c'est que l'on peut importer des objets 3D que l'on a crée!
Mais attention que cela soit au bon format. Les extensions qui fonctionne sont *.MD2 et *.3DS
Beaucoup de logiciel de 3D supporte ces format comme blender, 3D Studio Max...
L'erreur a ne pas commettre sur les formats, c'est de confondre enregistrer sous et exporter!
Par exemple Blender a comme format *.blend alors qu'en faite dans: Fichier/exporter ; il y a tout plein d’extension différente.

Si vous n'avez pas de logiciel de 3D je vous recommande très fortement Blender.
Pour apprendre a utiliser blender (Partie I et Partie II suffise.)
http://www.siteduzero.com/tutoriel-3-11714-debutez-dans-la-3d-avec-blender.html

Attention:Les numéro d'objet 3D est la lettre n (ou N) dans toute les commandes qui vienne.

VI Position, rotation, dimension
Pour déplacer les objets dans l'espace, il y a la commande:
Code:
3D_position n,x,y,z
Cette commande est utile pour initialiser la position de l'objet au début du code.
Pour déplacer que sur un axe en particulier il y a les 3 commandes:
Code:
3D_x_position n,x
3D_y_position n,y
3D_z_position n,z

Exemple:
Code:
Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3d_teapot 1
message "Avant d'initialiser la position"
3d_position 1,3,0,1
' apres
Il est bien de pouvoir déplacer un objet, encore faut il connaître sa position. Les commandes sont:
Code:
O3D_X_position(n)
O3D_Y_position(n)
O3D_Z_position(n)
Exemple:
Code:
Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3d_teapot 1
message O3d_x_position(1)
message O3d_y_position(1)
message O3d_z_position(1)
3d_position 1,3,-1,1
message O3d_x_position(1)
message O3d_y_position(1)
message O3d_z_position(1)
Il y a également une commande qui permet de déplacer les objets mais elle est un peu spécial.
Tout les objets ont un sens. Dans blender c'est l'axe Z positif (Z+) ce qui correspond au Y+ dans panoramic.
Par exemple, sur blender, l'avant de la voiture doit être positionner vers l'axe z+ pour que la voiture avance normalement sur panoramic.
cam�ra - Problème caméra et 3D Szfegtr
Cette commande est génial, on donne juste le numéro de l'objet et la vitesse et l'objet avance!
Exemple:
Code:
' Utiliser les touches fléchés
full_space 0
label prog , touche_enfoncer , touche_lacher : ' déclaration des sous-programme
dim touche_gauche , touche_haut , touche_droit , touche_bas : ' déclaration des variables
dim vitesse
vitesse=0.03 : ' la vitesse de déplacement
scene3D 1 : full_space 1 : color 1,0,0,255 : ' création de la scene 3D
3d_cube 1,1 : 3d_rotate 1,0,45,0 : ' création du cube
timer 2 : timer_interval 2,1 : on_timer 2,prog : ' création du timer (en dernier pour eviter les bugs)
on_key_down 0,touche_enfoncer : ' evenement si on enfonce une touche
on_key_up 0,touche_lacher : ' evenement si on lache une touche
end  : ' fin du programme, place aux evenements

prog:
if key_down_code=27 : ' si on appui sur echap (quitter)
timer_off_all : ' destruction de tout les timers
terminate
end_if

if touche_haut=1
3d_move 1,vitesse : ' On donne la vitesse :)
end_if
if touche_bas=1
3d_move 1,0-vitesse : ' 0-la vitesse
end_if
if touche_gauche=1
3d_y_rotate 1,o3d_y_rotate(1)+2
end_if
if touche_droit=1
3d_y_rotate 1,o3d_y_rotate(1)-2
end_if
return

touche_enfoncer:
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
return

touche_lacher:
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
return
Si vous ne comprenez pas tout c'est pas grave. Vous devez simplement comprendre 3D_move et 3d_position Wink

Les rotations
Pour mettre la rotation a un objet, il y a la commande 3D_rotate N,x,y,z. Pour réglé les rotations sur l'un des 3 axes séparément, il y a les 3 commandes:
Code:
3D_x_rotate n,x
3D_y_rotate n,y
3D_z_rotate n,z
Comme vous vous en douter, les rotation vont de 0 à 360 oui mais:
Si on donne une rotation a (360+90=450) 450,c'est comme si on donner une rotation de 90.

Exemple:
Code:
Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255
3d_teapot 1 : 3d_position 1,-1,0,3 : ' une teapot a gauche
3d_teapot 2 : 3d_position 2,1,0,3 : ' l'autre a droite
3d_y_rotate 1,450  : ' la rotation fonctionne (même si c'est plus grand que 360)
3d_y_rotate 2,90 : ' il on la même rotation au final. (360+90=450)

Pour connaître la rotation d'un objet:
Code:
O3D_x_rotate(n)
O3D_y_rotate(n)
O3D_z_rotate(n)
Ce qui va suivre avec les rotations est très important à assimiler.
Les rotations dans panoramic sont local. Et cela veux dire quoi? Je vais vous l'expliquez en 3 images:
Voila un cube dans panoramic disons.(même si l'on devine blender!)
cam�ra - Problème caméra et 3D 111

Si on fait une rotation sur le côté vert cela donnera:
cam�ra - Problème caméra et 3D 333

Et non cela!
cam�ra - Problème caméra et 3D 222

Vous comprenez?

Exemple:
Code:
label changer_rotation_local , changer_rotation_globale
dim rotation_x_globale , rotation_y_globale , rotation_z_globale
Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
scroll_bar 2 : min 2,0 : max 2,360 : width 2,300 : top 2,20 : left 2,20 : hint 2,"X local"
scroll_bar 3 : min 3,0 : max 3,360 : width 3,300 : top 3,40 : left 3,20 : hint 3,"Y local"
scroll_bar 4 : min 4,0 : max 4,360 : width 4,300 : top 4,60 : left 4,20 : hint 4,"Z local"

scroll_bar 5 : min 5,0 : max 5,360 : width 5,300 : top 5,20 : left 5,screen_x/2 : hint 5,"X globale"
scroll_bar 6 : min 6,0 : max 6,360 : width 6,300 : top 6,40 : left 6,screen_x/2 : hint 6,"Y globale"
scroll_bar 7 : min 7,0 : max 7,360 : width 7,300 : top 7,60 : left 7,screen_x/2 : hint 7,"Z globale"

3d_teapot 1 : 3D_color 1,0,255,0 :  3d_scale 1,4,4,4 : 3d_x_position 1,-3
3d_teapot 2 : 3D_color 2,255,0,0 :  3d_scale 2,4,4,4 : 3d_x_position 2,3

on_change 2,changer_rotation_local
on_change 3,changer_rotation_local
on_change 4,changer_rotation_local

on_change 5,changer_rotation_globale
on_change 6,changer_rotation_globale
on_change 7,changer_rotation_globale

end
changer_rotation_local:
3D_rotate 1,position(2),position(3),position(4)
return

changer_rotation_globale:
rotation_x_globale=position(5)
rotation_y_globale=position(6)
rotation_z_globale=position(7)
3d_z_rotate 2,0
3d_y_rotate 2,0
3D_x_rotate 2,0
3d_rotate 2,rotation_x_globale,rotation_y_globale,rotation_z_globale
return
Changer les rotations des 2 teapots dans tout les sens, et remetter les a 0.
Celui de gauche est local, (parfait pour une voiture,avion,etc) il est dans n'importe quel sens.
Celui de droite est globale (il a reprit sa position d'origine) et vous voulez une globale, vous savez maintenant comment faire pour l'utiliser (regarder l'exemple)

Il y a également une autre commande pour donner la rotation a un objet: 3d_point_object n1,n2
Exemple:
Code:
' utiliser les touches fléché
' regarder la ligne <aaaaaaaaaaaa plus bas
full_space 0
label prog , touche_enfoncer , touche_lacher : ' déclaration des sous-programme
dim touche_gauche , touche_haut , touche_droit , touche_bas : ' déclaration des variables
dim vitesse
vitesse=0.03 : ' la vitesse de déplacement
scene3D 1 : full_space 1 : color 1,0,0,255 : ' création de la scene 3D
3d_cube 1,1 : 3d_rotate 1,0,45,0 : 3d_color 1,0,255,0 : ' création du cube allier

3d_cube 2,1 : 3d_position 2,-2,0,1 : 3d_color 2,255,0,0 : ' création de l'ennemi :)

timer 2 : timer_interval 2,1 : on_timer 2,prog : ' création du timer (en dernier pour eviter les bugs)
on_key_down 0,touche_enfoncer : ' evenement si on enfonce une touche
on_key_up 0,touche_lacher : ' evenement si on lache une touche
end  : ' fin du programme, place aux evenements

prog:
3D_point_object 2,1  : ' L'ennemi te regarde <aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

if key_down_code=27 : ' si on appui sur echap (quitter)
timer_off_all : ' destruction de tout les timers
terminate
end_if

if touche_haut=1
3d_move 1,vitesse : ' On donne la vitesse :)
end_if
if touche_bas=1
3d_move 1,0-vitesse : ' 0-la vitesse
end_if
if touche_gauche=1
3d_y_rotate 1,o3d_y_rotate(1)+2
end_if
if touche_droit=1
3d_y_rotate 1,o3d_y_rotate(1)-2
end_if
return

touche_enfoncer:
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
return

touche_lacher:
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
return
Cette commande peut servir a pointé quelque chose sur quelqu'un.

La dimension
A quoi sa sert? très concrètement, c'est très utile pour mettre tout les objets a la même échelle. Dans l’extrême on aurais une voiture plus grand que le circuit ou un immeuble de la taille d'une chaussure! Very Happy
Il y a la commande 3D_scale n,x,y,z.Il y a également la possibilité de faire comme la rotation et la position, le changement par un axe en particulier:
Code:
3d_x_scale n,x
3d_y_scale n,y
3d_z_scale n,z

La donné attendu est un coefficient multiplicateur, donc c'est comme pour les pourcentages:
50%=0.5 20%=0.2 1%=0.01 100%=1
Donc pour réduire un objet de 50% mettre 0.5 (soit 1/2)
On peut aussi l'augmenter ! > 150%=1.5 300%=3 1000%=10

Exemple:
Code:
Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255
3d_teapot 1
wait 2000
3D_color 1,255,0,0 : ' il devient rouge
3d_scale 1,1,1,1 : ' revient a modifier la taille de lobjet a 100% soit il ne change pas!
wait 2000
3D_color 1,0,255,0 : ' il devient vert
3d_scale 1,5,5,5 : ' 5=500% il grossis
wait 2000
3D_color 1,0,0,255 : ' il devient bleu
3d_scale 1,1,1,1 : ' il reprend sa taille d'origine
Conclusion:
si le coefficient multiplicateur < 1 il rétréci par rapport a sa taille d'origine
si le coefficient multiplicateur = 1 il est égale par rapport a sa taille d'origine
si le coefficient multiplicateur > 1 il se dilate par rapport a sa taille d'origine

Cette commande est également utile pour faire certaine animation: (une explosion). Notre objet explosion a une toute petite taille et plus le temps s'écoule, plus cette objet gonfle. afro

Pour connaître la dimension de notre objet:
Code:
O3D_x_scale(n)
O3D_y_scale(n)
O3D_z_scale(n)

VII Autres commandes 3D utiles:
Il y a la commande 3D_color n,r,v,b pour changer la couleur de l'objet. Par default la couleur est noire. Si r=v=b alors la couleur est grise. (de 0 a 255 pour le rouge, le vert et le bleu)

On peut changer la transparence d'un objet par la commande 3D_transparent N,intensité (de 0 a 255)
Cette commande est utile pour faire les vitres, l'eau, le feu, nuage ,etc...

On peut aussi cacher les objets directement par la commande 3D_hide n
Cette commandes servira pour les collisions en particulier. On refait apparetre l'objet avec la commandes 3D_show n

Exemple:
Code:
Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3D_teapot 1 : 3d_scale 1,7,7,7
message "couleur rouge"
3D_color 1,255,0,0
message "Tranparence"
3d_transparent 1,80
message "cacher"
3D_hide 1
message "reafficher"
3D_show 1

VIII Comment organiser son programme pour faire de la 3D Question
Pour faire un programme en 3D, les commandes de 3D sont insuffisant:
1)Il faut géré les touches appuyer
2)Il faut une partie de code qui s’exécute tout le temps. (Pour qu'un ennemie se déplace, pour faire bouger l'eau... )
3)Crée les objet 3D et les autres objet.

Voici la structure la mieux adapté pour le moment:
Code:
error_french
label programme , touche_enfoncer , touche_lacher : ' (les label c'est là)
' dim (les déclarations de variable c'est ici)
' PROGRAMME PRINCIPALE##########################################################

' (Ici on crée la scene, on met les objets etc...)

' PROGRAMME PRINCIPALE#######################################################FIN
timer 1 : timer_interval 1,1 : on_timer 1,programme
on_key_down 0,touche_enfoncer : ' si on appui sur une touche alors on va a touche_enfoncer
on_key_up 0,touche_lacher : ' si on LACHE sur une touche alors on va a touche_lacher
end : ' LES SOUS PROGRAMMES#####################################################

touche_enfoncer:
' ici on vérifi si une touche est enfoncer
return

touche_lacher:
' ici on vérifi si une touche est lacher
return

programme:
' (ici c'est executer tout les 1/1000 de seconde. donc tout le temp,
'  cela sert a effectuer une action si une touche est enfoncer)
return

' LES SOUS PROGRAMMES########################################################FIN

' A savoir> si on met le programme en pause, il faut desactiver le timer par timer_off 1
' et le réactivé par timer_on 1 à la fin de la pause.

Voici un exemple concret:
Code:
error_french
label programme , touche_enfoncer , touche_lacher
dim touche_gauche , touche_haut , touche_droit , touche_bas
dim vitesse
' PROGRAMME PRINCIPALE##########################################################
vitesse=0.03 : ' la vitesse de déplacement
full_space 0
scene3D 2 : full_space 2 : color 2,0,0,255 : ' création de la scene 3D
3d_cube 1,1 : 3d_rotate 1,0,45,0 : ' création du cube
' PROGRAMME PRINCIPALE#######################################################FIN
timer 1 : timer_interval 1,1 : on_timer 1,programme
on_key_down 0,touche_enfoncer : ' si on appui sur une touche alors on va a touche_enfoncer
on_key_up 0,touche_lacher : ' si on LACHE sur une touche alors on va a touche_lacher
end : ' LES SOUS PROGRAMMES#####################################################

touche_enfoncer:
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
return

touche_lacher:
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
return

programme:
if key_down_code=27 : ' si on appui sur echap (quitter)
timer_off_all : ' destruction de tout les timers
terminate
end_if

if touche_haut=1
3d_move 1,vitesse : ' On donne la vitesse :)
end_if
if touche_bas=1
3d_move 1,0-vitesse : ' 0-la vitesse
end_if
if touche_gauche=1
3d_y_rotate 1,o3d_y_rotate(1)+2
end_if
if touche_droit=1
3d_y_rotate 1,o3d_y_rotate(1)-2
end_if
return
' LES SOUS PROGRAMMES########################################################FIN
IX Comment se déplacer dans une scène 3D Question
Pour ce déplacer en 1er personne, il y a une solution qui fonctionne sans formule mathématiques mais par de la logique.
rappel: Pour utiliser la camera, il y a 2 point, la position x,y,z de la camera et la position x,y,z du point de visé.
Pour la soluce, nous allons utiliser 2 cubes:
La position du cube numéro 1 sera la position de la camera.
La position du cube numéro 2 sera la position du point de viser.
(Il serons cacher par 3D_hide n pour que l'on ne les vois pas)
cam�ra - Problème caméra et 3D Exemple_camera

Dans le programme, (celui qui s’exécute tout le temps par le timer)
nous allons luit faire effectuer les 4 opérations suivantes:
1) Le cube 2 va prendre la même position et rotation que le cube 1. (les deux cubes sont emboiter l'un dans l'autre)
2) On avance le cube 2 par la commande 3D_move 2,1
3) On change la position du point de visé qui devient la position du cube 2,
4) On change la position de la caméra qui devient la position du cube 1.

Si on veux déplacer la camera, il suffit de déplacer la position du cube 1 (par 3D_move 1,vitesse par exemple)
Si on veux tourner la caméra, il suffit de mettre une rotation au cube 1.
Exemple 1:
Code:

error_french
label actualiser_vue
' PROGRAMME PRINCIPALE##########################################################
Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position -100,50,-200
cam_position 2,0,-2
3D_cube 1,1 : 3d_color 1,255,0,0 : 3d_transparent 1,50 : ' C'est la caméra
3d_cube 2,1 : 3d_color 2,0,255,0  : 3d_transparent 2,50 : ' C'est le point de visé
3d_position 1,-2,0,-1  : ' je met le cube 1 n'importe comment pour comprendre
3d_rotate 1,45,0,45    : ' je met le cube 1 n'importe comment pour comprendre
gosub actualiser_vue
' PROGRAMME PRINCIPALE#######################################################FIN
end : ' LES SOUS PROGRAMMES#####################################################

actualiser_vue:
' 1) etape 1
wait 2000
3d_position 2,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
wait 2000
3d_rotate 2,o3d_x_rotate(1),o3d_y_rotate(1),o3d_z_rotate(1)
' 2) etape 2
wait 2000
3d_move 2,1.5
' 3)4) etape 3 et 4 (je l'ai est pas activer exprès):
' point_position o3d_x_position(2),o3d_y_position(2),o3d_z_position(2)
' cam_position o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
return

' LES SOUS PROGRAMMES########################################################FIN
La camera est le cube rouge, le point de viser le vert.

Exemple 2:
Code:

error_french
label programme , touche_enfoncer , touche_lacher , actualiser_vue
dim touche_gauche , touche_haut , touche_droit , touche_bas
dim vitesse_rotation , vitesse_deplacement
' PROGRAMME PRINCIPALE##########################################################
vitesse_rotation=2
vitesse_deplacement=0.02
Full_space 0
scene3D 2 : full_space 2 : color 2,0,0,255 : light_position 0,1000,0
3D_cube 1,1 : 3d_color 1,255,0,0 : 3d_transparent 1,50 : ' C'est la caméra
3d_cube 2,1 : 3d_color 2,0,255,0  : 3d_transparent 2,50 : ' C'est le point de visé
gosub actualiser_vue
' PROGRAMME PRINCIPALE#######################################################FIN
timer 1 : timer_interval 1,1 : on_timer 1,programme
on_key_down 0,touche_enfoncer
on_key_up 0,touche_lacher
end : ' LES SOUS PROGRAMMES#####################################################

touche_enfoncer:
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
return

touche_lacher:
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
return

actualiser_vue:
3d_position 2,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
3d_rotate 2,o3d_x_rotate(1),o3d_y_rotate(1),o3d_z_rotate(1)
3d_move 2,1.5
' point_position o3d_x_position(2),o3d_y_position(2),o3d_z_position(2)
' cam_position o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
return

programme:
if key_down_code=27 : ' si on appui sur echap (quitter)
timer_off_all : ' destruction de tout les timers
terminate
end_if

if touche_haut=1
3d_move 1,vitesse_deplacement : ' On donne la vitesse_deplacement :)
end_if
if touche_bas=1
3d_move 1,0-vitesse_deplacement : ' 0-la vitesse_deplacement
end_if
if touche_gauche=1
3d_y_rotate 1,o3d_y_rotate(1)+vitesse_rotation
end_if
if touche_droit=1
3d_y_rotate 1,o3d_y_rotate(1)-vitesse_rotation
end_if
gosub actualiser_vue
return

' LES SOUS PROGRAMMES########################################################FIN
Exemple 3:
Code:
error_french
label programme , touche_enfoncer , touche_lacher , actualiser_vue
dim touche_gauche , touche_haut , touche_droit , touche_bas
dim vitesse_rotation , vitesse_deplacement
' PROGRAMME PRINCIPALE##########################################################
vitesse_rotation=2
vitesse_deplacement=0.01
Full_space 0
scene3D 2 : full_space 2 : color 2,0,0,255 : ' light_position 0,1000,0
3D_cube 1,1 : 3D_hide 1  : ' ON LES CACHES
3d_cube 2,1 : 3D_hide 2  : ' ON LES CACHES
3d_teapot 3 : 3d_position 3,0,0,1.5
gosub actualiser_vue
' PROGRAMME PRINCIPALE#######################################################FIN
timer 1 : timer_interval 1,1 : on_timer 1,programme
on_key_down 0,touche_enfoncer
on_key_up 0,touche_lacher
end : ' LES SOUS PROGRAMMES#####################################################

touche_enfoncer:
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
return

touche_lacher:
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
return

actualiser_vue:
3d_position 2,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
3d_rotate 2,o3d_x_rotate(1),o3d_y_rotate(1),o3d_z_rotate(1)
3d_move 2,1
point_position o3d_x_position(2),o3d_y_position(2),o3d_z_position(2)
cam_position o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
return

programme:
if key_down_code=27 : ' si on appui sur echap (quitter)
timer_off_all : ' destruction de tout les timers
terminate
end_if

if touche_haut=1
3d_move 1,vitesse_deplacement
end_if
if touche_bas=1
3d_move 1,0-vitesse_deplacement
end_if
if touche_gauche=1
3d_y_rotate 1,o3d_y_rotate(1)+vitesse_rotation
end_if
if touche_droit=1
3d_y_rotate 1,o3d_y_rotate(1)-vitesse_rotation
end_if
gosub actualiser_vue
return

' LES SOUS PROGRAMMES########################################################FIN
Pour la 3ème personne nous verrons cela plus tard.

study Tutoriel en cours de réalisation...
A venir= texture , chaînage , collision ,brouillard, skybox et bien d'autre Exclamation Exclamation Exclamation


Dernière édition par jimx78 le Ven 27 Mai 2011 - 0:54, édité 17 fois
Revenir en haut Aller en bas
Jicehel

Jicehel


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

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyLun 16 Mai 2011 - 8:25

Bon boulot, c'est un bon tuto puisqu'il reprend les notion de base de la 3D et comment l'utiliser dans Panoramic. J'ai hâte de lire la suite.
Revenir en haut Aller en bas
jpcr

jpcr


Nombre de messages : 276
Age : 57
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyLun 16 Mai 2011 - 10:02

oui beau début Jimx78 par contre tu devrais mettre ça sur une page dédiée parce que ça va vite devenir difficile a lire.

si tu n'as pas de site, je peux l’héberger si tu veux(je crée un répertoire pour ton tuto et j'y met ce que tu veux).

jp
Revenir en haut Aller en bas
http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
flowerkinzy

flowerkinzy


Nombre de messages : 100
Date d'inscription : 23/09/2009

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyJeu 19 Mai 2011 - 19:27

Franchement, bravo pour le tuto.
J'ai longtemps bataillé pour comprendre toute seule mais réussir à synthétiser pour l'expliquer à d'autres cheers ! BOn travail

@limp4re: Heureuse de voir quelqu'un encore au lycée! -ça me rassure lol! -
Revenir en haut Aller en bas
jimx78

jimx78


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

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyVen 27 Mai 2011 - 1:07

Salut,

En page 1, je met le tuto a jour, c'est juste pour vous prévenir car quand on édite un message, il n'y a pas d'indication de "nouveau message" ce qui est normal.

https://panoramic.1fr1.net/t1552-probleme-camera-et-3d

@+

Revenir en haut Aller en bas
Jicehel

Jicehel


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

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyVen 27 Mai 2011 - 7:32

Juste 2 mots: merci beaucoup
Revenir en haut Aller en bas
jpcr

jpcr


Nombre de messages : 276
Age : 57
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyVen 27 Mai 2011 - 9:25

merci, je maintiens que ce serait mieux sur une page web que perdu au milieu du forum mais tu fais comme tu veux.
Revenir en haut Aller en bas
http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
Jicehel

Jicehel


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

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyVen 27 Mai 2011 - 10:05

jimx78, si tu est d'accord, je veux bien mettre ton tuto sur une page et essayer de le maintenir en fonction de tes MAJ
Revenir en haut Aller en bas
jimx78

jimx78


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

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyVen 27 Mai 2011 - 10:38

Salut Jicehel et jpcr

En faite je veux bien. C'est juste que je ne peut pas le mettre dans la rubrique Tutoriel. Seul les administrateurs le peuvent.
Voici la source pour le moment:
Code:
[color=blue][size=18]Salut a tous[/size][/color]

Voici mon premier [color=green]tutoriel[/color] qui sert à [color=green]apprendre[/color] à utiliser la [color=green]3D[/color] dans panoramic.
Tout le monde peut le lire car je vais partir de zero.

[size=18][b][u]I Comment faire la 3D?[/u][/b][/size]
Déjà il faut crée une scène 3D par la commande:
[code]scene3D 1[/code]
Il est preferable d'utiliser la commande full_space pour mettre tout l'espace disponible à la scène 3D
[code]scene3D 1
full_space 1
[/code]
Voir avec un plein écran:
[code]full_space 0
scene3D 1
full_space 1
[/code]
On peut changer la couleur de fond par la commande color.
[code]full_space 0
scene3D 1
full_space 1
color 1,0,0,255[/code]
Par défaut la couleur est blanche. (soit color 1,0,0,0)
On peut également activer les axes de couleurs
(X pour le rouge, Y pour le vert et bleu pour le Z:
[code]full_space 0
scene3D 1
full_space 1
color 1,0,0,255
axes_show [/code]
Toutes les commandes de 3D sont automatiquement transmise a la première scène3D crée. Si vous avez plus de une scène 3D, il faudra rajouter la commande [color=blue]3D_target_is n[/color]. Mais ne vous prenez pas la tête avec cela pour le moment ;)

[size=18][b][u]II La lumière[/u][/b][/size]
Une lumière est automatiquement crée a la création de la scène3D.
Elle est unique et on peut régler sa position par la commande light_position
[code]full_space 0
scene3D 1
full_space 1
color 1,0,0,255
light_position 0,1000,0 : ' La lumière est en haut
3d_teapot 1 : 3d_z_position 1,4 : ' (on vera ce qu'il y a à gauche plus tard.)[/code]
Si il n'y a pas de lumière, tout les objets (non texturer) seraient noire.
[color=red]Attention>[/color] Il [color=red]n'[/color]y a [color=red]PAS[/color] l'effet de: plus la lumière est loin et moins il y a de lumière. Vous me suivez?
[code]full_space 0
scene3D 1
full_space 1
color 1,0,0,255
light_position 0,10000000000,0 : ' La lumière est très haute mais il y a la même FORCE de lumière!
3d_teapot 1 : 3d_z_position 1,4 : ' (on vera ce qu'il y a à gauche plus tard.)[/code]

[size=18][u][b]III Les axes[/b][/u][/size]
Rappel: une scène2D a deux axes le X et le Y.
Plus le X est important, plus on va vers la droite.(Si le X est NUL alors on est a l’extrême gauche)
Plus le Y est important, plus on va vers le bas.(Si le Y est NUL alors on est a l’extrême haut)
Il n'y a donc pas de chiffre négatif ici.

Pour la scene3D, ce n'est pas le cas. On peut avoir des nombre négatif. En 3D les axes sont le X, Y, et Z.
:arrow: Le centre du monde 3D est la position ou les valeurs X,Y,Z sont égale a 0.
[url=http://www.servimg.com/image_preview.php?i=20&u=15821527][img]http://i22.servimg.com/u/f22/15/82/15/27/dsc00710.jpg[/img][/url]
[color=red]Attention [/color]certain vont être surprit:
[u]Le plus courent[/u] est le système de coordonnées [color=green]main gauche[/color]. Comme panoramic donc!
Mais blender n'est pas conventionnel, luis, il est en système main droite!
Donc le Y représente la hauteur dans panoramic quand c'est le z dans blender!
Ce problème se contourne facilement mais on fera cela plus tard.

[size=18][u][b]IV La caméra[/b][/u][/size]
Déjà, comment caractériser un point en 3D?
Il est caractériser par sa position X,Y et Z.
Imaginons un premier point dans la scène 3D.
[img]http://www.archive-host.com/files/1015616/bd7172de063197f3c62f696d7c6d6278409a0e82/11.jpg[/img]

Imaginons un second point
[img]http://www.archive-host.com/files/1015619/bd7172de063197f3c62f696d7c6d6278409a0e82/12.jpg[/img]

En créant en premier le[color=red] point 1[/color] et ensuite le [color=red]point 2[/color] on devine une [color=green]direction[/color]:
[img]http://www.archive-host.com/files/1015623/bd7172de063197f3c62f696d7c6d6278409a0e82/13.jpg[/img]

1>Maintenant il suffit juste de comprendre que le [color=red]point 1[/color] représente la camera. ;)
2>Et que le [color=red]point 2[/color] représente le point de viser.:lol:

1>Pour modifier la position de la camera (soit le [color=red]point 1[/color] sur mon schéma) , il y a la commande cam_position x,y,z
2>Pour modifier le point de viser (soit le [color=red]point 2[/color] sur mon schéma), il y a la commande point_position x,y,z

La camera regarde toujours le point de viser.
Je vous expliquerais comment se déplacer en 3D plus tard.

[size=18][u][b]V Les objets 3D[/b][/u][/size]
Quand on crée un objet dans panoramic, on luis attribut un numéro de suivi.
Exemple: [code]scene3D 1 : ' Le numéro est le 1 ici[/code]
On [color=red]ne [/color]peut [color=red]pas [/color]avoir 2 objet au même numéro.
Exemple: [code]scene3D 1
scene3D 1 : ' L'erreur est ici[/code]
En 3D, [u]c'est pareil[/u]. Il [color=red]ne[/color] peut [color=red]pas [/color]y avoir 2 objet 3D au même numéro.

En créant une scène 3D, on pourrait croire que si on est a:
[code]scene3D 1[/code]
Qu'il faut continuer par:
[code]scene3D 1
3d_teapot 2 [/code]
Mais c'est [color=red]faux [/color]car [color=green]les numeros de suivi des objets sont séparé des numeros de suivi des objets 3D![/color]
[code]full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3d_teapot 1 : ' le numero 1 marche
' Les numeros de suivi des objets sont séparé des numeros de suivi des objets 3D![/code]

Ce qui est [color=green]cool [/color]dans panoramic, c'est que l'on peut crée des objets 3D basic très facilement!
Il suffi juste de mettre les paramètres propre a l'objet3D que l'on veu crée. (comme la longueur d'un côté pour un cube ou le rayon pour une sphere ;))
[code]full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3d_torus 1,2,0.5
' regarder les exemples inclut dans panoramic dans aide/Manuel de référence
' Choisisser les bonnes commandes et appuyer sur charger l'exemple ;)[/code]
[u]Les objets de panoramic[/u]
[color=blue]3d_box
3d_cone
3d_cube
3d_cylinder
3d_dodecahedron
3d_line (3d_line_width)
3d_plane
3d_sphere
3d_teapot
3d_text (3d_text_change)
3d_torus[/color]
Pour importer des objet on verra les commandes plus tard

On peut également les [b]supprimer ces objet 3D[/b]!
Il y a 2 commandes, la première pour supprimer 1 objet3D en particulier ([color=blue]3d_delete n[/color]) l'autre pour supprimer tout les objets de la scene d'un coup ([color=blue]3d_delete_all[/color])

[u]Exemple:[/u]
[code]full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3d_torus 1,2,0.5
wait 3000
3d_delete 1 : ' le numero de suivie numero 1 est anssi libéré
3d_sphere 1,1 : ' le numero de suive peut donc être 1.
wait 3000
3d_sphere 2,1 : 3d_x_position 2,3 : ' création d'une autre sphere
wait 3000
3d_delete_all : ' tout les objet 3D sont maintenant supprimer[/code]

Ce qui est encore [b][color=green]plus cool[/color][/b], c'est que l'on peut importer des objets 3D que l'on a crée!
Mais [color=red]attention [/color]que cela soit au bon format. Les extensions qui fonctionne sont *.MD2 et *.3DS
Beaucoup de logiciel de 3D supporte ces format comme blender, 3D Studio Max...
L'erreur a ne pas commettre sur les formats, c'est de confondre [u]enregistrer sous[/u] et [u]exporter[/u]!
Par exemple Blender a comme format *.blend alors qu'en faite dans: Fichier/exporter ; il y a tout plein d’extension différente.

Si vous n'avez pas de logiciel de 3D je vous recommande très fortement Blender.
Pour [color=blue]apprendre [/color]a utiliser [color=blue]blender[/color] (Partie I et Partie II [color=green]suffise[/color].)
[url=http://www.siteduzero.com/tutoriel-3-11714-debutez-dans-la-3d-avec-blender.html]http://www.siteduzero.com/tutoriel-3-11714-debutez-dans-la-3d-avec-blender.html[/url]

[color=red]Attention:[/color]Les [color=green]numéro d'objet 3D[/color] est la lettre [color=green]n[/color] (ou [color=green]N[/color]) dans toute les commandes qui vienne.

[size=18][u][b]VI Position, rotation, dimension[/b][/u][/size]
Pour déplacer les objets dans l'espace, il y a la commande:
 [code]3D_position n,x,y,z[/code]
Cette commande est utile pour initialiser la position de l'objet au début du code.
Pour déplacer que sur un axe en particulier il y a les 3 commandes:
[code]3D_x_position n,x
3D_y_position n,y
3D_z_position n,z[/code]

[u]Exemple:[/u]
[code]Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3d_teapot 1
message "Avant d'initialiser la position"
3d_position 1,3,0,1
' apres[/code]
Il est bien de pouvoir déplacer un objet, encore faut il connaître sa position. Les commandes sont:
 [code]O3D_X_position(n)
O3D_Y_position(n)
O3D_Z_position(n)[/code]
[u]Exemple:[/u]
[code]Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3d_teapot 1
message O3d_x_position(1)
message O3d_y_position(1)
message O3d_z_position(1)
3d_position 1,3,-1,1
message O3d_x_position(1)
message O3d_y_position(1)
message O3d_z_position(1)[/code]
Il y a également une commande qui permet de déplacer les objets mais elle est un peu spécial.
Tout les objets ont un sens. Dans blender c'est l'axe Z positif ([color=blue]Z+[/color]) ce qui correspond au Y+ dans panoramic.
Par exemple, sur blender, l'avant de la voiture doit être positionner vers l'axe [color=blue]z+[/color] pour que la voiture avance normalement sur panoramic.
[img]http://www.archive-host.com/files/1022066/bd7172de063197f3c62f696d7c6d6278409a0e82/szfegtr.JPG[/img]
Cette commande est génial, on donne juste le numéro de l'objet et la vitesse et l'objet avance!
[u]Exemple:[/u]
[code]' Utiliser les touches fléchés
full_space 0
label prog , touche_enfoncer , touche_lacher : ' déclaration des sous-programme
dim touche_gauche , touche_haut , touche_droit , touche_bas : ' déclaration des variables
dim vitesse
vitesse=0.03 : ' la vitesse de déplacement
scene3D 1 : full_space 1 : color 1,0,0,255 : ' création de la scene 3D
3d_cube 1,1 : 3d_rotate 1,0,45,0 : ' création du cube
timer 2 : timer_interval 2,1 : on_timer 2,prog : ' création du timer (en dernier pour eviter les bugs)
on_key_down 0,touche_enfoncer : ' evenement si on enfonce une touche
on_key_up 0,touche_lacher : ' evenement si on lache une touche
end  : ' fin du programme, place aux evenements

prog:
if key_down_code=27 : ' si on appui sur echap (quitter)
timer_off_all : ' destruction de tout les timers
terminate
end_if

if touche_haut=1
3d_move 1,vitesse : ' On donne la vitesse :)
end_if
if touche_bas=1
3d_move 1,0-vitesse : ' 0-la vitesse
end_if
if touche_gauche=1
3d_y_rotate 1,o3d_y_rotate(1)+2
end_if
if touche_droit=1
3d_y_rotate 1,o3d_y_rotate(1)-2
end_if
return

touche_enfoncer:
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
return

touche_lacher:
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
return[/code]
Si vous ne comprenez pas tout c'est pas grave. Vous devez simplement comprendre 3D_move et 3d_position ;)

[u]Les rotations[/u]
Pour mettre la rotation a un objet, il y a la commande [color=blue]3D_rotate N,x,y,z[/color]. Pour réglé les rotations sur l'un des 3 axes séparément, il y a les 3 commandes:
[code]3D_x_rotate n,x
3D_y_rotate n,y
3D_z_rotate n,z[/code]
Comme vous vous en douter, les [b]rotation [/b]vont de 0 à 360 oui mais:
Si on donne une rotation a (360+90=450) 450,c'est comme si on donner une rotation de 90.

[u]Exemple:[/u]
[code]Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255
3d_teapot 1 : 3d_position 1,-1,0,3 : ' une teapot a gauche
3d_teapot 2 : 3d_position 2,1,0,3 : ' l'autre a droite
3d_y_rotate 1,450  : ' la rotation fonctionne (même si c'est plus grand que 360)
3d_y_rotate 2,90 : ' il on la même rotation au final. (360+90=450)[/code]

Pour connaître la rotation d'un objet:
[code]O3D_x_rotate(n)
O3D_y_rotate(n)
O3D_z_rotate(n)[/code]
[size=18]Ce qui va suivre avec les rotations est très important à assimiler.[/size]
Les rotations dans panoramic sont local. [i]Et cela veux dire quoi?[/i] Je vais vous l'expliquez en 3 images:
Voila un cube dans panoramic disons.(même si l'on devine blender!)
[img]http://www.archive-host.com/files/1022299/bd7172de063197f3c62f696d7c6d6278409a0e82/111.JPG[/img]

Si on fait une rotation sur le côté vert cela donnera:
[img]http://www.archive-host.com/files/1022303/bd7172de063197f3c62f696d7c6d6278409a0e82/333.JPG[/img]

[color=red]Et non cela![/color]
[img]http://www.archive-host.com/files/1022304/bd7172de063197f3c62f696d7c6d6278409a0e82/222.JPG[/img]

Vous comprenez?

[u]Exemple:[/u]
[code]label changer_rotation_local , changer_rotation_globale
dim rotation_x_globale , rotation_y_globale , rotation_z_globale
Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
scroll_bar 2 : min 2,0 : max 2,360 : width 2,300 : top 2,20 : left 2,20 : hint 2,"X local"
scroll_bar 3 : min 3,0 : max 3,360 : width 3,300 : top 3,40 : left 3,20 : hint 3,"Y local"
scroll_bar 4 : min 4,0 : max 4,360 : width 4,300 : top 4,60 : left 4,20 : hint 4,"Z local"

scroll_bar 5 : min 5,0 : max 5,360 : width 5,300 : top 5,20 : left 5,screen_x/2 : hint 5,"X globale"
scroll_bar 6 : min 6,0 : max 6,360 : width 6,300 : top 6,40 : left 6,screen_x/2 : hint 6,"Y globale"
scroll_bar 7 : min 7,0 : max 7,360 : width 7,300 : top 7,60 : left 7,screen_x/2 : hint 7,"Z globale"

3d_teapot 1 : 3D_color 1,0,255,0 :  3d_scale 1,4,4,4 : 3d_x_position 1,-3
3d_teapot 2 : 3D_color 2,255,0,0 :  3d_scale 2,4,4,4 : 3d_x_position 2,3

on_change 2,changer_rotation_local
on_change 3,changer_rotation_local
on_change 4,changer_rotation_local

on_change 5,changer_rotation_globale
on_change 6,changer_rotation_globale
on_change 7,changer_rotation_globale

end
changer_rotation_local:
3D_rotate 1,position(2),position(3),position(4)
return

changer_rotation_globale:
rotation_x_globale=position(5)
rotation_y_globale=position(6)
rotation_z_globale=position(7)
3d_z_rotate 2,0
3d_y_rotate 2,0
3D_x_rotate 2,0
3d_rotate 2,rotation_x_globale,rotation_y_globale,rotation_z_globale
return[/code]
Changer les rotations des 2 teapots dans tout les sens, et remetter les a 0.
Celui de gauche est local, (parfait pour une voiture,avion,etc) il est dans n'importe quel sens.
Celui de droite est globale (il a reprit sa position d'origine) et vous voulez une globale, vous savez maintenant comment faire pour l'utiliser (regarder l'exemple)

Il y a également une autre commande pour donner la rotation a un objet: [color=blue]3d_point_object n1,n2[/color]
[u]Exemple:[/u]
[code]' utiliser les touches fléché
' regarder la ligne <aaaaaaaaaaaa plus bas
full_space 0
label prog , touche_enfoncer , touche_lacher : ' déclaration des sous-programme
dim touche_gauche , touche_haut , touche_droit , touche_bas : ' déclaration des variables
dim vitesse
vitesse=0.03 : ' la vitesse de déplacement
scene3D 1 : full_space 1 : color 1,0,0,255 : ' création de la scene 3D
3d_cube 1,1 : 3d_rotate 1,0,45,0 : 3d_color 1,0,255,0 : ' création du cube allier

3d_cube 2,1 : 3d_position 2,-2,0,1 : 3d_color 2,255,0,0 : ' création de l'ennemi :)

timer 2 : timer_interval 2,1 : on_timer 2,prog : ' création du timer (en dernier pour eviter les bugs)
on_key_down 0,touche_enfoncer : ' evenement si on enfonce une touche
on_key_up 0,touche_lacher : ' evenement si on lache une touche
end  : ' fin du programme, place aux evenements

prog:
3D_point_object 2,1  : ' L'ennemi te regarde <aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

if key_down_code=27 : ' si on appui sur echap (quitter)
timer_off_all : ' destruction de tout les timers
terminate
end_if

if touche_haut=1
3d_move 1,vitesse : ' On donne la vitesse :)
end_if
if touche_bas=1
3d_move 1,0-vitesse : ' 0-la vitesse
end_if
if touche_gauche=1
3d_y_rotate 1,o3d_y_rotate(1)+2
end_if
if touche_droit=1
3d_y_rotate 1,o3d_y_rotate(1)-2
end_if
return

touche_enfoncer:
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
return

touche_lacher:
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
return[/code]
Cette commande peut servir a pointé quelque chose sur quelqu'un.

[u]La dimension[/u]
[i]A quoi sa sert?[/i] très concrètement, c'est très utile pour mettre tout les objets a la même échelle. Dans l’extrême on aurais une voiture plus grand que le circuit ou un immeuble de la taille d'une chaussure!  :D
Il y a la commande[color=blue] 3D_scale n,x,y,z[/color].Il y a également la possibilité de faire comme la rotation et la position, le changement par un axe en particulier:
[code]3d_x_scale n,x
3d_y_scale n,y
3d_z_scale n,z[/code]

La donné attendu est un coefficient multiplicateur, donc c'est comme pour les pourcentages:
50%=0.5  20%=0.2  1%=0.01 100%=1
Donc pour réduire un objet de 50% mettre 0.5 (soit 1/2)
On peut aussi l'augmenter ! > 150%=1.5      300%=3      1000%=10

[u]Exemple:[/u]
[code]Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255
3d_teapot 1
wait 2000
3D_color 1,255,0,0 : ' il devient rouge
3d_scale 1,1,1,1 : ' revient a modifier la taille de lobjet a 100% soit il ne change pas!
wait 2000
3D_color 1,0,255,0 : ' il devient vert
3d_scale 1,5,5,5 : ' 5=500% il grossis
wait 2000
3D_color 1,0,0,255 : ' il devient bleu
3d_scale 1,1,1,1 : ' il reprend sa taille d'origine[/code]
Conclusion:
si le coefficient multiplicateur < 1 il rétréci par rapport a sa taille d'origine
si le coefficient multiplicateur = 1 il est égale par rapport a sa taille d'origine
si le coefficient multiplicateur > 1 il se dilate par rapport a sa taille d'origine

Cette commande est également utile pour faire certaine animation: (une explosion). Notre objet explosion a une toute petite taille et plus le temps s'écoule, plus cette objet gonfle. :afro:

Pour connaître la dimension de notre objet:
 [code]O3D_x_scale(n)
O3D_y_scale(n)
O3D_z_scale(n)[/code]

[size=18][b][u]VII Autres commandes 3D utiles:[/u][/b][/size]
Il y a la commande [color=blue]3D_color n,r,v,b[/color] pour changer la couleur de l'objet. Par default la couleur est noire. Si r=v=b alors la couleur est grise. (de 0 a 255 pour le rouge, le vert et le bleu)

On peut changer la transparence d'un objet par la commande [color=blue]3D_transparent N,intensité[/color] (de 0 a 255)
Cette commande est utile pour faire les vitres, l'eau, le feu, nuage ,etc...

On peut aussi cacher les objets directement par la commande [color=blue]3D_hide n[/color]
Cette commandes servira pour les collisions en particulier. On refait apparetre l'objet avec la commandes [color=blue]3D_show n[/color]

[u]Exemple:[/u]
[code]Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position 0,1000,0
3D_teapot 1 : 3d_scale 1,7,7,7
message "couleur rouge"
3D_color 1,255,0,0
message "Tranparence"
3d_transparent 1,80
message "cacher"
3D_hide 1
message "reafficher"
3D_show 1[/code]

[size=18][b][u]VIII Comment organiser son programme pour faire de la 3D :?:[/u][/b][/size]
Pour faire un programme en 3D, les commandes de 3D sont insuffisant:
1)Il faut géré les touches appuyer
2)Il faut une partie de code qui s’exécute tout le temps. (Pour qu'un ennemie se déplace, pour faire bouger l'eau... )
3)Crée les objet 3D et les autres objet.

[u]Voici la structure la mieux adapté pour le moment:[/u]
[code]error_french
label programme , touche_enfoncer , touche_lacher : ' (les label c'est là)
' dim (les déclarations de variable c'est ici)
' PROGRAMME PRINCIPALE##########################################################

' (Ici on crée la scene, on met les objets etc...)

' PROGRAMME PRINCIPALE#######################################################FIN
timer 1 : timer_interval 1,1 : on_timer 1,programme
on_key_down 0,touche_enfoncer : ' si on appui sur une touche alors on va a touche_enfoncer
on_key_up 0,touche_lacher : ' si on LACHE sur une touche alors on va a touche_lacher
end : ' LES SOUS PROGRAMMES#####################################################

touche_enfoncer:
' ici on vérifi si une touche est enfoncer
return

touche_lacher:
' ici on vérifi si une touche est lacher
return

programme:
' (ici c'est executer tout les 1/1000 de seconde. donc tout le temp,
'  cela sert a effectuer une action si une touche est enfoncer)
return

' LES SOUS PROGRAMMES########################################################FIN

' A savoir> si on met le programme en pause, il faut desactiver le timer par timer_off 1
' et le réactivé par timer_on 1 à la fin de la pause.[/code]

[b][color=red]Voici un exemple concret:[/color][/b]
[code]error_french
label programme , touche_enfoncer , touche_lacher
dim touche_gauche , touche_haut , touche_droit , touche_bas
dim vitesse
' PROGRAMME PRINCIPALE##########################################################
vitesse=0.03 : ' la vitesse de déplacement
full_space 0
scene3D 2 : full_space 2 : color 2,0,0,255 : ' création de la scene 3D
3d_cube 1,1 : 3d_rotate 1,0,45,0 : ' création du cube
' PROGRAMME PRINCIPALE#######################################################FIN
timer 1 : timer_interval 1,1 : on_timer 1,programme
on_key_down 0,touche_enfoncer : ' si on appui sur une touche alors on va a touche_enfoncer
on_key_up 0,touche_lacher : ' si on LACHE sur une touche alors on va a touche_lacher
end : ' LES SOUS PROGRAMMES#####################################################

touche_enfoncer:
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
return

touche_lacher:
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
return

programme:
if key_down_code=27 : ' si on appui sur echap (quitter)
timer_off_all : ' destruction de tout les timers
terminate
end_if

if touche_haut=1
3d_move 1,vitesse : ' On donne la vitesse :)
end_if
if touche_bas=1
3d_move 1,0-vitesse : ' 0-la vitesse
end_if
if touche_gauche=1
3d_y_rotate 1,o3d_y_rotate(1)+2
end_if
if touche_droit=1
3d_y_rotate 1,o3d_y_rotate(1)-2
end_if
return
' LES SOUS PROGRAMMES########################################################FIN[/code]
[size=18][b][u]IX Comment se déplacer dans une scène 3D :?:[/u][/b][/size]
Pour ce déplacer en 1er personne, il y a une solution qui fonctionne sans formule mathématiques mais par de la logique.
[i]rappel: Pour utiliser la camera, il y a 2 point, la position x,y,z de la camera et la position x,y,z du point de visé.[/i]
Pour la soluce, nous allons utiliser 2 cubes:
La position du [color=green]cube numéro 1[/color] sera la position de la [color=green]camera[/color].
La position du [color=green]cube numéro 2[/color] sera la position du [color=green]point de viser[/color].
(Il serons cacher par [color=blue]3D_hide n[/color] pour que l'on ne les vois pas)
[img]http://www.archive-host.com/files/1034083/bd7172de063197f3c62f696d7c6d6278409a0e82/exemple_camera.jpg[/img]

Dans le programme, (celui qui s’exécute tout le temps par le timer)
nous  allons luit faire effectuer les [color=green]4[/color] opérations suivantes:
[color=green]1)[/color] Le cube 2 va prendre la même [b]position[/b] et[b] rotation[/b] que le cube 1. (les deux cubes sont emboiter l'un dans l'autre)
[color=green]2)[/color] On avance le cube 2 par la commande [color=blue]3D_move 2,1[/color]
[color=green]3)[/color] On change la position du point de visé qui devient la position du cube 2,
[color=green]4)[/color] On change la position de la caméra qui devient la position du cube 1.

Si on veux déplacer la camera, il suffit de déplacer la position du cube 1 (par [color=blue]3D_move 1,vitesse[/color] par exemple)
Si on veux tourner la caméra, il suffit de mettre une rotation au cube 1.
[u]Exemple 1:[/u]
[code]
error_french
label actualiser_vue
' PROGRAMME PRINCIPALE##########################################################
Full_space 0
scene3D 1 : full_space 1 : color 1,0,0,255 : light_position -100,50,-200
cam_position 2,0,-2
3D_cube 1,1 : 3d_color 1,255,0,0 : 3d_transparent 1,50 : ' C'est la caméra
3d_cube 2,1 : 3d_color 2,0,255,0  : 3d_transparent 2,50 : ' C'est le point de visé
3d_position 1,-2,0,-1  : ' je met le cube 1 n'importe comment pour comprendre
3d_rotate 1,45,0,45    : ' je met le cube 1 n'importe comment pour comprendre
gosub actualiser_vue
' PROGRAMME PRINCIPALE#######################################################FIN
end : ' LES SOUS PROGRAMMES#####################################################

actualiser_vue:
' 1) etape 1
wait 2000
3d_position 2,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
wait 2000
3d_rotate 2,o3d_x_rotate(1),o3d_y_rotate(1),o3d_z_rotate(1)
' 2) etape 2
wait 2000
3d_move 2,1.5
' 3)4) etape 3 et 4 (je l'ai est pas activer exprès):
' point_position o3d_x_position(2),o3d_y_position(2),o3d_z_position(2)
' cam_position o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
return

' LES SOUS PROGRAMMES########################################################FIN[/code]
[b]La camera est le cube [color=red]rouge[/color], le point de viser le [color=green]vert[/color].[/b]

[u]Exemple 2:[/u]
[code]
error_french
label programme , touche_enfoncer , touche_lacher , actualiser_vue
dim touche_gauche , touche_haut , touche_droit , touche_bas
dim vitesse_rotation , vitesse_deplacement
' PROGRAMME PRINCIPALE##########################################################
vitesse_rotation=2
vitesse_deplacement=0.02
Full_space 0
scene3D 2 : full_space 2 : color 2,0,0,255 : light_position 0,1000,0
3D_cube 1,1 : 3d_color 1,255,0,0 : 3d_transparent 1,50 : ' C'est la caméra
3d_cube 2,1 : 3d_color 2,0,255,0  : 3d_transparent 2,50 : ' C'est le point de visé
gosub actualiser_vue
' PROGRAMME PRINCIPALE#######################################################FIN
timer 1 : timer_interval 1,1 : on_timer 1,programme
on_key_down 0,touche_enfoncer
on_key_up 0,touche_lacher
end : ' LES SOUS PROGRAMMES#####################################################

touche_enfoncer:
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
return

touche_lacher:
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
return

actualiser_vue:
3d_position 2,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
3d_rotate 2,o3d_x_rotate(1),o3d_y_rotate(1),o3d_z_rotate(1)
3d_move 2,1.5
' point_position o3d_x_position(2),o3d_y_position(2),o3d_z_position(2)
' cam_position o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
return

programme:
if key_down_code=27 : ' si on appui sur echap (quitter)
timer_off_all : ' destruction de tout les timers
terminate
end_if

if touche_haut=1
3d_move 1,vitesse_deplacement : ' On donne la vitesse_deplacement :)
end_if
if touche_bas=1
3d_move 1,0-vitesse_deplacement : ' 0-la vitesse_deplacement
end_if
if touche_gauche=1
3d_y_rotate 1,o3d_y_rotate(1)+vitesse_rotation
end_if
if touche_droit=1
3d_y_rotate 1,o3d_y_rotate(1)-vitesse_rotation
end_if
gosub actualiser_vue
return

' LES SOUS PROGRAMMES########################################################FIN[/code]
[u]Exemple 3:[/u]
[code]error_french
label programme , touche_enfoncer , touche_lacher , actualiser_vue
dim touche_gauche , touche_haut , touche_droit , touche_bas
dim vitesse_rotation , vitesse_deplacement
' PROGRAMME PRINCIPALE##########################################################
vitesse_rotation=2
vitesse_deplacement=0.01
Full_space 0
scene3D 2 : full_space 2 : color 2,0,0,255 : ' light_position 0,1000,0
3D_cube 1,1 : 3D_hide 1  : ' ON LES CACHES
3d_cube 2,1 : 3D_hide 2  : ' ON LES CACHES
3d_teapot 3 : 3d_position 3,0,0,1.5
gosub actualiser_vue
' PROGRAMME PRINCIPALE#######################################################FIN
timer 1 : timer_interval 1,1 : on_timer 1,programme
on_key_down 0,touche_enfoncer
on_key_up 0,touche_lacher
end : ' LES SOUS PROGRAMMES#####################################################

touche_enfoncer:
if key_down_code = 37 then touche_gauche=1
if key_down_code = 38 then touche_haut=1
if key_down_code = 39 then touche_droit=1
if key_down_code = 40 then touche_bas=1
return

touche_lacher:
if key_up_code = 37 then touche_gauche=0
if key_up_code = 38 then touche_haut=0
if key_up_code = 39 then touche_droit=0
if key_up_code = 40 then touche_bas=0
return

actualiser_vue:
3d_position 2,o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
3d_rotate 2,o3d_x_rotate(1),o3d_y_rotate(1),o3d_z_rotate(1)
3d_move 2,1
point_position o3d_x_position(2),o3d_y_position(2),o3d_z_position(2)
cam_position o3d_x_position(1),o3d_y_position(1),o3d_z_position(1)
return

programme:
if key_down_code=27 : ' si on appui sur echap (quitter)
timer_off_all : ' destruction de tout les timers
terminate
end_if

if touche_haut=1
3d_move 1,vitesse_deplacement
end_if
if touche_bas=1
3d_move 1,0-vitesse_deplacement
end_if
if touche_gauche=1
3d_y_rotate 1,o3d_y_rotate(1)+vitesse_rotation
end_if
if touche_droit=1
3d_y_rotate 1,o3d_y_rotate(1)-vitesse_rotation
end_if
gosub actualiser_vue
return

' LES SOUS PROGRAMMES########################################################FIN[/code]
Pour la 3ème personne nous verrons cela plus tard.

:study:  Tutoriel en cours de réalisation...
A venir= texture , chaînage , collision ,brouillard, skybox et bien d'autre :!:  :!:  :!:   

Je trouve qu'il serais également intéressent de pouvoir y avoir plusieurs groupe sur le forum.
Pour le moment il n'y en a que 1:
Modérateur > Jack
Pourquoi ne pas crée le groupe "spécialiste DLL" ou "spécialiste 3D" ou même "spécial jeu" ou "spécial application"??
Comme cela on sait qui est principalement fort en ceci ou cela...

Et même aussi, quelqu'un aurais des liens pour crée son site gratuitement. Le site basique me suffit. Merci a vous
Revenir en haut Aller en bas
jpcr

jpcr


Nombre de messages : 276
Age : 57
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyVen 27 Mai 2011 - 12:05

ben tu peux essayer ça : http://www.e-monsite.com/
a priori c'est pas mal.

Revenir en haut Aller en bas
http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
jimx78

jimx78


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

cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D EmptyVen 27 Mai 2011 - 14:32

merci il est très bien et je vais le crée rapidement. cheers
Revenir en haut Aller en bas
Contenu sponsorisé





cam�ra - Problème caméra et 3D Empty
MessageSujet: Re: Problème caméra et 3D   cam�ra - Problème caméra et 3D Empty

Revenir en haut Aller en bas
 
Problème caméra et 3D
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» camera 3d
» Rotation de la camera autour d'un point
» Camera et SCENE3D
» Roll the camera?
» probleme sur DLL

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: