2d Geração processual do universo

16

Quero criar um universo plano, onde, a princípio, todo o universo esteja em branco.

Isso seria representado por uma imagem de fundo de nebulosa de rolagem de paralaxe.

O que eu quero fazer é representar os planetas como objetos em forma de disco no universo. Eles podem ser de vários tamanhos.

O interior dos discos será constituído por uma massa de terra; depois, fora, haverá um corpo de água e depois desse ar.

qual seria a melhor maneira de criar esses ladrilhos processualmente, como por exemplo, o ar consistiria em vários gases e na terra de vários minerais e recursos.

Meu primeiro pensamento é criar imagens de textura e, em seguida, eliminar os círculos dessas texturas, mas o problema é que essas texturas teriam que envolver horizontal e verticalmente. Existe uma maneira totalmente processual de fazer isso?

Joseph Le Brech
fonte
Perguntas como essa são melhor respondidas com algum tipo de visual para descrever o que você procura. A boa resposta abaixo pode ser muito técnica ou não técnica o suficiente.
Richard Fabian

Respostas:

14

Texturas processuais, principalmente as baseadas em ruído, podem ser feitas para ladrilhar. Veja este tópico no GDNet para alguma discussão, bem como esta entrada no diário. Há também esse link , que parece interessante, embora eu não possa falar por sua veracidade.

Quanto à geração processual do mundo, há este artigo escrito pelo cara que está desenvolvendo o Infinity. O sistema dele é 3D, mas você provavelmente poderia adaptar as técnicas com bastante facilidade.

Também existe um wiki inteiro sobre geração de conteúdo procedural .


fonte
1
Pff. Eu preciso aprender a digitar mais rápido. Isso é basicamente o que tenho na janela do editor abaixo ... +1 para você, senhor.
bummzack
Saúde, eu vou tentar.
Joseph Le Brech 23/03
2

Parece-me que você quer texturas retangulares com ar por cima e sujeira por baixo. Você pode mapear texturas retangulares para os círculos, fazendo com que a coordenada da textura U represente o ângulo ao redor do círculo, e a coordenada da textura V represente a distância do centro do círculo. Para planetas maiores, U pode envolver o planeta várias vezes.

Para converter de coordenadas 2D regulares XY para as coordenadas UV acima, você pode fazer contas da seguinte maneira:

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

Deve-se tomar cuidado para evitar calcular isso muito perto do centro dos planetas ...

bmcnett
fonte
Estou pensando mais ao longo da linha de uma seção transversal vertical do universo como esta: i.imgur.com/gpCTc.jpg terra, mar, ar, vazio. etc ..
Joseph Le Brech
Essa é uma maneira razoável de dividir o espaço em tipos, mas será um desafio fazer com que pareça planetas esféricos.
bmcnett
não há necessidade de fazer parecer muito com um planeta. terra, água e ar na proporção certa e tudo em uma grade hexagonal, juntamente com outros planetas nessa grade.
Joseph Le Brech
Ah, então você desejará gerar muitas peças hexagonais de textura, com a restrição de que a borda entre terra / ar etc. apareça em um local previsível entre peças adjacentes?
bmcnett
sim, de maneira esférica. então o tamanho de cada camada (terra, água ...) é escolhido aleatoriamente e, nessa terra, blocos aleatórios de terra serão colocados para o planeta e o mesmo para cada camada.
Joseph Le Brech