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).
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.
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 |
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 AddVertex surf,-1,1,0
; Adicionamos 4 vértices... AddTriangle surf,0,1,2
; e 2 triângulos... 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.
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.