Terrain na Unity: Montanhas, Texturas e Árvores

Unity Terrain do zero: tamanho e resolução, esculpir montanhas, pintar 3 Terrain Layers por altura e espalhar árvores e grama sem derrubar o FPS no Unity 6.
Terrain na Unity: Montanhas, Texturas e Árvores
O Unity Terrain é um objeto de terreno que você esculpe com pincel direto na Scene view, pinta com camadas de textura e povoa com árvores e grama. Você cria em GameObject > 3D Object > Terrain, ajusta tamanho e resolução, esculpe com as ferramentas de altura, aplica Terrain Layers e espalha vegetação. Aqui você monta um terreno jogável do zero com três camadas (grama, rocha e neve), vê o que muda com o pacote Terrain Tools e sabe quando é melhor nem usar Terrain.
A parte que mais derruba projeto não é esculpir. É a vegetação: grama demais, distância demais, e o FPS que estava em 120 cai para 40 sem você saber por quê.
Terrain na Unity: o que é e quando usar
O Terrain é um mesh gerado a partir de um heightmap, uma imagem em tons de cinza onde cada pixel guarda uma altura. A Unity cuida do nível de detalhe sozinha: perto da câmera o terreno tem mais triângulos, longe tem menos. Por cima disso, ele guarda onde cada textura foi pintada (o splatmap), onde cada árvore está e a densidade de grama por área.
Use Terrain quando o jogo tem paisagem natural grande: mundo aberto, fase de exploração, mapa de corrida off-road, área externa de um survival. Ele é bom em colinas, vales e montanhas, e tem colisão pronta com o Terrain Collider.
Ele é ruim em formas que um heightmap não representa: cavernas, arcos, paredes negativas, penhascos que avançam sobre o vazio. Cada ponto do terreno tem só uma altura. Para isso existem os buracos (Paint Holes) mais meshes modelados, ou o terreno inteiro feito em outra ferramenta.
Se você quer gerar o relevo fora da Unity e importar, o Terrain Studio, gerador de terreno 3D grátis exporta heightmap que o Terrain lê.
Criar o Terrain e definir resolução e tamanho
- GameObject > 3D Object > Terrain. A Unity cria o GameObject e um asset TerrainData no Project. Esse asset é o terreno de verdade: se duplicar o GameObject sem duplicar o asset, os dois editam a mesma coisa.
- No Inspector, clique no ícone de engrenagem (Terrain Settings).
- Em Mesh Resolution, defina Terrain Width, Terrain Length (tamanho em X e Z, em metros) e Terrain Height (a diferença máxima de altura).
- Em Texture Resolutions, defina Heightmap Resolution.
Valores de partida para um mapa de exploração:
- Width e Length: 500 x 500. Ande pelo terreno com o personagem antes de aumentar. Um terreno de 1000 x 1000 parece pequeno no Inspector e é enorme a pé.
- Height: 150. Esse número é o teto. Se o pico mais alto precisa de 100 metros, 150 dá folga.
- Heightmap Resolution: 513. Ela precisa ser potência de 2 mais 1 (257, 513, 1025...). Com 500 metros e 513, cada amostra de altura fica a cerca de 1 metro da outra, detalhe suficiente para relevo de jogo.
Mude a resolução antes de esculpir. Trocar depois reamostra o heightmap e pode suavizar ou serrilhar o que você já fez.
Esculpir: raise, smooth, set height e stamp
Clique no ícone de pincel do Inspector (ou use o overlay Terrain Toolbar na Scene view, no Sculpt Mode). As ferramentas nativas:
- Raise or Lower Terrain: clique sobe, Shift + clique desce. É o pincel principal.
- Set Height: nivela a área na altura escolhida. Use para platôs, a base de uma vila, a pista de um circuito. O botão Flatten Tile aplica a altura no tile inteiro.
- Smooth Height: suaviza arestas e degraus. Passe depois de cada etapa de Raise.
- Stamp Terrain: carimba a forma do pincel com uma altura definida. Bom para crateras e morros com formato controlado.
- Paint Holes: abre buracos no terreno para entrada de caverna ou porão.
Atalhos que economizam tempo: ** e ** diminuem e aumentam o pincel, - e = mudam a opacidade, , e . trocam de pincel. Com o mouse sobre o terreno, F foca a câmera no ponto embaixo do cursor, e não no terreno inteiro.
Um fluxo que funciona:
- Set Height com Flatten Tile em 20 metros. Assim você tem espaço para cavar vales e lagos abaixo do "nível do mar".
- Raise com pincel grande e opacidade baixa (10 a 20) para as massas principais: uma cordilheira de um lado, colinas do outro.
- Raise com pincel menor para picos e cristas.
- Smooth em tudo que o personagem vai pisar.
- Shift + Raise para o vale do rio e o lago.
- Ande pelo terreno com o personagem. Encosta íngreme demais para subir? Suavize.
Terrain Layers: texturas por altura e inclinação
Clique em Paint Texture, depois Edit Terrain Layers > Create Layer e escolha a textura difusa. A primeira camada vira a base e cobre tudo. Crie três:
- Grama (base).
- Rocha, para encostas.
- Neve, para os picos.
Selecione cada Terrain Layer no Project para configurar o resto: Normal Map e Normal Scale, Mask Map (no URP, o canal R é metallic, G é oclusão, B é altura e A é smoothness) e, em Tiling Settings, o Size, que define a cada quantos metros a textura repete. Grama em 4 a 8 metros, rocha em 10 a 15. Textura de terreno com tile pequeno demais mostra o padrão repetido de longe, então teste olhando de cima.
Pintar por altura e inclinação. No terreno nativo, você pinta à mão com Paint Texture: rocha nas encostas, neve acima de certa altura. Com o pacote Terrain Tools, o pincel ganha Brush Mask Filters: você adiciona um filtro de Height (pinta só entre duas alturas) e um de Slope (só onde a inclinação passa de um ângulo). Com a camada de neve selecionada e o filtro de altura no topo, um pincel enorme passado pelo mapa todo pinta só os picos. Mesma coisa para a rocha com filtro de inclinação.
Limite de camadas. No URP, o terreno renderiza quatro Terrain Layers por passada. Cinco camadas significam duas passadas, ou seja, o terreno desenhado duas vezes. Fique em até quatro por tile. Mesmo uma camada adicionada e nunca pintada conta. Se você ainda não domina normal map e mask map, o post de materiais e texturas na Unity explica cada mapa.
Esculpir e pintar um terreno bonito é a parte que vende o print. Fazer ele virar uma fase jogável, com personagem que sobe as encostas certas, câmera que não atravessa o morro, inimigos que andam pelo relevo e FPS estável num computador médio, é onde a coisa trava para quem aprende sozinho, porque cada sistema mexe no outro. A vegetação, logo abaixo, é o primeiro lugar onde isso aparece.
Árvores e detalhes sem matar a performance
Árvores. Em Paint Trees, clique em Edit Trees > Add Tree e escolha o prefab. Ajuste Brush Size e Tree Density e pinte. O botão Mass Place Trees espalha uma quantidade fixa no terreno todo de uma vez, útil como base antes do ajuste fino à mão.
Grama e detalhes. Em Paint Details, Edit Details oferece duas opções:
- Add Detail Mesh: um prefab de mesh (tufo de grama, flor, pedrinha). A documentação recomenda ligar Use GPU Instancing, que funciona em todos os pipelines e usa o material do próprio prefab.
- Add Grass Texture: quads com textura que balançam com o vento. Ligue Billboard para eles sempre virarem para a câmera.
Agora o que segura o FPS, todos em Terrain Settings:
- Detail Distance: até quantos metros a grama aparece. Comece em 60. Grama a 200 metros ninguém vê, e a GPU desenha do mesmo jeito.
- Detail Density Scale: multiplicador global de densidade, de 0 a 1. Ótimo para um preset de qualidade baixa.
- Tree Distance: distância em que as árvores somem.
- Billboard Start: a partir de que distância a árvore vira um billboard (uma imagem plana) em vez do mesh 3D. Entre 50 e 100 é um bom começo.
- Pixel Error: quanto o terreno pode simplificar a geometria. Valores maiores, menos triângulos.
- Draw Instanced: ligue. Reduz o custo de CPU do terreno.
Meça no Profiler com a câmera no pior ponto do mapa (o mais alto, vendo mais terreno), não no ponto de spawn.
Terrain Tools package: o que ele adiciona
O Terrain Tools é um pacote gratuito da Unity que se instala em Window > Package Management > Package Manager > Unity Registry, buscando "Terrain Tools". Ele não troca o Terrain, só acrescenta ferramentas por cima. O que você ganha:
- Ferramentas de escultura avançadas: ruído, terraços, pontes entre dois pontos, clonagem de área.
- Efeitos: achatar, acentuar picos, dar contraste entre alturas.
- Transformações: pinçar, borrar e torcer o relevo.
- Erosão: hidráulica, térmica e de vento. Uma passada de erosão hidráulica transforma um morro "de massinha" em algo com cara de rocha desgastada.
- Brush Mask Filters: os filtros de altura e inclinação da seção de texturas.
- Terrain Toolbox: cria terreno a partir de heightmap ou preset, muda configurações de vários tiles ao mesmo tempo e exporta e importa heightmaps e splatmaps.
A versão exata do pacote depende da versão do editor; o Package Manager mostra a compatível com o seu projeto. Instale no começo: o fluxo de texturas por filtro já compensa.
Quando NÃO usar Terrain (mobile, low poly)
- Jogo low poly estilizado. O Terrain gera relevo suave e realista. Para o visual facetado de low poly, um mesh do Blender com faces planas fica mais bonito e mais leve. Veja modelagem 3D low poly para jogos.
- Mobile de entrada. Dá para usar, mas com várias restrições (camadas, distâncias, Pixel Error). Um mesh com poucos triângulos e textura única costuma ganhar.
- Fase pequena e fechada. Uma arena de 50 x 50 metros não precisa de um sistema de LOD de terreno.
- Cavernas e estruturas com teto. Heightmap não faz. Use mesh.
- Câmera top-down fixa. Um plano com textura pintada resolve com menos custo.
Erros comuns: textura esticada, grama rosa no URP
Textura esticada nas encostas. O terreno projeta a textura de cima para baixo, então paredes íngremes esticam. Diminua a inclinação, pinte rocha nessas áreas (rocha estica com menos cara de erro) ou cubra o paredão com meshes de pedra.
Grama rosa no URP. Material do detail mesh com o shader Standard do Built-In. Troque por um shader do URP no prefab e reatribua em Edit Details. Acontece muito com prefab de vegetação importado depois de converter o projeto, que nenhum conversor processou.
Terreno preto ou com camada sumindo. Terrain Layer sem textura difusa, ou material do terreno com shader de outro pipeline. No HDRP, camadas além da oitava por tile são ignoradas em tempo de execução; no URP elas não somem, só custam passadas extras.
Personagem atravessa o terreno. O GameObject perdeu o Terrain Collider, ou o Terrain Collider aponta para outro TerrainData.
FPS despenca só em um ponto do mapa. É o ponto onde a câmera vê mais grama e árvores. Reduza Detail Distance e Tree Distance e confirme no Profiler.
Próximo passo
Monte o terreno de 500 x 500 com as três camadas e um bosque, coloque o personagem 3D e ande de ponta a ponta. Anote onde o FPS cai e onde a subida fica impossível, ajuste e repita. Esse ciclo de testar a pé é o que separa terreno bonito de terreno jogável.
Perguntas frequentes
O que o pacote Terrain Tools adiciona ao Terrain da Unity?
Ferramentas de escultura avançadas (ruído, terraços, clonagem), efeitos de erosão hidráulica, térmica e de vento, filtros de máscara de pincel por altura e inclinação, e o Terrain Toolbox, que cria terreno a partir de heightmap e muda configurações de vários tiles de uma vez. É gratuito e instala pelo Package Manager.
Como colocar textura no Terrain da Unity?
Selecione o Terrain, escolha Paint Texture, clique em Edit Terrain Layers e crie uma camada com a textura difusa. A primeira camada cobre o terreno todo. As seguintes você pinta com o pincel. No URP, mantenha até quatro camadas por tile para o terreno renderizar numa passada só.
Por que a grama do Terrain fica rosa no URP?
Quase sempre é um detail mesh com material usando o shader Standard, que não existe no URP. Troque o material do prefab da grama por um shader do URP (ou Shader Graph) e reatribua em Edit Details. Isso costuma acontecer com prefab importado depois da conversão do projeto ou que o conversor de materiais não pegou.
Terrain da Unity serve para jogo mobile?
Serve em cenas pequenas e com cuidado: poucas camadas, Pixel Error alto, distâncias curtas de árvores e grama. Para mobile low poly, um mesh modelado no Blender costuma ser mais leve e mais fácil de controlar.


