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
» Une calculatrice en une ligne de programme
Petit essai autour de la 3D Emptypar jean_debord Aujourd'hui à 8:47

» Form(résolu)
Petit essai autour de la 3D Emptypar leclode Hier à 17:59

» trop de fichiers en cours
Petit essai autour de la 3D Emptypar Marc Hier à 11:42

» Bataille navale SM
Petit essai autour de la 3D Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Gestion d'un système client-serveur.
Petit essai autour de la 3D Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Petit essai autour de la 3D Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Petit essai autour de la 3D Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Petit essai autour de la 3D Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Petit essai autour de la 3D Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Petit essai autour de la 3D Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Petit essai autour de la 3D Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Petit essai autour de la 3D Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Petit essai autour de la 3D Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Petit essai autour de la 3D Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Petit essai autour de la 3D Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

 

 Petit essai autour de la 3D

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


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

Petit essai autour de la 3D Empty
MessageSujet: Petit essai autour de la 3D   Petit essai autour de la 3D EmptyVen 16 Mar 2012 - 1:48

J'ai fait un petit essai d'utilisation de mon squelette de programme Panoramic, adapté au monde 3D. C'est un outil permettant de créer les objets 3D selon un choix présenté dans un COMBO. Pour chaque objet, à l'aide de SCROLL_BARs, on peut gérer sa position dans les 3 axes, sa rotation autour des 3 axes, et sa couleur RGB. On peut créer autant d'objets 3D qu'on veut. Les objets créés sont insérés dans une seconde COMBO listant les objets disponibles. Un clic sur un des objets dans cette liste "sélectionne" cet objet, et les glissières de paramétrage s'appliquent alors sur cet objet. Et il y a un écran d'aide.

Code:
' test3d.bas



' *** routine principale
label labels : gosub labels
gosub variables
gosub form0
gosub menu
gosub GUI
gosub initialisations
end

' *** définition de tous les labels
labels:
  label variables, form0, menu, GUI, initialisations, sortir
  label aide, apropos, close_apropos
  label select3d, creer3d
  label changex3d, changey3d, changez3d
  label translatex3d, translatey3d, translatez3d
  label rouge3d, vert3d, bleu3d
  return

' *** définition de toutes les variables
variables:
  dim no%, parent_1%, parent_2%
  dim no_scene3d%, no_objet3d%, no_objets3d%, no_choisi3d%
  dim no3d%, flag_creation3d%
  dim no_rotatex3d%, no_rotatey3d%, no_rotatez3d%
  dim no_translatex3d%, no_translatey3d%, no_translatez3d%
  dim no_rouge3d%, no_vert3d%, no_bleu3d%
  dim nom_fichier$, no_open%, no_save%
  dim no_apropos%, no_aide%
  dim i%, j%, k%, s$
  dim nl$ : nl$ = chr$(13)+chr$(10)
  dim version$ : version$ = "V01.00"
  dim creation$ : creation$ = "13 Mars 2012"
  dim nom_rep$, nom_ini$
  return
 
' *** configuration de l'écran principal
form0:
'  full_space 0
  width 0,850 : height 0,800
  caption 0,"Test 3d"
  return

' *** création des menus
menu:
  no% = no% + 1 : main_menu no% : parent_1% = no%
  no% = no% + 1 : sub_menu no% : parent no%,parent_1%
    parent_2% = no% : caption no%,"Fichiers"
  no% = no% + 1 : sub_menu no% : parent no%,parent_2%
    caption no%,"Sortir" : on_click no%,sortir

  no% = no% + 1 : sub_menu no% : parent no%,parent_1%
    parent_2% = no% : caption no%,"Aide"
  no% = no% + 1 : sub_menu no% : parent no%,parent_2%
    caption no%,"Aide" : on_click no%, aide
  no% = no% + 1 : sub_menu no% : parent no%,parent_2%
    caption no%,"A-propos" : on_click no%, apropos

  return
 
création de tous les objets Panoramic
GUI:
' *** d'abord les objets invisibles
'    dialogues, list, timer, ...
  no% = no% + 1 : open_dialog no% : no_open% = no%
    filter no%,"Fichier texte|*.txt"
  no% = no% + 1 : save_dialog no% : no_save% = no%
    filter no%,"Fichier texte|*.txt"
   
