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
» bouton dans autre form que 0
Problème avec les objets 3D. Emptypar leclode Hier à 13:59

» KGF_dll - nouvelles versions
Problème avec les objets 3D. Emptypar Klaus Hier à 11:41

» Gestion d'un système client-serveur.
Problème avec les objets 3D. Emptypar Klaus Hier à 10:23

» PANORAMIC V 1
Problème avec les objets 3D. Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Problème avec les objets 3D. Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Problème avec les objets 3D. Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Problème avec les objets 3D. Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Problème avec les objets 3D. Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Problème avec les objets 3D. Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Problème avec les objets 3D. Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Problème avec les objets 3D. Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Problème avec les objets 3D. Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Problème avec les objets 3D. Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Problème avec les objets 3D. Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Problème avec les objets 3D. Emptypar papydall Dim 21 Avr 2024 - 23:30

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Pokémon EV06 : où acheter le Bundle Lot ...
Voir le deal

 

 Problème avec les objets 3D.

Aller en bas 
4 participants
AuteurMessage
Pedro

Pedro


Nombre de messages : 1555
Date d'inscription : 19/01/2014

Problème avec les objets 3D. Empty
MessageSujet: Problème avec les objets 3D.   Problème avec les objets 3D. EmptyLun 16 Mar 2020 - 8:19

Bonjour.

Je m'aperçois que les objets 3D ne reconnaissent pas les clics !
Dans ce cas, comment procéder pour les interactions entre les différents objets ?

J'ai trouvé une solution provisoire: créer une scene3D pour chaque objet, l'objet scene3D reconnaissant les clics, mais dans ce cas, il est impossible de les faire interagir entre eux !!

D'autre part, comment faire le lien entre les coordonnées 3D et les coordonnées de l'écran en pixels?

Merci de votre aide.
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Problème avec les objets 3D. Empty
MessageSujet: Re: Problème avec les objets 3D.   Problème avec les objets 3D. EmptyLun 16 Mar 2020 - 14:32

Panoramic ne permet pas de faire ça. Il faut passer par des calculs de trigonométrie, c'est complexe! Très peu pour moi Mad
Revenir en haut Aller en bas
papydall

papydall


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

Problème avec les objets 3D. Empty
MessageSujet: Re: Problème avec les objets 3D.   Problème avec les objets 3D. EmptyLun 16 Mar 2020 - 17:45

Pedro a écrit:
D'autre part, comment faire le lien entre les coordonnées 3D et les coordonnées de l'écran en pixels?

Regardes mes anciens posts :
 Graphisme 2D
Graphisme 3D
Transformations du plan

Pour faire simple :
Code:

Zoom = 200 : ‘ ou autre valeur
alfa = pi/4 : ' ou pi/6 ou autre valeurs : inclinaison de l'oeil de l'observateur
a = zoom / sqr(2)                 : ' paramètres pour ...
b = zoom * sin(alfa) / sqr(2)     : ' ... le passage des coordonnées 3D ...
c = zoom * cos(alfa)              : ' ... aux coordonnées écran 2D
' coordonnées écran 2D de la projection de l'objet 3D
xe = xorigine + a * (x-y)
ye = yorigine - b * (x+y) - c * z



Voici un code de tracé d’une sphère qui est fortement documenté et que (j’espère bien) tu peux t’en inspirer.

Code:

rem ============================================================================
rem         Tracé d’un objet 3D (ici, c’est une sphère)
rem ============================================================================
rem La sphère est définie par son centre O(x,y,z) et son rayon R
rem Un point M(x,y,z) appartient à la sphère si et seulement si OM = R
rem D’où l’équation de la sphère est :
rem     _____________________
rem    |                     |
rem    |  x² + y² + z² = R²  |
rem    |_____________________|
rem
rem Cette équation n’est pas très partique pour le tracé.
rem Il est préférable de déterminer la position d’un point M sur la spère par
rem son méridien et son parallèle ou par sa longitude et sa lattitude.
rem Les coordonnées d’un point M sur la sphère dépendent des deux angles :
rem phi la longitude, et lambda la latitude, avec phi compris entre 0 et 2pi,
rem et lambda entre -pi/2 et pi/2
rem D’où l’équation paramétrique de la sphère, avec les coordonnées de M en
rem fonction de phi et lambda :
rem    _____________________________________
rem   |                                     |
rem   |   x = R * cos(lambda) * cos(phi)    |
rem   |   y = R * cos(lambda) * sin(phi)    |
rem   |   z = R * sin(lambda)               |
rem   |_____________________________________|
rem
rem Pour une position de l’oeil de l’observateur donnée par l’angle alfa, on peut
rem visualiser les méridiens sur la sphère en tenant compte de la partie visible
rem et la partie invisible.
rem La partie visible est une demi-sphère délimitée par le plan de projection
rem d’équation x + y - c * z
rem Puisque le vecteur normal de ce plan de projection est dirigé vers l’arrière
rem on garde de la sphère que les points M(x,y,z) tels que : x + y - c * z < 0
rem ============================================================================

