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

Delphi Discussion :

FMX Island épisode 1 : génération de mondes extérieurs en 3D avec Delphi et Firemonkey


Sujet :

Delphi

  1. #1
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut FMX Island épisode 1 : génération de mondes extérieurs en 3D avec Delphi et Firemonkey
    FMX Island épisode 1
    génération de mondes extérieurs en 3D avec Delphi et Firemonkey


    Toujours en vue de découvrir la 3D avec Firemonkey et Delphi, Grégory Bersegeay vous propose, au cours d’une nouvelle série de tutoriels, la construction d’une scène en extérieur. Le premier épisode va vous permettre de générer des paysages en utilisant la technique du champ de hauteur (ou heightmap).

    Nom : fmxisland.png
Affichages : 17801
Taille : 629,2 Ko

    Accompagné des codes sources, le tutoriel est disponible ici : https://gbegreg.developpez.com/tutor...episode1/tuto/

    Que pensez-vous de ce tutoriel ?
    Utilisez-vous Firemonkey pour ses fonctionnalités 3D ?


    Les meilleurs cours et tutoriels pour apprendre la programmation Delphi
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 017
    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 017
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    En quelques mots : bluffant mais très (trop) addictif !
    Je suis tombé dans l'addiction dès les premiers paragraphes : "vite, vite, comment il a fait ...". C'est vraiment étonnant ce que l'on peut faire, moi qui ne suis pas 3D, ce tuto vous met les pieds à l'étrier sur un cheval au galop !

    C'est également bluffant en ce qui concerne la rapidité de chargement, pour information j'ai récupéré une carte (un objet 3D tout prêt) et utilisé le composant TModel3D pour l'afficher sur mon pc pas très puissant 5mn pour obtenir quelque chose ! La technique heightmap gagne haut la main.
    Il ne nous reste plus qu'à trouver d'autres heightmaps pour faire mumuse.

    Vivement les autres épisodes !
    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

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    658
    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 : 658
    Points : 3 598
    Points
    3 598
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    J'ai mis une petite vidéo de ce que donne le projet final FMX Island (sans la détection de collision pour le moment) sur Youtube :



    La qualité de la vidéo n'est pas terrible : la compression dégrade pas mal l'image et c'est un peu saccadé (mon pc portable n'a pas de carte graphique dédiée et lui demander d'exécuter l'application tout en capturant la vidéo (même à 15 images/secondes) ça lui demande un effort soutenu ).

    Pour ce qui est des heightmaps, on en trouve sur Internet (par exemple celle que j'ai utilisée pour le tutoriel), mais, comme indiqué dans cet épisode, il existe aussi des logiciels pour en générer. Il est également possible d'en générer soi même via, par exemple, la méthode du bruit de Perlin.
    Il y a même une implémentation du bruit de Perlin en Delphi sur l'excellent site efg's qui, bien que doté d'une interface "vieillotte", propose de nombreuses ressources en Pascal sur tout ce qui concerne le traitement d'image.

    Si comme SergioMaster le virus vous prend, n'hésitez pas à partager vos réalisations avec par exemple une petite capture d'écran
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 273
    Points : 628
    Points
    628
    Par défaut
    Bonjour,

    Très bonne initiative.
    Ce type d’algo dont vous faites la démonstration ici peut aussi être utilisé pour la représentation de fonctions mathématiques en 3D :
    http://edn.embarcadero.com/article/42007
    Des applis peuvent facilement être développées en physique, chimie, astronomie, là où les autres environnements sont beaucoup moins productifs à mettre en œuvres.
    La partie 3D de FMX est restée un peu à l’abandon depuis 2013, Embarcadero avait d’autres priorités... Des défauts de jeunesse du moteur n’ont pas été corrigés depuis : gestion défaillante de la transparence en 2D1/2 et des textures par motifs importées à partir d’un model extérieur. Gestion approximative de la mémoire.
    Il n’empêche que le produit reste sans équivalent par sa facilité d’utilisation et son ouverture. Il existe, bien sûr, nombre d’autres outils bien plus performants comme Unity, mais totalement dédiés et fermés.
    Je ferai prochainement appel au «Quality Portal» et à la maintenance pour certains de ces points mais il est essentiel qu’Embarcadero sache qu’il y a du monde d’intéressé sans quoi les demandes resteront sous la pile et FMX 3D n’évoluera pas...
    Ce tuto offre une belle occasion de constituer un groupe d’échanges et de contribuer à faire bouger les choses.

    Bonne continuation.
    A bientôt.

  5. #5
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    658
    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 : 658
    Points : 3 598
    Points
    3 598
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par yvslms Voir le message
    Bonjour,

    Très bonne initiative.
    Ce type d’algo dont vous faites la démonstration ici peut aussi être utilisé pour la représentation de fonctions mathématiques en 3D :
    http://edn.embarcadero.com/article/42007
    Des applis peuvent facilement être développées en physique, chimie, astronomie, là où les autres environnements sont beaucoup moins productifs à mettre en œuvres.
    Tout à fait, le thème de la petite série de tutoriels est une petite île paradisiaque entourée d'une mer turquoise pour donner un petit avant goût de vacances . De plus, la trajectoire du Soleil dans le ciel montre que l'île est sur l'équateur (le Soleil est au zénith à midi ! Ça invite au voyage !
    La technique utilisée peut évidemment servir à d'autres applications. C'est d'ailleurs un des objectifs des tutoriels : montrer que ça n'est pas bien difficile d'obtenir quelque chose de correct en quelques lignes de code (nous sommes évidemment loin des rendus des moteurs dédiés que vous citez mais ce n'est pas non plus l'objectif). En plus, ça tourne sur les différentes plateformes cibles de Delphi. C'est pour cela également que si ces tutoriels inspirent certains/certaines, je serai ravi d'avoir des captures d'écrans des réalisations

    Citation Envoyé par yvslms Voir le message
    Des défauts de jeunesse du moteur n’ont pas été corrigés depuis : gestion défaillante de la transparence en 2D1/2 et des textures par motifs importées à partir d’un model extérieur. Gestion approximative de la mémoire.
    Il n’empêche que le produit reste sans équivalent par sa facilité d’utilisation et son ouverture.
    Nous le verrons dans l'épisode 3, j'ai été confronté aux problèmes de transparence pour les nuages (j'ai utilisé un contournement pas terrible d'où l'impression que le Soleil passe devant les nuages...) et pour générer de la végétation (là le contournement ne suffit pas et j'ai abandonné cette idée).

    Citation Envoyé par yvslms Voir le message
    Je ferai prochainement appel au «Quality Portal» et à la maintenance pour certains de ces points mais il est essentiel qu’Embarcadero sache qu’il y a du monde d’intéressé sans quoi les demandes resteront sous la pile et FMX 3D n’évoluera pas...
    Je suis tombé tout récemment sur le site http://www.diggets.com/. Il y a des choses prometteuses (moteur physique, système de particules, multipass rendering, heightmap, gestion des ombres, + de matériaux dont l'eau...) mais ce n'est pas encore disponible. Pour le moment, je travaille sur l'épisode 4 de la série sur la gestion des collisions. Je n'arrive pas encore à suivre les aspérités du TMesh... (la fonction RaycastIntersect prend trop de temps, peut être qu'en scindant le TMesh représentant l'île en plusieurs TMesh plus petits (donc ayant moins de polygones) ça serait mieux).

    Citation Envoyé par yvslms Voir le message
    Ce tuto offre une belle occasion de constituer un groupe d’échanges et de contribuer à faire bouger les choses.
    +1
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 273
    Points : 628
    Points
    628
    Par défaut
    Citation Envoyé par gbegreg Voir le message
    Nous le verrons dans l'épisode 3, j'ai été confronté aux problèmes de transparence pour les nuages (j'ai utilisé un contournement pas terrible d'où l'impression que le Soleil passe devant les nuages...) et pour générer de la végétation (là le contournement ne suffit pas et j'ai abandonné cette idée).
    Il y a bien une méthode (celle que vous avez peut-être utilisé) qui consiste à trier les plans 2D de l'arrière vers l'avant :
    https://www.delphitools.info/2011/11...in-firemonkey/
    Cela marche dans les cas simples et à condition que rien ne bouge. Mais c'est un peu du bricolage.....

    Citation Envoyé par gbegreg Voir le message
    Je suis tombé tout récemment sur le site http://www.diggets.com/. Il y a des choses prometteuses (moteur physique, système de particules, multipass rendering, heightmap, gestion des ombres, + de matériaux dont l'eau...) mais ce n'est pas encore disponible.
    Très intéressant : on va suivre cela de très près

    Citation Envoyé par gbegreg Voir le message
    Pour le moment, je travaille sur l'épisode 4 de la série sur la gestion des collisions. Je n'arrive pas encore à suivre les aspérités du TMesh... (la fonction RaycastIntersect prend trop de temps, peut être qu'en scindant le TMesh représentant l'île en plusieurs TMesh plus petits (donc ayant moins de polygones) ça serait mieux).
    Peut-être en se basant sur un système de balises, des TDummy placés régulièrement au dessus de la surface et dont le nombre et la position seraient déterminés à partir d'un calque sur la texture ayant servi pour le relief....

    @+
    Yves

  7. #7
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 752
    Points : 938
    Points
    938
    Par défaut
    Arf, y’a des bouts de code à moi chez : http://www.diggets.com/

    exemple :

    Nom : 04.jpg
Affichages : 1565
Taille : 791,6 Ko

    A comparer avec mon prog TF3D :

    Nom : FT3D-3D-1.jpg
Affichages : 1488
Taille : 142,2 Ko

    Nom : FT3D-3D-2.jpg
Affichages : 1540
Taille : 126,9 Ko

  8. #8
    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 430
    Points
    28 430
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 273
    Points : 628
    Points
    628
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Bonjour,

    Une démo qui semble prometteuse mais ou en est ce projet ?
    Est-il en lien avec Delphi / RAD Studio ?

  10. #10
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    658
    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 : 658
    Points : 3 598
    Points
    3 598
    Billets dans le blog
    2
    Par défaut
    @der§en
    Fais tu partie de l'équipe derrière http://www.diggets.com/ ? Comment as tu fait la capture d'écran de Gorilla 3D ? (as tu pu télécharger quelque chose ?).
    J'aime bien ton principe dans TF3D de générer dynamiquement la texture à appliquer au TMesh en fonction de l'"altitude" des mailles, il faut que j'étudie cela

    @Paul Toth
    Je ne connaissais pas. C'est encore un bel exemple : c'est nettement plus réaliste que ma petite île ! On y voit de la végétation comme j'aurai aimé en mettre sur l'île... Par contre, cet exemple ne doit pas être fait avec Firemonkey. Il y a quelques années, j'avais joué un peu avec le moteur opensource Asphyre pour Delphi et Lazarus.

    Mon petit projet FMX Island fait pauvre du coup en comparaison mais :
    - je ne suis pas graphiste ;
    - il n'utilise que des composants fournis en standard avec Delphi;
    - il est compatible avec l'édition Starter (l'édition gratuite de Delphi);
    - il est multi plate-forme : j'ai testé sous Windows et Mac OS pas encore sous Android.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  11. #11
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 752
    Points : 938
    Points
    938
    Par défaut
    Non, non, je ne fait pas partie de l’équipe derrière ce framework, j'ai juste constaté qu'il avais une très très très amusante ressemblance entre mon rendu ainsi que des textures et de l'ordre d'application de celles-ci dans les exemples publié sur leurs sites...

  12. #12
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 752
    Points : 938
    Points
    938
    Par défaut
    Citation Envoyé par gbegreg Voir le message
    Mon petit projet FMX Island fait pauvre du coup en comparaison mais :
    - je ne suis pas graphiste ;
    - il n'utilise que des composants fournis en standard avec Delphi;
    - il est compatible avec l'édition Starter (l'édition gratuite de Delphi);
    - il est multi plate-forme : j'ai testé sous Windows et Mac OS pas encore sous Android.
    Pas du tout, ce qui est intéressant, c'est la façon dont tu as codés (en ce qui me concerne) et tu m'as appris des trucs...



  13. #13
    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 430
    Points
    28 430
    Par défaut
    Citation Envoyé par yvslms Voir le message
    Bonjour,

    Une démo qui semble prometteuse mais ou en est ce projet ?
    Est-il en lien avec Delphi / RAD Studio ?
    Non c'est du Lazarus et c'est dispo sur Github
    https://github.com/seriva/

    Citation Envoyé par gbegreg Voir le message
    @der§en
    Fais tu partie de l'équipe derrière http://www.diggets.com/ ? Comment as tu fait la capture d'écran de Gorilla 3D ? (as tu pu télécharger quelque chose ?).
    J'aime bien ton principe dans TF3D de générer dynamiquement la texture à appliquer au TMesh en fonction de l'"altitude" des mailles, il faut que j'étudie cela

    @Paul Toth
    Je ne connaissais pas. C'est encore un bel exemple : c'est nettement plus réaliste que ma petite île ! On y voit de la végétation comme j'aurai aimé en mettre sur l'île... Par contre, cet exemple ne doit pas être fait avec Firemonkey. Il y a quelques années, j'avais joué un peu avec le moteur opensource Asphyre pour Delphi et Lazarus.

    Mon petit projet FMX Island fait pauvre du coup en comparaison mais :
    - je ne suis pas graphiste ;
    - il n'utilise que des composants fournis en standard avec Delphi;
    - il est compatible avec l'édition Starter (l'édition gratuite de Delphi);
    - il est multi plate-forme : j'ai testé sous Windows et Mac OS pas encore sous Android.
    je te rejoins sur un point, le code c'est une chose, mais bien souvent l'effet "wouahhh!" il vient des graphismes plus que de la technique (encore qu'avec les shaders on est à la frontière des deux mondes)...même Minecraft nécessite un certain talent pour avoir quelque chose de joli, que ce soit dans le choix des couleurs ou des assemblages qui font que ces quelques cubes donnent bien l'idée de ce qu'ils représentent
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/02/2018, 19h30
  2. Postfix ne peut recevoir les mails du monde extérieur
    Par chaispaquichui dans le forum Réseau
    Réponses: 1
    Dernier message: 13/09/2010, 22h28
  3. SAP et la communication avec le monde extérieur
    Par stefor2 dans le forum SAP
    Réponses: 6
    Dernier message: 05/08/2010, 16h03
  4. génération automatique de la clé primaire avec sql server
    Par j_esti dans le forum Développement
    Réponses: 2
    Dernier message: 22/10/2008, 20h25
  5. Génération d'une liste de liste avec contraintes
    Par noresis dans le forum Prolog
    Réponses: 2
    Dernier message: 02/04/2007, 22h58

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