' *** les objets de la form 0
  no% = no% + 1 : alpha no% : top no%,2 : left no%,10
    caption no%,"Objet à créer:"
  no% = no% + 1 : combo no% : no_objet3d% = no%
    top no%,20 : left no%,10 : on_click no%,creer3d
    item_add no%,"cone"
    item_add no%,"cube"
    item_add no%,"cylinder"
    item_add no%,"dodecahedron"
    item_add no%,"line"
    item_add no%,"plane"
    item_add no%,"skybox"
    item_add no%,"sphere"
    item_add no%,"teapot"
    item_add no%,"text"
    item_add no%,"torus"
  no% = no% + 1 : alpha no% : top no%,2 : left no%,170
    caption no%,"Sélection:"
  no% = no% + 1 : combo no% : no_objets3d% = no%
    top no%,20 : left no%,170 : on_click no%,select3d

  no% = no% + 1 : alpha no% : top no%,2 : left no%,330
    caption no%,"Rotation X"
  no% = no% + 1 : scroll_bar no% : no_rotatex3d% = no%
    min no%,0 : max no%,360 : position no%,0
    top no%,20 : left no%,330 : on_change no%,changex3d
  no% = no% + 1 : alpha no% : top no%,2 : left no%,490
    caption no%,"Rotation Y"
  no% = no% + 1 : scroll_bar no% : no_rotatey3d% = no%
    min no%,0 : max no%,360 : position no%,0
    top no%,20 : left no%,490 : on_change no%,changey3d
  no% = no% + 1 : alpha no% : top no%,2 : left no%,650
    caption no%,"Rotation Z"
  no% = no% + 1 : scroll_bar no% : no_rotatez3d% = no%
    min no%,0 : max no%,360 : position no%,0
    top no%,20 : left no%,650 : on_change no%,changez3d
   
  no% = no% + 1 : alpha no% : top no%,52 : left no%,330
    caption no%,"Translation X"
  no% = no% + 1 : scroll_bar no% : no_translatex3d% = no%
    min no%,0-100 : max no%,100 : position no%,0
    top no%,70 : left no%,330 : on_change no%,translatex3d
  no% = no% + 1 : alpha no% : top no%,52 : left no%,490
    caption no%,"Translation Y"
  no% = no% + 1 : scroll_bar no% : no_translatey3d% = no%
    min no%,0-100 : max no%,100 : position no%,0
    top no%,70 : left no%,490 : on_change no%,translatey3d
  no% = no% + 1 : alpha no% : top no%,52 : left no%,650
    caption no%,"Translation Z"
  no% = no% + 1 : scroll_bar no% : no_translatez3d% = no%
    min no%,0-100 : max no%,100 : position no%,0
    top no%,70 : left no%,650 : on_change no%,translatez3d

  no% = no% + 1 : alpha no% : top no%,102 : left no%,330
    caption no%,"Rouge"
  no% = no% + 1 : scroll_bar no% : no_rouge3d% = no%
    min no%,0 : max no%,255 : position no%,0
    top no%,120 : left no%,330 : on_change no%,rouge3d
  no% = no% + 1 : alpha no% : top no%,102 : left no%,490
    caption no%,"Vert"
  no% = no% + 1 : scroll_bar no% : no_vert3d% = no%
    min no%,0 : max no%,255 : position no%,0
    top no%,120 : left no%,490 : on_change no%,vert3d
  no% = no% + 1 : alpha no% : top no%,102 : left no%,650
    caption no%,"Bleu"
  no% = no% + 1 : scroll_bar no% : no_bleu3d% = no%
    min no%,0 : max no%,255 : position no%,0
    top no%,120 : left no%,650 : on_change no%,bleu3d

  no% = no% + 1 : scene3d no% : no_scene3d% = no%
    top no%,200 : left no%,10
    width no%,width(0)-30 : height no%,height(0)-370
   
' *** la fenêtre a-propos avec ses champs
  no% = no% + 1 : form no% : hide no% : no_apropos% = no% : parent_1% = no%
    caption no%,"A-propos"
    top no%, 200 : left no%,200 : height no%,150 : width no%,250
    on_close no%,close_apropos
  no% = no% + 1 : alpha no% : parent no%,parent_1%
    top no%,20 : left no%,20
    s$ = "test 3D"+nl$
    s$ = s$ + "Version: "+version$+nl$
    s$ = s$ + "Date: "+creation$+nl$
    s$ = s$ + "Auteur: Klaus"+nl$
    caption no%,s$