dim a,b,c,alfa,lambda,phi,zoom,x,y,z,r,xorigine,yorigine,xe,ye
caption 0,"Tracé d'une sphère en cours ... <ESC> pour arrêter ...."
picture 10 : full_space 10 : 2d_target_is 10 : print_target_is 10

xorigine = width_client(10) / 2   : ' centre de ...
yorigine = height_client(10) / 2  : ' ... la sphère
r = 1                             : ' rayon de la sphère
zoom = 200                        : ' zoom sur la sphère

alfa = pi/4 : ' ou pi/6 ou autre valeurs : inclinaison de l'oeil de l'observateur
a = zoom / sqr(2)                 : ' paramètres pour ...
b = zoom * sin(alfa) / sqr(2)     : ' ... le passage des coordonnées 3D ...
c = zoom * cos(alfa)              : ' ... aux coordonnées écran 2D

' Tracé de la sphère
for phi = 0 to 2*pi step pi/25
    for lambda = 0-pi/2 to 2*pi/2 step 0.001
        ' coordonnées 3D de l'objet , ici une sphère
        x = r * cos(lambda) * cos(phi)
        y = r * cos(lambda) * sin(phi)
        z = r * sin(lambda)
        ' coordonnées écran 2D de la projection de l'objet 3D
        xe = xorigine + a * (x-y)
        ye = yorigine - b * (x+y) - c * z
        ' tracer partie visible en noir ...
        ' et partie cachée en gris
        if (x + y - c * z) < 0
           2d_pen_color 0,0,0 : 2d_point xe,ye : ' partie visible en noir
        else
           2d_pen_color 150,150,150 : 2d_point xe,ye : ' partie cachée en gris
        end_if
        display
        if scancode = 27 then terminate
    next lambda
next phi
alpha 20 : top 20,10 : left 20,20 : font_color 20,0,0,0 : color 20,255,255,255
  caption 20, "En noir partie visible"
alpha 30 : top 30,30 : left 30,20 : font_color 30,150,150,150 : color 30,255,255,255
 caption 30, "En gris partie invisible"
rem ============================================================================


Problème avec les objets 3D. Sphere10
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Pedro

Pedro


Nombre de messages : 1555
Date d'inscription : 19/01/2014

Problème avec les objets 3D. Empty
MessageSujet: Problème avec les objets 3D.   Problème avec les objets 3D. EmptyLun 16 Mar 2020 - 18:24

Oh là, trop fort pour moi !
Revenir en haut Aller en bas
papydall

papydall


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

Problème avec les objets 3D. Empty
MessageSujet: Re: Problème avec les objets 3D.   Problème avec les objets 3D. EmptyLun 16 Mar 2020 - 19:00

Pour simplifier à l'extrême :

Pour convertir les coordonnées 3D  M(x,y,z) (de l’espace) en coordonnées 2D  M'(xe,ye) (de l’écran).

xe = x / z
ye = y / z


Ces simples équations supposent que nous sommes à l’origine.
Il faut donc ajouter les valeurs correctes.

Soit rx et ry les résolutions de l’écran en x et en y, et d la distance de la camera ou de l’œil de l’observateur, les équations deviennent :

xe = (rx / 2) + d * x / z
ye = (ry / 2) + d * y / z


Et pour créer l’effet de la profondeur, on joue aussi sur la couleur qui doit varier en fonction de z.

Voilà ! ce n'est pas si compliqué que ça !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Problème avec les objets 3D. Empty
MessageSujet: Re: Problème avec les objets 3D.   Problème avec les objets 3D. EmptyLun 4 Mai 2020 - 20:10

Voici ce que l'on peut faire en panoramic. Même si le clic sur un objet est détecté, la détection de collision de panoramic n'est pas toujours ultra précise, mais ça peu suffire pour tes besoins.
Code:
label test

dim col,xx,yy,maxi,angle,s3d
dim focale,H_fov
dim ovpX,ovpY,ovlX,ovlY,dist,mx,my
dim i


' objet temporaire pour recherche du H_fov
image 55 : picture 7 : left 7,200 : hide 7

' le scene3D
s3d=2
scene3d s3d : full_space s3d
cam_position 0,0,0 :  point_position 0,0,-1
'
' recherche l'angle du FOV(champ de vue horizontal): angle entre le centre de l'écran et le bord droit, à partir du point de vue(oeil virtuel)
xx=0 : yy=100 : maxi=screen_x
repeat
   repeat
      xx=xx+yy
      line3D(xx,yy)
      col=CAPTURE_COLOR_RED_3D(1,width_client(s3d)-1,height_client(s3d)/2)
   until col=0 or xx>=maxi
   if xx=maxi then exit_repeat
   angle=xx :' angle recherché
   yy=yy/10 : maxi=xx+(yy*10)
until yy=0.0000001
' calcul de la distance focale("distance du point de vue(oeil virtuel) jusqu'à l'écran") et du H_fov
H_fov = angle/1000
focale=(width_client(s3d)/2)/(angle/1000)
color s3d,0,0,128

