Terreno com mapa de altura com uma estrada

12

Qual é a melhor maneira de implementar um recurso de detalhes, como uma estrada, em um terreno com mapa de altura?

insira a descrição da imagem aqui

Atualização: é um pouco difícil de ver na imagem, mas a estrada desce do topo da pedreira para fazer sua base.

Adam Kane
fonte

Respostas:

14

O que é ótimo nas imagens é que elas geralmente incorporam até 4 canais (vermelho, verde, azul e alfa). Como um mapa de altura precisa apenas de uma dimensão, você pode usar o canal vermelho para armazenar as informações de altura (você ainda possui 256 níveis para a altura) e, em seguida, usar outros canais para outros fins (como usar o canal verde para mapear as estradas) , canal azul para água / umidade) etc ...

Assim, você pode ter certeza de que, ao construir seu terreno, as zonas onde uma estrada deve ser construída aparecerão planas, em vez de seguir o gradiente de altura.

XGouchet
fonte
1
É possível usar a imagem HDRI, para que os números flutuantes possam ser usados ​​para armazenar informações de altura mais precisas?
Quazi Irfan
1
A imagem HDRI não é um formato de arquivo, mas um conceito, mas sim, você pode usar formatos de arquivo específicos para permitir mais precisão. Isso dependeria principalmente do seu hardware / software, mas há uma imagem RG flutuante que você pode armazenar em 32 ou 64 bits. Mas qualquer que seja o formato, se você usar mais bits por canal, você poderia sempre converter valores int com o número de ponto flutuante como este: f = (v / 256,0), onde f é o seu float, v o valor int atual
XGouchet
É uma boa idéia armazenar todos os objetos estáticos de um mapa em um mapa (altura)? como vegetação, folhagem, casa? ou ponteiros onde outro objeto será colocado? ou existe alguma outra maneira?
Quazi Irfan
Eu não armazenaria a localização exata, mas talvez apenas uma informação de densidade, e depois gerasse os dados (vegetação, casa etc ...) a partir da informação de densidade. Mas a melhor maneira é colocar esses objetos à mão e salvá-los usando um arquivo binário de dados ou um arquivo de descrição XML
XGouchet
1
@iamcreasy, é claro que você pode usar o mapa de altura para fazer sua casa tocar o chão, mas é necessário descrever como é o modelo da casa (paredes, portas, móveis dentro), que não pode ser descrito em um pixel. Além disso, as informações de pixel apenas não fornecerão uma orientação precisa; portanto, todas as suas casas serão alinhadas (o que não parecerá natural ou "bonito").
XGouchet
1

A maneira como faço isso é separar o mapa de altura (eu uso floats, por exemplo, 513 * 513) e o splatmap (a "textura de controle") que geralmente precisa de uma resolução maior (eu uso 32 bits bmps, 512x512).

O mapa de altura cria a malha (o terreno, os triângulos).

O mapa de controle abrange todo o terreno e cada uma de suas camadas (RGBA) indica o quanto dizem Stone, Dirt, Road etc. que você deve ver No terreno.

Dessa forma, você pode usar um editor para: a) criar o terreno eb) pintar o terreno (com rocha, terra, estrada etc.)

Faça um goolge rápido em 'painting heightmap', 'heightmap splatmap' e tal para obter uma explicação mais completa ou faça o download, diga ao Unity3D para verificar como ele pode funcionar na 'realidade'.

Valmond
fonte