Vamos falar aqui sobre o básico sobre terrenos, será um terreno específico, de campo aberto, quadrado e com uma altura, depois vamos aprender como importar terrenos a partir de um arquivo. Esses terrenos serão no formato de arquivo .RAW, são imagens preto e branco de 8-bits e o arquivo não tem cabeçalho, então são apenas os bits e que serão usados para saber a altura de cada posição no mundo.
Para fazer esse tipo de mapa usaremos uma série de triângulo, quando criamos os nossos eixos 3d usamos primitivas do tipo PrimitiveType.LineList e agora usaremos PrimitiveType.TriangleList, uma lista de triâmgulos que criarão o nosso mundo.
Nos utilizaremos tambem um outro tipo de métodro Draw, substituiremos o DrawPrimitives para DrawIndexedPrimitives, agora alem de desenhar os triângulos cara triângulo terá um índice para cada vértice, então cada triângulo terá 3 índices. Vou usar mais umas imagens para ilustrar melhor, caso queiramos desenhas 2 triângulos teremos:
Veja que precisamos de 6 vértices para definir apenas 2 triângulos, os vétices 2 e 3 são definidos 2 vezes o que seria muito ruim, nossa placa de video pediria arrego se para cada 2 triângulos tivessemnos que devinir 2 vértices, um por cima do outro. O uso de índices nos ajuda a criar uma série de triângulos sem que seja preciso definir o mesmo vértice 2 vezes.
Viu?, anteriormente teriamos de definir 6 vértices, 3 para cada triângulo, agora definimos 6, um a menos e sem repetiçoes pois usamos 5 índices que são pontos únicos, para entender melhor:
Veja que temos 12 triângulo, e apenas 12 índices, se precisassemos delarar todos os vértices teriamos 36 no total, veja que se pegarmos um vértice no meio, esse vértice compartilha-se com 8 triângulos e que precisariam ser declarados 8 vezes.
Então para desenharmos nossa malha de terreno precisamos calcular os indices e depois criar os vértices, sem que precisem ser escritos varias vezes.
Ainda nesse capitulo teremos: Mostrar o mundo em Modo WireFrame, carregar mapa de altura, Texturas, Efeito Básico, Efeito Avançado.
Nenhum comentário:
Postar um comentário