2d Génération d'univers procédural

16

Je veux créer un univers plat, où tout d'abord l'univers est vide.

Cela serait représenté par une image d'arrière-plan de la nébuleuse à défilement parallaxe.

Ce que je veux faire, c'est représenter les planètes comme des objets en forme de disque dans l'univers. Ils peuvent être de différentes tailles.

L'intérieur des disques sera constitué d'une masse terrestre, puis à l'extérieur qui sera un plan d'eau et après cet air.

quelle serait la meilleure façon de créer ces carreaux sur le plan de la procédure, car par exemple, l'air se composerait de divers gaz et la terre de divers minéraux et ressources.

Ma première pensée est de créer des images de texture, puis de supprimer les cercles de ces textures, mais le problème est que ces textures devraient être horizontales et verticales. Existe-t-il un moyen entièrement procédural de procéder?

Joseph Le Brech
la source
Il est préférable de répondre à des questions comme celle-ci avec une sorte de visuel pour décrire ce que vous recherchez. La bonne réponse ci-dessous peut être soit trop technique, soit pas assez technique.
Richard Fabian

Réponses:

14

Des textures procédurales, en particulier celles basées sur le bruit, peuvent être faites pour carreler. Voir ce fil sur GDNet pour une discussion, ainsi que cette entrée de journal. Il y a aussi ce lien , qui semble intéressant même si je ne peux pas parler de sa véracité.

Quant à la génération procédurale du monde, il y a cet article écrit par le gars qui développe Infinity. Son système est en 3D mais vous pourriez probablement adapter assez facilement les techniques.

Il y a aussi tout un wiki sur la génération de contenu procédural .


la source
1
Pff. J'ai besoin d'apprendre à taper plus vite. C'est essentiellement ce que j'ai dans la fenêtre de l'éditeur ci-dessous ... +1 à vous monsieur.
bummzack
cheers je vais essayer.
Joseph Le Brech
2

Il me semble que vous voulez des textures rectangulaires avec de l'air en haut et de la terre en bas. Vous pouvez mapper des textures rectangulaires aux cercles en faisant que la coordonnée de texture U représente l'angle autour du cercle et que la coordonnée de texture V représente la distance par rapport au centre du cercle. Pour les planètes plus grandes, U peut enrouler la planète plusieurs fois.

Pour convertir des coordonnées 2D XY régulières aux coordonnées UV ci-dessus, vous pouvez faire des calculs comme ceci:

y -= planet_center.y;
x -= planet_center.x;
u = atan2( y, x );
v = sqrt( y*y + x*x );

Il faut veiller à ne pas le calculer trop près du centre des planètes ...

bmcnett
la source
Je pense plus le long d'une ligne verticale de l'univers comme celle-ci i.imgur.com/gpCTc.jpg terre, mer, air, vide. etc.
Joseph Le Brech
C'est une façon raisonnable de partitionner l'espace en types, mais ce sera un défi de le faire ressembler à des planètes sphériques.
bmcnett
il n'y a aucune exigence pour qu'elle ressemble trop à une planète. juste assez de terre au hasard, d'eau, d'air dans la bonne proportion et le tout sur une grille hexagonale avec d'autres planètes sur cette grille.
Joseph Le Brech
Ah alors vous voudrez générer beaucoup de tuiles de texture hexagonales, avec la contrainte que le bord entre terre / air, etc. apparaisse à un endroit prévisible entre les tuiles adjacentes?
bmcnett
oui, de manière sphérique. de sorte que la taille de chaque couche (terre, eau ..) est choisie au hasard, puis dans cette masse terrestre, des tuiles de terre aléatoires seront placées pour la planète, et la même pour chaque couche.
Joseph Le Brech