' *** la fenêtre d'aide avec ses champs
  no% = no% + 1 : form no% : hide no% : no_aide% = no% : parent_1% = no%
    caption no%,"Aide"
    top no%, 200 : left no%,200 : height no%,400 : width no%,400
    on_close no%,close_apropos
  no% = no% + 1 : alpha no% : parent no%,parent_1%
    top no%,20 : left no%,20
    s$ = "Mode d'emploi"+nl$+nl$
    s$ = s$ + "Le sélecteur Objet à créer permet de choisir un type d'objet 3D."+nl$
    s$ = s$ + "Cet objet sera créé avec quelques attributs par défaut"+nl$
    s$ = s$ + "et placé au centre du monde (0,0,0)."+nl$
    s$ = s$ + "Le sélecteur Sélection permet de choisir un objet 3d déjà"+nl$
    s$ = s$ + "créé et cibler l'action des glissières sur lui."+nl$
    s$ = s$ + "Par défaut, le dernier objet créé est sélectionné."+nl$
    s$ = s$ + "Les glissières de rotation et de translations permettent"+nl$
    s$ = s$ + "d'agir sur l'objet sélectionné."+nl$
    s$ = s$ + " On sort du programme par la fonction Sortir du menu Fichiers."+nl$
    caption no%,s$

  return
 
' *** toutes les initialisations du programme
initialisations:
' répertoire de l'application, nom du fichier ini
  s$ = param_value$(0)
  nom_rep$ = file_extract_path$(s$)
  if instr(lower$(s$),"\temp\")>0 then nom_rep$ = "C:\temp\"
  nom_ini$ = nom_rep$ + "test3d.ini" : ' adapter le nom du fichier ini
  dir_dialog no_open%,nom_rep$
  dir_dialog no_save%,nom_rep$
  if dir_exists(nom_rep$)=0 then dir_make nom_rep$
  if file_exists(nom_ini$)=0 : ' créer le fichier ini vide s'il n'existe pas
    file_open_write 1,nom_ini$
    file_writeln 1,"; créé le "+date$+" à "+time$+" heures"
    file_close 1
  end_if
' traiter le fichier ini
  file_open_read 1,nom_ini$
  file_readln 1,s$
  while file_eof(1)=0
' charger le fichier ini
  end_while
  file_close 1
  return

' *** fonction "sortir dur programme"
sortir:
  terminate
 
' *** afficher la page d'aide en mode non-modal
aide:
  show no_aide%
  to_foreground no_aide%
  return

' *** afficher la page à-propos en mode modal
apropos:
  inactive 0
  show no_apropos%
  return
 
' *** fermer la page a-propos
close_apropos:
  hide no_apropos%
  active 0
  to_foreground 0
  return

' ***choisir un objet 3d
select3d:
  s$ = text$(no_objets3d%)
  no_choisi3d% = val(left$(s$,instr(s$,"=")-1))
  return

' *** créer un objet 3d
creer3d:
  flag_creation3d% = 1
  position no_rotatex3d%,0
  position no_rotatey3d%,0
  position no_rotatez3d%,0
  position no_translatex3d%,0
  position no_translatey3d%,0
  position no_translatez3d%,0
  position no_rouge3d%,0
  position no_vert3d%,0
  position no_bleu3d%,0
  flag_creation3d% = 0
  s$ = text$(no_objet3d%)
  if s$="cone"
    no3d% = no3d% + 1
    3d_cone no3d%,1,1
    item_add no_objets3d%,str$(no3d%)+"=cone"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  if s$="cube"
    no3d% = no3d% + 1
    3d_cube no3d%,1
    item_add no_objets3d%,str$(no3d%)+"=cube"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  if s$="cylinder"
    no3d% = no3d% + 1
    3d_cylinder no3d%,1,1,0.5
    item_add no_objets3d%,str$(no3d%)+"=cylinder"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  if s$="dodecahedron"
    no3d% = no3d% + 1
    3d_dodecahedron no3d%
    item_add no_objets3d%,str$(no3d%)+"=dodecahedron"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  if s$="line"
    no3d% = no3d% + 1
    3d_line no3d%,0-1,0,0
    3d_line no3d%,1,0,0
    item_add no_objets3d%,str$(no3d%)+"=line"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  if s$="plane"
    no3d% = no3d% + 1
    3d_plane no3d%
    item_add no_objets3d%,str$(no3d%)+"=plane"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  if s$="skybox"
    no3d% = no3d% + 1
    3d_skybox no3d%
    item_add no_objets3d%,str$(no3d%)+"=skybox"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  if s$="sphere"
    no3d% = no3d% + 1
    3d_sphere no3d%,1
    item_add no_objets3d%,str$(no3d%)+"=sphere"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  if s$="teapot"
    no3d% = no3d% + 1
    3d_teapot no3d%
    item_add no_objets3d%,str$(no3d%)+"=teapot"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  if s$="text"
    no3d% = no3d% + 1
    3d_text no3d%,"Mon texte"
    item_add no_objets3d%,str$(no3d%)+"=text"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  if s$="torus"
    no3d% = no3d% + 1
    3d_torus no3d%,2,1.5
    item_add no_objets3d%,str$(no3d%)+"=torus"
    no_choisi3d% = no3d%
    text no_objets3d%,item_read$(no_objets3d%,count(no_objets3d%))
    3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  end_if
  return
 
' *** rotation X
changex3d:
  if flag_creation3d%=1 then return
  3d_x_rotate no_choisi3d%,position(no_rotatex3d%)
  return

' *** rotation Y
changey3d:
  if flag_creation3d%=1 then return
  3d_y_rotate no_choisi3d%,position(no_rotatey3d%)
  return

' *** rotation Z
changez3d:
  if flag_creation3d%=1 then return
  3d_z_rotate no_choisi3d%,position(no_rotatez3d%)
  return

' *** translation X
translatex3d:
  if flag_creation3d%=1 then return
  3d_x_position no_choisi3d%,position(no_translatex3d%)/10
  return

' *** translation Y
translatey3d:
  if flag_creation3d%=1 then return
  3d_y_position no_choisi3d%,position(no_translatey3d%)/10
  return

' *** translation Z
translatez3d:
  if flag_creation3d%=1 then return
  3d_z_position no_choisi3d%,position(no_translatez3d%)/10
  return

' *** rouge
rouge3d:
  if flag_creation3d%=1 then return
  3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  return

' *** vert
vert3d:
  if flag_creation3d%=1 then return
  3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  return

' *** bleu
bleu3d:
  if flag_creation3d%=1 then return
  3d_color no_choisi3d%,position(no_rouge3d%),position(no_vert3d%),position(no_bleu3d%)
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Petit essai autour de la 3D Empty
MessageSujet: Re: Petit essai autour de la 3D   Petit essai autour de la 3D EmptyVen 16 Mar 2012 - 7:05

Ca marche bien, mais je n'ai pas bien compris si c'était juste un test ou si après tu allez ajouter d'autres options pour récupérer les objets créés par exemple
Revenir en haut Aller en bas
Klaus

Klaus


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

Petit essai autour de la 3D Empty
MessageSujet: Re: Petit essai autour de la 3D   Petit essai autour de la 3D EmptyVen 16 Mar 2012 - 12:03

Mon ambition n'était pas de créer un générateur d'objets 3D. D'autres sur ce forum font ça beaucoup mieux. je voulais juste voir si mon organisation de programme (ce que j'appelle mon "squelette" de programme) peut aussi s'adapter à ce type de programmation. Accessoirement, cela m'a permis de visualiser les objets 3D - je ne connaissais pas encore le monde 3D et c'est donc une découverte, pour moi.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Petit essai autour de la 3D Empty
MessageSujet: Re: Petit essai autour de la 3D   Petit essai autour de la 3D EmptyVen 16 Mar 2012 - 14:39

