Panda3D/Manual/Cube Maps

Origem: Wikilivros, livros abertos por um mundo aberto.

Existe mais um tipo especial te mapa de textura: o cube map, que é introduzido no Panda3D versão 1.1. O cube map é similar á uma textura 3D, ja que precisa de coordenadas 3d de textura ( u, v, w ); também, o cube map é armazenado no disco como uma sequencia de imagens 2D comuns.

Mas ao contrario de uma textura 3D, que é definida empilhando um numero arbitrario de imagens 2D como panquecas para preencher um volume, o cube map sempre é definido com exatas imagens 2D, que são unidas para fazer um cubo.

As seis imagens de um cube map são numeradas de 0 á 5, e cada imagem correspondem a uma face particular do cubo: imagem 0 A +u (ou +x) face (direita) imagem 1 A -u (ou -x) face (esquerda) imagem 2 A +v (ou +y) face (frente) imagem 3 A -v (ou -y) face (costas) imagem 4 A +w (ou +z) face (cima) imagem 5 A -w (ou -z) face (baixo)

Por +x face nos queremos dizer que a face do cubo mais longinqua na axial X. No sistema de coordenada padrao Z-up do panda, essa é a face correta. Simiralmente, a face -x é a face mais longinqua na axial X negativa, ou a face esquerda, e assim vai para as faces Y e Z. Ja que as coordenadas do mapa de textura são chamadas (u,v,w) ao inves de (x,y,z) é mais tecnicamente correto chama-las de faces +u e -u, mas é mais facil pensar nelas como +x e -x.

As faces são dispostas de acordo com o seguinte diagrama:

Imagine que voce cortou o diagrama abaixo e montou em um cubo. Voce ficaria com algo mais ou menos assim:

Note que, quando voce segura um cubo de forma que a axial e cada face esteja na direção apropriada ( como na ilustraçao acima ), varias das faces estao de cabeça par abaixo ou de lado. Isso se deve a forma como os fabricantes de placa de video decidiram projetas as faces do mapa cubico ( e tambem, devido ao sistema padrao de coordenada do Padna3d ). Mas de fato, não importa de que modo as faces estas orientadas, contanto que voce sempre gere o seu mapa cubico da mesma forma.

De certa forma, o mapa cubico é um tipo de textura de superficie, como uma textura 2-d ordinario. Mas em outro sentido, ele é tambem volumetrico, como uma textura 3d: cada ponto dentro da coordenada 3d da textura é colorida para a face do cube mais proxima dela. Um modelo de esfera com o mapa cubico aplicado a ele escolheria as mesmas 6 faces:

Note que, enquanto uma textura 3D assinala um pixel diferente na textura para cada ponto dentro do volume, o mapa cubico assinala um pixel diferente na textura para cada direção a partir do centro.

Voce pode carregar um mapa cubico de uma serie de seis arquivos de imagem, muito similar á forma como voce carrega uma textura 3-D:

tex = loader.loadCubeMap('cubemap_#.png')

Como na textura 3D, a marca # no nome do arquivo será preenchiad com um numero de sequencia de imagme, que no caso do mapa cubico sera um digito de 0 a 5. O exemplo acima, entao, carregara um total de seis imagens "cubemap_0.png", "cubemap_1.png", "cubemap_2.png", "cubemap_3.png", "cubemap_4.png" e "cubemap_5.png", e as unira em um mapa cubico.