Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par gvasseur58

77PARTAGES

10  0 
[h=1]FMX Island épisode 1
génération de mondes extérieurs en 3D avec Delphi et Firemonkey
[/h]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).



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

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de gbegreg
Membre émérite https://www.developpez.com
Le 28/05/2018 à 13:23
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
6  0 
Avatar de SergioMaster
Rédacteur/Modérateur https://www.developpez.com
Le 28/05/2018 à 9:47
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 !
3  0 
Avatar de yvslms
Membre averti https://www.developpez.com
Le 02/06/2018 à 14:19
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.
2  0 
Avatar de Paul TOTH
Expert éminent sénior https://www.developpez.com
Le 04/06/2018 à 9:58
et vous avez vu celui là ? https://www.luukvanvenrooij.nl/proje...sisdevice2007/

2  0 
Avatar de der§en
Membre actif https://www.developpez.com
Le 03/06/2018 à 22:26
Arf, y’a des bouts de code à moi chez : http://www.diggets.com/

exemple :



A comparer avec mon prog TF3D :



1  0 
Avatar de gbegreg
Membre émérite https://www.developpez.com
Le 04/06/2018 à 11:45
@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.
1  0 
Avatar de der§en
Membre actif https://www.developpez.com
Le 04/06/2018 à 14:18
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...

1  0 
Avatar de Paul TOTH
Expert éminent sénior https://www.developpez.com
Le 04/06/2018 à 21:49
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
1  0 
Avatar de gbegreg
Membre émérite https://www.developpez.com
Le 02/06/2018 à 20:15
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
0  0 
Avatar de yvslms
Membre averti https://www.developpez.com
Le 03/06/2018 à 9:58
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
0  0