OK Klaus, alors en effet, ton squelette permet tout à fait de le faire, le source est lisible et cela fonctionne bien
Revenir en haut Aller en bas
papydall

papydall


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

Petit essai autour de la 3D Empty
MessageSujet: Re: Petit essai autour de la 3D   Petit essai autour de la 3D EmptyMar 20 Mar 2012 - 0:26

Salut Klaus.
J’ai testé ton programme : Test3D.bas.
J‘ai provoqué, par maladresse, l’erreur suivante : (76) 3D OBJECT number out of range. Line 360.
En effet, j’ai agit sur la glissière : Translation X, avant d’avoir sélectionné un objet à créer.
La même erreur avec les autres glissières, bien sûr.
Doit-on ajouter un test dans le programme pour éviter cela ?


Dernière édition par papydall le Mar 20 Mar 2012 - 1:36, édité 1 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


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

Petit essai autour de la 3D Empty
MessageSujet: Re: Petit essai autour de la 3D   Petit essai autour de la 3D EmptyMar 20 Mar 2012 - 1:01

J’ai modifié toutes les lignes de test :


Code:
if flag_creation3d%  = 1  then return
Comme suit :

Code:
if flag_creation3d% = 1 or no_choisi3d% = 0 then return

Et il n’y a plus d’erreur même si on agit sur les glissières avant d’avoir choisi un objet.
A+
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Petit essai autour de la 3D Empty
MessageSujet: Re: Petit essai autour de la 3D   Petit essai autour de la 3D EmptyMer 21 Mar 2012 - 23:48

Bien vu, Papydall !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Petit essai autour de la 3D Empty
MessageSujet: Re: Petit essai autour de la 3D   Petit essai autour de la 3D Empty

Revenir en haut Aller en bas
 
Petit essai autour de la 3D
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Rotation d'un point autour de l'origine
» Wrapper autour de KGF.dll par procédures
» Éditeur de texte : Mini Word
» Rotation d’une figure autour de l’origine
» Commandes et fonctions autour des variables

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: