IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Composants VCL Delphi Discussion :

TDraw3D - Composant peu documenté


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Delphi 10.4
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Delphi 10.4

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 41
    Points
    41
    Par défaut TDraw3D - Composant peu documenté
    Bonjour,
    je dois réaliser une petite animation 3D dans un TForm (VCL). En me penchant sur le composant TDraw3D (RAD XE5), je constate pas de de fonction aux intitulé "alléchantes", (Rotation, Cube, cone, ... en 3D !), je me dis : "Voilà ce qu'il me faut !", et puis bizarrement ce composant n'est pas documenté, du moins dans l'aide de Delphi et je ne trouve pas grand chose sur embarcadero ou google .. (Ici non plus).
    Quelqu'un aurait-il déjà utiliser ce composant pour faire une petite animation 3D ou aurait des liens vers des exemples ou doc ..
    Merci.

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 661
    Points : 3 630
    Points
    3 630
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Je pense qu'il s'agit du composant faisant partie de la librairie TeeChart (https://www.steema.com/product/vcl). Il s'agirait donc d'un composant pour afficher des graphiques en 3D.
    Pour faire de la 3D en VCL, je vous conseille GLScene : http://glscene.sourceforge.net/wikka/.
    En Firemonkey (FMX), il y a déjà des choses fournies nativement pour faire de la 3D avec Delphi.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Membre confirmé Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 323
    Points : 484
    Points
    484
    Par défaut
    Bonjour Steph1969
    Les librairies GlScene sont disponibles et encore mises à jour.
    Comme c'est mon cas, je te confirme que tu peux, même sans être un expert, très rapidement faire des démos en 3D assez rapidement, sans la complexité d'OpenGl.
    Attention au type de ta carte vidéo (notamment les cartes Intel) pour t'assurer, si tes démos sont un peu lourdes, la compatibilité avec OpenGl.
    Windows 10 / Delphi Tokyo
    "Les choses ne changent pas. Change ta façon de les voir, cela suffit" Lao Tseu

  4. #4
    Membre du Club
    Profil pro
    Delphi 10.4
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Delphi 10.4

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Bonjour,
    J'ai jeter un oeil sur GLscene, .. j'ai quelques difficulté à compiler les package sous Delphi Xe5 (version que nous utilisons),
    Je cherche quelque chose de vraiment "léger" il s'agit en fait d'animer en 3D une tête (schématisée) en fonction des mouvements d'un capteur.
    manipulant très souvent les TPaintBox et canvas, je pensez pouvoir exploiter TCanvas3D.

    Merci pour vos réponses ... si vous avez des astuces pour la compilation de GLScene sous Xe5 elles sont les bienvenues ....

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Si la version est XE5 il me semble qu'il est possible d'utiliser une forme FMX (et donc l'utilisation d'un viewport3d) au sein d'une application VCL.
    Il y a même un même un composant pour https://github.com/vintagedave/firemonkey-container et peut-être d'autres pistes
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut Voici un exemple compilé en XE7
    Nom : Annotation 2019-10-21 174334.png
Affichages : 648
Taille : 51,7 Ko
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    tient, quand j'ouvre ton projet sous Tokyo ou Rio je n'ai pas les formes
    Nom : Presse-papiers-3.png
Affichages : 593
Taille : 32,6 Ko
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    tient, quand j'ouvre ton projet sous Tokyo ou Rio je n'ai pas les formes
    Voici une version compilée avec Tokyo. Compiler à partir du dproj ou déplacer les DAE à coté de l'exe
    Fichiers attachés Fichiers attachés

  9. #9
    Membre du Club
    Profil pro
    Delphi 10.4
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Delphi 10.4

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Bonjour,
    merci pour votre aide, .. en utilisant la solution de Sergio, je suis bloqué sur l'utilisation d'un TModel3D (importation d'un fichier .OBJ ou .DAE (tete.dae du mannequin ) ), je n'arrive pas a utiliser les TLightMaterialSource pour avoir un effet 3D correct. Lorsque j'importe le fichier tete.dae, il y a bien 3 TLightMaterialsource qui sont automatiquement importé, mais la tête reste noir sans perspective ...

    PS : je suis pour l'instant avec une licence Xe5

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Je ne suis pas assez calé 3D pour donner des pistes, j'ai beaucoup galéré / consommé de temps pour les quelques essais que j'ai pu faire (merci gbegreg )
    il y a bien 3 TLightMaterialsource qui sont automatiquement importé,
    importés oui, mais associés à l'objet ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par steph1969 Voir le message
    Bonjour,
    merci pour votre aide, .. en utilisant la solution de Sergio, je suis bloqué sur l'utilisation d'un TModel3D (importation d'un fichier .OBJ ou .DAE (tete.dae du mannequin ) ), je n'arrive pas a utiliser les TLightMaterialSource pour avoir un effet 3D correct. Lorsque j'importe le fichier tete.dae, il y a bien 3 TLightMaterialsource qui sont automatiquement importé, mais la tête reste noir sans perspective ...

    PS : je suis pour l'instant avec une licence Xe5
    Envoie nous ton fichier DAE. Je vais te faire un exemple

  12. #12
    Membre du Club
    Profil pro
    Delphi 10.4
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Delphi 10.4

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Bonjour Alweber,
    en fait j'ai downloadé l'exemple de Sergio (FmxContiner) (fonctionne parfaitement sous XE5). Dans cet exemple il y a une TForm3d avec : Camera, Light1, Light2, RoundCube1, LightMaterialSource (associé à la propriété MeterialSource de RoundCube1)

    Cet example est un bon départ pour moi à condition de remplacer le cube par une tête humaine. Je me suis donc dirigé vers TModel3D et ai trouvé un fichier Head.obj que j'ai
    chargé dans la propiété MeshCollection. Cela fonctionne, j'ai bien une "tête" dans ma form3D. Mais je n'ai pas trouvé le moyen d'utiliser l'équivalent du LightMaterialSource, la tête reste en couleur unie sans aucun effet 3D.

    J'ai ensuite pris ton fichier tete.dae à la place de Head.obj, le comportement est identique si ce n'est qu'il y a 3 LightMaterialSource qui sont importés mais je ne vois pas comment les utiliser.

    J'ai également recommencé dans un projet directement FmX3D (sans le FmxContainer).. Mais résultat identique.

    PS : Je fais du développement VCL depuis delphi 1.0 ... je n'ai que Delphi Xe5 (licence officielle) et je dois dire que les fmx et 3D sont assez nouveau pour moi.

    Ci-Joint un zip avec le fichier Head.Obj et capture d'écran

    Grand merci
    Fichiers attachés Fichiers attachés

  13. #13
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Je t'ai mis le modele dans un autre format : DAE avec une texture
    Nom : Annotation 2019-10-30 170023.png
Affichages : 555
Taille : 15,3 Ko
    Extrait structure de la fiche. TU y trouveras les composants, leur propriétés et leur position dans la hiérarchie. après tu charge Head.DAE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    object Form1: TForm1
      object Viewport3D1: TViewport3D
        Align = Client
        Size.PlatformDefault = False
        object Model3D1: TModel3D
          Position.Y = -4
          Position.Z = -10
          RotationAngle.Y = 180
          RotationAngle.Z = 180
        end
        object Light1: TLight
          Color = claWhite
          Position.X = -5
          Position.Y = -5
          RotationAngle.X = 345
          RotationAngle.Y = 65
        end
      end
    end
    Fichiers attachés Fichiers attachés

  14. #14
    Membre du Club
    Profil pro
    Delphi 10.4
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Delphi 10.4

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    J'ai progressé avec ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TFormExample3D.Form3DCreate(Sender: TObject);
    var Mesh : TMesh;
    begin
      for Mesh in Model3D1.MeshCollection do
        Mesh.MaterialSource := LightMaterialSource1 ;
     
    end;

  15. #15
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Pour passer d'un format à un autre, j'utilise 'meshlab' qui est un outil gratuit

  16. #16
    Membre du Club
    Profil pro
    Delphi 10.4
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Delphi 10.4

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Bonjour à tous,
    j'ai bien progressé grâce aux aides reçues ici,
    Il me reste un problème de "Rotation".
    En jouant avec la propriété Rotation (.X, .Y, .Z) de mon TModel3D, j'ai une sorte de "dérive", c'est à dire que la position n'est plus la même pour deux triplets identiques après avoir fait "tourner" l'objet dans les 3 axes.... il y a une sorte de "dérive"... par contre si je remet (0, 0, 0) alors l'objet reprend sa position initiale de manière brutale, (idem avec ResetRotationAngle).

    Comment éviter cette "dérive" ? est-bien la propriété Rotation qu'il faut utiliser pour faire cela ?

    Merci (encore).

  17. #17
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par steph1969 Voir le message
    ...
    Comment éviter cette "dérive" ? est-bien la propriété Rotation qu'il faut utiliser pour faire cela ?
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    aCtrl3D.BeginUpdate;
    aCtrl3D.ResetRotationAngle;
    aCtrl3D.RotationAngle.X := RotationObjet.X - 20;
    aCtrl3D.RotationAngle.Y := RotationObjet.Y - 90;
    aCtrl3D.EndUpdate;
    aCtrl3D.Repaint;
    voir exemple ci joint
    Nom : Annotation 2019-11-05 132716.png
Affichages : 762
Taille : 26,1 Ko
    Fichiers attachés Fichiers attachés

  18. #18
    Membre du Club
    Profil pro
    Delphi 10.4
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Delphi 10.4

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Parfait cela semble fonctionner... j'osais pas trop faire le ResetRotationAngle à chaque "update" ..car je rafraichi la position 10x par secondes...

  19. #19
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Tu as essayé l'exemple que je t'ai envoyé ?

  20. #20
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par ALWEBER Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    aCtrl3D.BeginUpdate;
    aCtrl3D.ResetRotationAngle;
    aCtrl3D.RotationAngle.X := RotationObjet.X - 20;
    aCtrl3D.RotationAngle.Y := RotationObjet.Y - 90;
    aCtrl3D.EndUpdate;
    aCtrl3D.Repaint;
    voir exemple ci joint
    Nom : Annotation 2019-11-05 132716.png
Affichages : 762
Taille : 26,1 Ko
    c'est joli, par contre dès qu'on ajoute de la transparence en 3D il faut gérer l'ordre d'affichage sinon le ZBuffer bien perturber l'affichage

    Nom : transparence..gif
Affichages : 511
Taille : 499,2 Ko

    j'en parle ici
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Composer un document xls
    Par olibara dans le forum Conception
    Réponses: 9
    Dernier message: 28/11/2009, 06h03
  2. Réponses: 4
    Dernier message: 27/12/2005, 12h01
  3. Documentation sur les composants réseaux
    Par OverCat dans le forum Hardware
    Réponses: 5
    Dernier message: 27/01/2005, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo