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?


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 .


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 ...


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.