Por onde começar ao criar um editor de terreno 3D? [fechadas]

22

Estou procurando construir (para começar) uma ferramenta simples, que possa elevar, abaixar, suavizar e texturizar o terreno.

Então, quais são as coisas pelas quais tenho que passar para criar esse editor de terreno?

E talvez haja recursos valiosos disponíveis sobre o assunto?

Sim, esqueci de mencionar que estou interessado em um editor de terreno 3D.

joltmode
fonte

Respostas:

24

Para um editor de terreno 3D "clássico", as etapas podem ser as seguintes:

Gere uma malha (por exemplo, uma grade de quadrados, cada quadrado composto por dois triângulos), todos os vértices são compartilhados entre triângulos (para que exista apenas um normal por interseção). insira a descrição da imagem aqui

Isso deve ser feito em 3DMesh e renderizado em seu programa.

Crie uma ferramenta para elevar e abaixar (menores e maiores) partes da grade (é necessário calcular onde está o cursor do mouse na malha e modificar os vértices das malhas, mas apenas para cima e para baixo).

Crie uma textura grande (como 1024x1024x4 ou melhor) e texture com o que é chamado de mapa de splat: insira a descrição da imagem aqui

Torne possível pintá-lo (com R, G, B OR Alfa, não rosa por exemplo) e escolher texturas substituindo aquelas cores primárias feias (Vermelho, Azul, Verde, Alfa) ou, além disso, seja representado por elas:

O sombreador (que você precisará criar) deve multiplicar essas texturas agradáveis ​​(como pedra, grama, ...) pela intensidade do mapa de splat (o feio) e, em seguida, misturar o todo para que pareça, por exemplo (com apenas 2 cores), assim: insira a descrição da imagem aqui

Desculpe pelas imagens grandes, juntei isso no trabalho ...

Valmond
fonte
Ah, isso ficou um pouco mais claro. Teoricamente, após a malha 3D, é simplesmente o reposicionamento dos vértices (para cima / para baixo) e a textura neste exemplo, você fez o modo "splatmap", após o qual o sombreador se assemelha a um terreno "3D"?
joltmode
1
Correto para a malha 3D. O sombreador não faz nada de especial com a malha (o sombreamento de vértice), o grande trabalho é no sombreador de sombreamento (o "sombreador de pixels"), onde a pesquisa texel no mapa splat fornece quanta grama, pedra, etc., o pixel final deve obter (é claro que você também pode ter uma textura 'base', como a pedra, por exemplo, que está sempre em 100% e outras texturas se espalham por ela).
Valmond 18/11/11
6

A primeira coisa é deixar claro a estrutura de dados do seu terreno e o que você deseja de um editor. É uma malha? Uma variedade de alturas? Algum tipo de sistema voxel no estilo Minecraft? Você precisa adicionar recursos de terreno de malha, como árvores e edifícios? Manualmente, automaticamente ou ambos? Eu poderia continuar, mas você captou a ideia.

Um editor de terreno básico não é tão difícil de escrever, mas os detalhes variam muito, dependendo do jogo que você está fazendo e, portanto, do tipo de terreno que você deseja criar.

SimonW
fonte
Bem, uma malha / matriz de alturas / voxels etc. é apenas uma maneira de armazenar os dados associados, eu estava mais interessado, em como escrever as ferramentas para preencher esses dados. Na verdade, eu não tenho nenhuma ideia de como um editor de terreno fica "nos bastidores". Posso reverese engenheiro-lo, mas apenas em meu próprio caminho, eu aposto que existem algumas orientações que devem ser seguidas embora ...
joltmode
2
-1. Isso não parece muita resposta para mim. Você está fazendo algumas perguntas, que seriam mais adequadas como um comentário.
bummzack
5

Isso é apenas um acompanhamento da resposta de Valmond, mas não parece curto o suficiente para adicionar como comentário.

Depois de criar um editor básico, experimente gerar o mapa de altura inteiramente na GPU. Isso é totalmente opcional, mas é uma boa maneira de transferir o trabalho para a GPU para um terreno em constante mudança. Valmond já mencionou a textura que está sendo feita no pixel shader, mas o shader de vértice também pode ser usado, usando uma pesquisa de textura para aumentar e diminuir os vértices na grade. Aqui está um tutorial sobre como fazer isso com o shader de vértice. O material não-shader é específico para C # e XNA, mas o material importante está no código do shader.

Nesse caso, seu código no lado da CPU lidará apenas com a modificação da textura da escala de cinza armazenada na memória. Sua grade de malha permanece plana, os vértices não são atualizados pela CPU. Cada vez que a textura é alterada, a nova textura pode ser passada para a GPU.

Lembre-se de que nem todos os modelos de sombreador suportam amostragem de textura no sombreador de vértices (por exemplo, no HLSL, você precisa de pelo menos o sombreador modelo 3.0).

ChrisC
fonte
0

Você pode dar uma olhada no http://www.gre3d.org/addonforums/viewforum.php?f=16 da ETM Ogre , para lhe dar algumas idéias. O Artifex Terra é baseado nele, se você quiser vê-lo em ação.

Johann
fonte
2
Sugiro que você junte suas respostas e exclua as não utilizadas.
joltmode
Para terrenos criados / manipulados por GPU, consulte os artigos Scape de Gilliam de Carpentier, leituras muito informativas sobre o assunto. decarpentier.nl/scape-render
Johann
Como Tom já sugeriu, os artigos do Scape podem já ter servido como uma referência interessante na geração e renderização de terrenos. Mas desde essa sugestão, eu publiquei outro artigo do Scape que é ainda mais relevante para esse tópico, cobrindo totalmente seu pipeline de edição com base em pincel. Então eu pensei em avisar. www.decarpentier.nl/scape-brush-pipeline