Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Microsoft Office Discussion :

Découvrez la programmation 3D en VBA/VB6 avec OpenGL 1.1


Sujet :

Microsoft Office

  1. #1
    Responsable Access

    Découvrez la programmation 3D en VBA/VB6 avec OpenGL 1.1
    Bonjour à tous!

    Je vous invite à une découverte de la programmation 3D avec OpenGL 1.1.

    Faîtes vos premiers pas dans la programmation 3D avec votre langage VBA ou VB6 préféré.

    Voici un aperçu de ce que vous pouvez obtenir en suivant ce tutoriel :




    Vous pouvez ajoutez vos commentaires sur cet articles à la suite de ce message.


  2. #2
    Expert éminent sénior
    Comme on dit souvent :


    Une fonctionnalité tellement inutile ... et donc totalement indispensable

    Beau boulot

    Après ça on va encore dire, qu'Access est limité

  3. #3
    Invité
    Invité(e)
    Bonjour

    Que dire de plus à part

    Philippe

  4. #4
    Responsable Access

    Bonjour à tous,

    Cet article de découverte de la programmation 3D avec OpenGL 1.1 a été mis à jour.
    En plus du langage VBA, il est désormais applicable à Visual Basic 6 (VB6).

    Pensez-vous intégrer OpenGL dans vos applications VB6 ou VBA?
    Cet article vous a-t-il été utile?

    pour vos commentaires.

    A suivre dans le prochain tutoriel : l'utilisation des extensions.
    Vertex Buffer Objects, Texture 3D, Shaders, ...
    A bientôt.

  5. #5
    Membre averti
    Bonjour,
    Oui super ! J'ai un projet de changement de dessin en opengl (utilisé qu'en 2d) et ce tuto tombe bien... nous avons encore bcp de logiciels sous VB6 et donc ce tuto et pour nous toujours d'actu !
    ________________________________________
    Si ma réponse te satisfait, clique sur la main verte merci
    Microsoft MVP Client Development
    MCPD - Windows Phone Developer

    Mon blog de dév : http://www.peug.net
    Mes logiciels pro : http://www.sodeasoft.com
    Mes applications : http://www.windowsphone.com/.../eblm

  6. #6
    Candidat au Club
    Bonjour,

    Tout d'abord bravo pour ce tuto qui m'a permis de découvrir la 3D opengl sous VB6.
    J'aurais juste une question :
    Sous VB6, quelle méthode utiliser pour faire la même chose dans un contrôle PictureBox d'un formulaire déjà existant ?
    J'ai besoin d'un picturebox opengl que je pourrai contrôler avec des boutons par exemple.
    Merci d'avance.

  7. #7
    Responsable Access

    Bjr,

    Citation Envoyé par lulu29 Voir le message

    Sous VB6, quelle méthode utiliser pour faire la même chose dans un contrôle PictureBox d'un formulaire déjà existant ?
    J'ai besoin d'un picturebox opengl que je pourrai contrôler avec des boutons par exemple.
    Vous pouvez ajoutez cette fonction InitOpenGLPicture au module clOpengGLFormVB6 :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    '---------------------------------------------------------------------------------------
    ' Initialise OpenGL pour la PictureBox pPicture
    '---------------------------------------------------------------------------------------
    Public Function InitOpenGLPicture(pPicture As PictureBox) As Boolean
    ' Handle de la fenêtre
    gHwnd = pPicture.hWnd
    ' Contexte d'affichage gdi32
    gHdc = pPicture.hdc
    ' Initialise opengl
    InitOpenGLPicture = PrivInitOpenGL
    End Function


    Et appelez cette fonction en donnant la pictureBox en paramètre :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    oGl.InitOpenGLPicture Me.Picture1

    (à la place de oGl.InitOpenGL Me)

  8. #8
    Candidat au Club
    gluDisk
    Bonjour,
    Grâce à vos conseils ma petite appli est en bonne voie mais je cale sur "gludisk".
    J'ai créé un cône avec glucylinder et je voudrais fermer sa base par un disque.
    Quand je veux créer une quadrique rien ne s'affiche, voici le code :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ' Disque
    glPushMatrix
    Dim lQuad4 As Long
    glColor3VB vbRed
    glTranslated x0 - 200, y0, z0
    glRotated 45, 0, 1, 0
    lQuad4 = gluNewQuadric
    gluDisk lQuad4, 30, 0, 10, 10
    gluDeleteQuadric lQuad4
    glPopMatrix


    Je ne vois pas pourquoi cela ne marche pas ?
    Merci d'avance.

  9. #9
    Responsable Access

    Citation Envoyé par lulu29 Voir le message
    Bonjour,
    Grâce à vos conseils ma petite appli est en bonne voie mais je cale sur "gludisk".
    J'ai créé un cône avec glucylinder et je voudrais fermer sa base par un disque.
    Quand je veux créer une quadrique rien ne s'affiche, voici le code :
    bjr,

    peut-être un problème d'orientation qui rend la face invisible (si culling activé)?

    Tester avec avant le gluDisk :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    gluQuadricOrientation lQuad4, GLU_INSIDE

    (ou GLU_OUTSIDE, je ne sais plus trop dans quel sens ça se passe)

    Sinon pour un problème purement openGL il y a le forum OpenGL sur lequel tu auras sans doute plus de réponses (avec des gens plus expérimentés que moi )

  10. #10
    Membre à l'essai
    bravo
    on peut donc refaire "2001 Odyssée de l'espace"
    rebravo

  11. #11
    Invité
    Invité(e)
    Bonjour,

    Félicitation pour ce magnifique article. Il m'a pas mal appris le VBA au travers de l'OPENGL, ainsi que l'utilisation des API.

    Bravo !


    P.S.:
    Personne n'a donné de points sauf en 1ère page Pour un travail aussi énorme !

  12. #12
    Invité
    Invité(e)
    Bonjour,

    J'ai un petit problème en Excel 64 bit. Est-ce que quelqu'un a réussi à rendre compatible Open GL en 64 bit ?
    Dans le module de classe clOpenGLUserForm, j'ai un problème sur la fonction PrivDisplay à la ligne:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    glReadPixels 0, 0, gWidth, gHeight, gFormat, GL_UNSIGNED_BYTE, ByVal lBmBits

    Ca ne passe pas. Fermeture d'Excel.
    A ce stade:
    - gFormat = 32993 (GL_BGRA)
    - gHeight = 242
    - gWidth = 483
    - GL_UNSIGNED_BYTE = 5121
    - lBmBits = 0^
    Testé avec les déclarations:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Public Declare PtrSafe Sub glReadPixels Lib "opengl32" (ByVal x As Long, ByVal y As Long, ByVal width As Long, ByVal height As Long, ByVal format As Long, ByVal ptype As Long, pixels As Any)

    'ou alors
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Public Declare PtrSafe Sub glReadPixels Lib "opengl32" (ByVal x As Long, ByVal y As Long, ByVal width As Long, ByVal height As Long, ByVal format As Long, ByVal ptype As Long, pixels As LongPtr)

    Mais beug. Si quelqu'un a réussi a faire le module de classe en 64 bit, ça serait classe qui montre la déclaration glReadPixels. Si il est censé lire en mémoire, le beug vient peut être (surement même) d'une autre fonction finalement.

    Voilà, a+ et merci par avance.

  13. #13
    Responsable Access

    Bonjour,

    Citation Envoyé par Nouveau2 Voir le message
    J'ai un petit problème en Excel 64 bit. Est-ce que quelqu'un a réussi à rendre compatible Open GL en 64 bit ?
    Je suis un peu en retard, j'y travaille depuis hier.

  14. #14
    Nouveau membre du Club
    Bonjour Arkham46,

    Je trouve ton tutoriel très intéressant et super bien monté.

    Toutefois, en faisant quelques recherches supplémentaires sur le net, j'ai beaucoup de difficulté à trouver des sources d'information autre que ton tutoriel. Je remarque que peu de gens utilisent VBA pour faire des dessins en 3D.

    Connais-tu d'autres sites web qui traitent le même sujet?
    Aussi, y a-t-il des endroits où je peux trouver les commandes à utiliser pour OpenGL 3.X.X ?

    Merci pour ta réponse et bonne journée!

  15. #15
    Responsable Access

    Bonjour,

    On ne trouve effectivement pas grand chose pour OpenGL en VBA.
    Il y a bien une librairie vbogl.tlb pour VB6 mais c'est très vieux et je n'ai pas testé pour VBA.

    Pour OpenGL 3 je vais y venir après avoir fait le travail sur la version 64 bits.

    L'article date d'il y 5 ans, il y a un rafraichissement à prévoir.

  16. #16
    Nouveau Candidat au Club
    OpenGL et VB6
    J'urilise OpenGL dans une pictureBox. Je veux savoir si c'est possible de dessiner avec des outils VB6 (cercle, ligne) par dessus l'image créé par OpenGL.

    Merci

    Jacquelin Hardy

  17. #17
    Nouveau membre du Club
    Fixer l'emplacement de la fenêtre freeglut ?
    Bonjour,

    Merci beaucoup pour ce tutoriel qui sert toujours!

    Je voudrais intégrer une visu 3D dans un formulaire qui contient des contrôles vb6 (boutons, zones de texte, picturebox, onglets, etc. J'ai essayé d'afficher ma visu 3D dans une picturebox avec le module de classe proposé, mais sans y parvenir (et puis on perd le zoom à la molette).

    Pour ne pas parler "en l'air", j'ai fait une version simplifiée du code que vous pouvez télécharger ici : http://www.cjoint.com/c/GEveVvNXTyP

    Je me dis qu'il y a peut-être moyen de placer et dimensionner précisément la fenêtre FreeGlut au-dessus d'une zone de la fenêtre VB6 pour avoir accès à l'une et à l'autre? Voudriez-vous me dire si c'est possible et m'indiquer des pistes? Je cherche depuis plusieurs jours sans succès.

    Bien cordialement,
    Renaud.

  18. #18
    Candidat au Club
    Bonjour,

    Je viens de découvrir le tuto pour intégrer du OpenGL en VBA... Du plaisirs en perspective car je travaille dans un centre de recherche universitaire qui fait du 3D avec des radiographies de patients. J'ai créer une banque de données en Excel qui fait la gestion des données 3D en VBA et j'utilise des outils externes pour l'affichage 3D. Je pense utiliser votre tuto pour une intégration du 3D dans Excel... Souhaitez-moi bonne chance!

  19. #19
    Inactif  
    Bonjour,

    Pour les abonnés de Office 365. La suite intègre en natif, depuis quelques mises-à-jour, le support pour le 3D.

    Hubble en 3D dans PowerPoint
    Catalogue de vélos en 3D (Excel)
    Robot Curiosity en 3D (Word)


    Ceci étant dit, je ne sais pas si cela va être intégré à Office 2019 "non 365". Donc, gardez l'adresse en réserve; cela peut toujours servir.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  20. #20
    Nouveau Candidat au Club
    NURBS
    Dear Thierry
    I've tried to visualize a nurbs object but nothing seems to appear, (bezier surfaces and curves work) have you developed some routine for nurbs callback interrogation? have you written something on nurbs with vba?
    Thanks a lot for the collaboration
    Bye
    Eddy

###raw>template_hook.ano_emploi###