Introdução a Malhas

Malhas são entidades com as quais você freqüentemente vai estar trabalhando - a menos que você esteja escrevendo algo estranho (por favor faça isso...)!

Malhas são compostas de vértices e triângulos, e podem ser carregadas de arquivos (talvez o resultado de um programa modelador 3D), ou construídas 'na mão' (montadas dentro de um programa B3D em tempo real).

 Carregando malhas 

Há 2 comandos providos para carregar arquivos de malhas - ' LoadMesh' e ' LoadAnimMesh' ambos carregam arquivos ' .X ' ou ' .3DS ' e retornam o identicador daquela entidade. Então qual é a diferença?

Modelos armazenados em arquivos normalmente são feitos de várias 'partes'. No caso de um modelo humano, estas partes podem representar braços, pernas etc.

Além disso, arquivos também contêm informação de animação, que são carregadas com o comando 'LoadAnimMesh'. A entidade retornada na verdade será a entidade de pai do grupo inteiro de 'partes filhas'.

Então, 'LoadAnimMesh' realmente carrega várias malhas!

Se você não precisar animar um modelo, você pode usar 'LoadMesh'. Isto vai 'juntar' todas as partes em uma malha e retorna uma única, combinada malha. A malha retornada é igual a que é retornada com o LoadAnimMesh, só que você não pode animá-la, e ela não têm qualquer malha filha.

Por que usar o LoadMesh então? Velocidade! - É mais rápido para o B3D lidar com uma única malha que com um grupo delas, assim se você não está planejando animar ou fazer qualquer coisa especial com uma malha, use LoadMesh.

 Criando malhas 

Antes começar a criar malhas, você precisará saber sobre 'Brushes' (a tradução seria 'brocha' ou 'pincel', mas vamos chamar de brush mesmo) em Blitz3D. Um 'Brush' é uma coleção de propriedades usada ao fazer triângulos. Estas propriedades são:

Cor - A cor que um triângulo é feito. (veja BrushColor)

Textura - De 0 a 8 mapas de textura que são usados para fazer um triângulo. (veja BrushTexture)

Alfa - A transparência do um triângulo. Alfa pode variar de 0 (completamente transparente) para 1 (completamente opaco). (veja BrushAlpha)

Brilho - A 'claridade' de um triângulo. Este valor pode variar de 0 (escuro) para 1 (realmente claro). (veja BrushShininess)

Blend - Blend descreve como um triângulo é combinado com o que já está na tela. (veja BrushBlend)

Efeitos - efeitos especiais opcionais. (veja BrushFX)

Para criar um brush, você usa o comando CreateBrush:

   
    ;cria um brush.
    brush=CreateBrush()

 

Uma vez que temos um brush, nós podemos fixar suas propriedades:

   
    ;um brush vermelho
    BrushColor brush,255,255,0

  ;com brilho máximo 
   BrushShininess brush,1

 

O que tudo isso tem a ver com malhas?

Bem, quando eu disse que malhas são compostas de vértices e triângulos, eu meio que menti! Malhas são feitas de fato de 'superfícies', e superfícies são compostas de vértices e triângulos!

Quando uma superfície é criada, você lhe fornece um brush que controla como são feitos todos os triângulos na superfície.

Uma revisão rápida:

Vamos nos aprofundar um pouco e criar uma malha simples:

   
    brush=CreateBrush()                           ; cria um brush
    BrushColor brush,255,0,0                  ; torna o brush vermelho

    mesh=CreateMesh()                             ; cria uma malha
      surf=CreateSurface( mesh,brush)    ; cria uma superfície vermelha

    AddVertex surf,-1,1,0                            ; Adicionamos 4 vértices...
    AddVertex surf,1,1,0 
    AddVertex surf,1-,1,0 
    AddVertex surf,-1,-1,0

    AddTriangle surf,0,1,2                          ; e 2 triângulos...
    AddTriangle surf,0,2,3

    UpdateNormals mesh 

 

Este código criará um quadrado vermelho simples.

Mas o que é esse estranho comando: 'UpdateNormals'? Bem, para que uma malha seja iluminada corretamente, seus 'vértices normais' devem ser calculados. Sem entrar em detalhes, o comando UpdateNormals fará isto para você. Se você sabe como as normais funcionam, você pode definir suas próprias normais usando o comando VertexNormal. Se não, apenas se lembre de inserir um 'UpdateNormals' ao término de qualquer modificação de malha que você faz, ou então suas malhas não serão iluminadas corretamente.

Note que você pode criar qualquer número de superfícies que você queira. Assim, a mesma malha pode conter muitos triângulos diferentemente coloridos/texturizados/qualquer coisa!

Por que preocupar com superfícies afinal de contas? Por que não apenas criar um grupo de malhas separadas, cada com suas próprias propriedades e pular toda essa tolice de superfície? Bem, novamente vem o fator VELOCIDADE! É mais rápido para o Blitz3D controlar superfícies múltiplas - que não podem ser movidas ou giradas como entidades - que controlar malhas múltiplas.

 Modificando Malhas 

Uma vez que você criou uma malha, há vários comandos disponíveis para modificar a malha em tempo real. Isto pode ser usado para criar uma gama de efeitos especiais impressionantes como bandeiras tremulantes, ondulação de água e assim por diante.

Estes comandos são:

Para mais informações em como usar estes comandos, dê uma olhada mais adiante no tutorial sobre vértices.

Copyright 2001 (c) Paul Gerfen - GamecodingUK