Iluminação ambiente

A iluminação ambiente fornece iluminação constante para uma cena. Ele destaca todos os vértices de objeto da mesma forma porque ela não depende de quaisquer outros fatores de iluminação como normais de vértice, direção da luz, posição da luz, intervalo ou atenuação. A iluminação ambiente é constante em todas as direções e fornece cor de forma igual para todos os pixels de um objeto. Ela é rápida de calcular, mas deixa os objetos com uma aparência simples e irreal.

A iluminação ambiente é o tipo mais rápido de iluminação, mas produz resultados menos realistas. O Direct3D contém uma única propriedade de luz ambiente global que você pode usar sem criar qualquer luz. Como alternativa, você pode configurar qualquer objeto de luz para fornecer iluminação ambiente.

A iluminação ambiente para uma cena é descrita pela seguinte equação.

Iluminação ambiente = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]

Em que:

Parâmetro Valor padrão Type Descrição
Cₐ (0,0,0,0) D3DCOLORVALUE Cor ambiente do material
Gₐ (0,0,0,0) D3DCOLORVALUE Cor ambiente global
Atteni (0,0,0,0) D3DCOLORVALUE Atenuação de luz da luz ith. Consulte Fator de atenuação e destaque.
Spoti (0,0,0,0) D3DVECTOR Fator de destaque da luz ith. Consulte Fator de atenuação e destaque.
Sum N/D N/D Soma da luz ambiente
Lai (0,0,0,0) D3DVECTOR Cor ambiente da luz da luz ith

 

O valor de Cₐ é:

  • vértice color1, se AMBIENTMATERIALSOURCE = D3DMCS_COLOR1 e a primeira cor de vértice for fornecida na declaração de vértice.
  • cor do vértice2, se AMBIENTMATERIALSOURCE = D3DMCS_COLOR2 e a segunda cor de vértice for fornecida na declaração de vértice.
  • cor ambiente do material.

Nota Se qualquer opção AMBIENTMATERIALSOURCE for usada e a cor do vértice não for fornecida, a cor do ambiente do material será usada.

 

Para usar a cor ambiente do material, use SetMaterial, conforme mostrado no exemplo de código abaixo.

Gₐ é a cor ambiente global. Ele é definido usando SetRenderState(D3DRS_AMBIENT). Há uma cor ambiente global em uma cena do Direct3D. Este parâmetro não está associado um objeto de luz do Direct3D.

Lai é a cor ambiente da luz ith na cena. Cada luz do Direct3D tem um conjunto de propriedades, uma delas é a cor ambiente. O termo, sum(Lai) é a soma de todas as cores ambiente na cena.

Exemplo

Neste exemplo, o objeto é colorido usando a luz ambiente da cena e uma cor ambiente de material.

#define GRAY_COLOR  0x00bfbfbf

Ambient.r = 0.75f;
Ambient.g = 0.0f;
Ambient.b = 0.0f;
Ambient.a = 0.0f;

De acordo com a equação, a cor resultante para os vértices do objeto é uma combinação da cor do material e da cor da luz.

As duas ilustrações a seguir mostram a cor de material, que é cinza, e a cor de luz, que é vermelho brilhante.

ilustração de umailustração de esfera cinza de uma esfera vermelha

A cena resultante é mostrada na ilustração a seguir. O único objeto na cena é uma esfera. A luz ambiente destaca todos os vértices do objeto com a mesma cor. Não é dependente da normal de vértice ou da direção da luz. Como resultado, o círculo se parece com um círculo 2D porque não há nenhuma diferença na sombreamento ao redor a superfície do objeto.

ilustração de uma esfera com iluminação

Para dar uma aparência mais realista aos objetos, aplique iluminação especular ou difusa além de iluminação.

Matemática de iluminação