Mapeamento de ambiente esférico (Direct3D 9)

Mapas de ambiente esférico, ou mapas de esfera, são texturas especiais que contêm uma imagem da cena ao redor de um objeto ou os efeitos de iluminação ao redor do objeto. Ao contrário dos mapas de ambiente cúbicos, os mapas de esferas não representam diretamente os arredores de um objeto. A imagem de bule no tópico Mapeamento de Ambiente (Direct3D 9) mostra os efeitos de reflexão que você pode obter com o mapeamento de esfera. Um mapa de esferas é uma representação 2D da exibição completa de 360 graus da cena ao redor de um objeto, como se fosse feito através de uma lente olho de peixe, conforme mostrado na ilustração a seguir.

ilustração de um mapa de esferas do interior de um edifício

Coordenadas de textura para mapas de ambiente esférico

As coordenadas de textura especificadas para cada vértice que recebe um mapeamento de ambiente devem abordar a textura como uma função da distorção reflexiva criada pela curvatura da superfície. Os aplicativos devem calcular essas coordenadas de textura para cada vértice para obter o efeito desejado. Uma maneira simples e eficaz de gerar coordenadas de textura usa o vértice normal como entrada. Embora existam vários métodos, a equação a seguir é comum entre aplicativos que executam o mapeamento de ambiente com mapas de esfera.

equação de coordenadas de textura de computação para um mapa de esferas

Nessas fórmulas, você e v são as coordenadas de textura que estão sendo computadas e NX e NY são os componentes x e y do vértice de espaço da câmera normal. A fórmula é simples, mas eficaz. Se o normal tiver um componente x positivo, o normal apontará para a direita e a coordenada u será ajustada para lidar com a textura adequadamente. Da mesma forma para a coordenada v: positivo y indica que o normal aponta para cima. O oposto é verdadeiro para valores negativos em cada componente.

Se o normal apontar diretamente para a câmera, as coordenadas resultantes não deverão receber distorção. O desvio +0,5 para ambas as coordenadas coloca o ponto de distorção zero no centro do mapa da esfera e um vértice normal de (0, 0, z) aborda esse ponto. Essa fórmula não explica o componente z do normal, mas os aplicativos que usam a fórmula podem otimizar cálculos ignorando vértices com um normal que tem um elemento z positivo. Isso funciona para objetos de sombreamento plano porque, no espaço da câmera, se o normal apontar para longe da câmera (positivo z), o vértice será abatido quando o objeto for renderizado. Para objetos sombreados por Gouraud, um normal pode apontar para longe da câmera (x positivo) e o triângulo que contém o vértice ainda pode ser visível. Se você não computar você e v para esse vértice, o rosto ainda poderá ser usado, resultando em um comportamento inesperado.

Aplicando mapas de ambiente esférico

Você aplica um mapa de ambiente a objetos da mesma maneira que para qualquer outra textura, definindo a textura para o estágio de textura apropriado com o método IDirect3DDevice9::SetTexture . Defina o primeiro parâmetro como o índice para o estágio de textura desejado e defina o segundo parâmetro como o endereço da interface IDirect3DDevice9 retornado quando você criou a textura para o mapa do ambiente. Você pode definir as operações e argumentos de combinação de cores e alfa conforme necessário para obter os efeitos de mesclagem de textura desejados.

Mapeamento de ambiente