' supprimer les objets ayant servi pour la recherche du H_fov
delete 7 : delete 55 : if number_3d_objects>0 then 3d_delete 9999

' rayon lancé de la souris(objet 9998) vers un point situé dans le fond de la scene 3d(objet9999).
' les objets 9998 et 9999 sont donc alignés par calcul
dist = 1000
' 3d_box 9998,1/1000000,1/1000000,2*dist : 3d_collision_as_faces 9998
' 3d_box 9999,1/1000000,1/1000000,1/1000000
3d_box 9998,1/10000,1/10000,2*dist : 3d_collision_as_faces 9998
3d_box 9999,1/10000,1/10000,1/10000
3d_sphere 9990,1/100 : 3d_color 9990,0,0,0 :' visualiser le clic

' des cubes au hasard
' un objet est entouré d'une boite englobante(plus grosse que lui) pour le test de collision, c'est cette boite qui est détecté lors du clic dans le scene3D
' Donc l'objet peut être détecté cliqué si on clique un peu en dehors. Cela dépend de sa forme, c'est un comportement normal
for i=1 to 10
   3d_cube i,1 : 3d_x_scale i,20 : 3d_y_scale i,20 : 3d_z_scale i,20
   3d_position i,100-rnd(200),100-rnd(200),0-rnd(dist/2) : 3d_collision_as_faces i
   3d_color i,0,0,64
next i
  
'
on_click s3d,test



END
test:
   ' calcul des position du rayon
   mx=mouse_x_position(s3d)-(width_client(s3d)/2)
   my=(height_client(s3d)/2)-mouse_y_position(s3d)
   dist = 1000
   ovpY = my / focale
   ovlY = ovpY * dist
   '
   ovpX = mx / focale
   ovlX = ovpX * dist

   ' placement du rayon
   3d_position 9998,ovpX,ovpY,-1
   3d_position 9999,ovlX,ovlY,0-dist
   3d_point_object 9998,9999
   3d_position 9990,ovpX,ovpY,-1 :' voir ou l'on clique
    
   ' colorer les objets cliqués  
   for i=1 to 10
      if o3d_collision(i,9998)=1
         3d_color i,255,0,0
      else
         3d_color i,0,0,64
      end_if
   next i
return


fnc CAPTURE_COLOR_RED_3D(CAPTURE_COLOR_RED_3D_objet3D,CAPTURE_COLOR_RED_3D_x,CAPTURE_COLOR_RED_3D_y)
 display
   2d_target_is 0
   2d_image_copy 55,CAPTURE_COLOR_RED_3D_x,CAPTURE_COLOR_RED_3D_y,CAPTURE_COLOR_RED_3D_x+1,CAPTURE_COLOR_RED_3D_y+1
   '
   2d_target_is 7
   2d_image_paste 55,0,0
   result color_pixel_red(7,0,0)
   2d_target_is 0
end_fnc

sub line3D(pos,longueur)
   if number_3d_objects>0 then 3d_delete 9999
   3d_line 9999,pos,0,-1000
   3d_line 9999,pos+longueur,0,-1000
end_sub
Revenir en haut Aller en bas
Pedro

Pedro


Nombre de messages : 1555
Date d'inscription : 19/01/2014

Problème avec les objets 3D. Empty
MessageSujet: Problème avec les objets 3D.   Problème avec les objets 3D. EmptyMar 5 Mai 2020 - 10:48

Bonjour.

Merci Silverman de ton aide.
Cependant, je trouve cela un peu compliqué à mettre en oeuvre.

J'espère que Jack va y remédier.
Revenir en haut Aller en bas
mindstorm

mindstorm


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

Problème avec les objets 3D. Empty
MessageSujet: Re: Problème avec les objets 3D.   Problème avec les objets 3D. EmptyLun 11 Mai 2020 - 20:57

bonjour @ tous
j'ai creusé la 3d et il est très possible de faire pas mal de choses.
Ainsi, j'utilise toujours les outils que je me suis forgé en Panoramic.
Le défaut de précision pour la collision décrit par Silverman n'est pas du à Panoramic mais au fait que l'objet est inscrit dans une boite englobante qui est parallélépipédique.
Ainsi ce n'est pas la collision de l'objet que l'on détecte mais celle de la boite.
j'espère encore les améliorations qui seraient possible avec l'arrivé d'un compilateur (utilisation de android pour faire des lunettes 3D, multiplication de petits objets(invisibles) pour affiner les collisions, texture hd, ombrage...)
Je remercie Jack au moins une fois par mois et je regrette souvent de ne pas avoir plus de connaissances pour vous suivre de plus prêt.
Revenir en haut Aller en bas
Contenu sponsorisé





Problème avec les objets 3D. Empty
MessageSujet: Re: Problème avec les objets 3D.   Problème avec les objets 3D. Empty

Revenir en haut Aller en bas
 
Problème avec les objets 3D.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème avec les objets 'option'.
» problème avec le placement des objets dans certains cas.
» Probleme avec les objets ".3ds" v 0.9.17
» Problème avec select case Probleme réglé merci
» Bug avec les objets MEMO.

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: