Bonjour,
J'ai développé en Delphi7 un logiciel de génération "d'univers".
J'entends par génération d'univers la création de systèmes stellaires, étoiles, planètes, satellites, etc.
Il y a grosso modo deux parties principales :
1) La création des systèmes stellaires
2) La génération de cartes pour chaque planète tellurique.
Quelques détails....
Galaxie / système stellaire :
- Génération d'une galaxie regroupant 'n' systèmes stellaires
- Chaque système contient un nombre varié d'étoiles, planètes et lunes.
- La génération d'univers est paramétrable. On peut créer un univers réaliste ou alors carrément "exotique".
- Chaque système peut-être visualisé en :
x 2D sur une coupe "transversale".
x 3D via OpenGL et Glut.
Planète :
- Chaque astre possède des caractéristiques qui lui sont propres et sont cohérentes avec l'ensemble des données du système (rayon, période de révolution, rotation, masse, atmosphère, albédo, composés atmosphériques, etc). Soit plus de 30 propriétés pour chaque planète / lune.
- Pour chaque astre (étoiles, planètes et lune) il est possible d'éditer certaines des propriétés physiques de celui-ci.
- J'ai également mis en place un éditeur de terrain pour les planètes telluriques.
Le projet est bouclé à 90% environ.
Je compte releaser le programme ici même quand il sera terminé histoire d'en faire profiter tout le monde.
L'ensemble des modules précités fonctionnent correctement, cependant je bloque sur quelques points bien précis.
J'ai besoin d'aide !
Problème n°1 :
Comment ajouter une atmosphère aux planètes via OpenGL et Glu ?
Toutes les recherches que j'ai faites m'orientent vers l'utilisation d'un "shade" (dégradé) entre la surface de la planète et l'espace. Mais je n'ai pas trouvé de routine en Delphi 7 ni même d'algo permettant de faire cela via OpenGL et Glut.
Problème n°2 :
Comment générer une carte "sphérique" avec l'algo du Diamond Square ?
C'est à dire, une carte où quand on dépasse le bord droit on revient sur le bord gauche avec bien sûr la continuité du relief (c'est là où je bloque).
Il semble que l'algorithme de Perlin puisse gérer ce cas. Je ne suis pas sûr que le Diamond Square permette de faire cela. Dois-je changer d'algo ?
Problème n°3 :
La génération de rivières.
Quel algorithme permet de générer des rivières sur l'ensemble de la carte ?
Le "post" d'anykeyh sur la génération procédurale de planètes (que je n'ai découvert qu'il y a 1 semaine) était un point de départ intéressant, mais les explications trop succinctes concernant la génération de rivières ne m'ont pas permis de mettre en place un algo qui génère des rivières réalistes.
Problème n°4 :
Comment compter le nombre de continents existant ?
Sachant que pour faire la différence entre un continent et une île c'est avant tout une question de taille.
Cela revient à déterminer les zones entourées d'eau dont la surface est supérieure à une valeur X.
Y a-t-il un algorithme pour cela ?
Voili voulou...
Je rajoute quelques screens du programme histoire que vous vous fassiez une idée de l'appli.
Ecran de paramétrage pour la génération d'univers :
http://imageshack.us/photo/my-images...gparamtres.jpg
Vue 2D du système:
http://imageshack.us/photo/my-images/221/vue2deteditionpropritsn.jpg
Vue 3D :
http://imageshack.us/photo/my-images...eanneaux03.jpg
Vue 3D :
http://imageshack.us/photo/my-images...raproche01.jpg
Vue 3D :
http://imageshack.us/photo/my-images...raproche02.jpg
Système solaire :
http://imageshack.us/photo/my-images...tmesolaire.jpg
Ecran de paramétrage pour la génération de map :
http://imageshack.us/photo/my-images/269/map00.jpg
Map :
http://imageshack.us/photo/my-images/219/map01w.jpg
Vue en fausses couleurs :
http://imageshack.us/photo/my-images/684/map04.jpg
Map :
http://imageshack.us/photo/my-images/52/map05l.jpg
Map :
http://imageshack.us/photo/my-images/804/map08.jpg
Relief fractal couplé à une onde sinusoïdale -> Génération d'atols.
http://imageshack.us/photo/my-images/231/map11.jpg
Partager