Compartilhar via


Iluminação ambiente

A iluminação ambiente fornece iluminação constante para uma cena. Ele ilumina todos os vértices do objeto da mesma forma porque não depende de nenhum outro fator de iluminação, como normais de vértice, direção da luz, posição da luz, alcance ou atenuação. A iluminação ambiente é constante em todas as direções e colore todos os pixels de um objeto da mesma forma. É rápido de calcular, mas deixa os objetos parecendo planos e irrealistas.

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

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

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

Onde:

Parâmetro Valor padrão Type Descrição
Cₐ (0,0,0,0) D3DCOLORVALUE Material cor ambiente
Gₐ (0,0,0,0) D3DCOLORVALUE Cor ambiente global
Atençãoi (0,0,0,0) D3DCOLORVALUE Atenuação da luz da i-ésima luz. Consulte Atenuação e fator de holofote.
Pontoi (0,0,0,0) D3DVECTOR Fator de holofote da i-ésima luz. Consulte Atenuação e fator de holofote.
Sum N/D N/D Soma da luz ambiente
Lai (0,0,0,0) D3DVECTOR Cor ambiente clara da i-ésima luz

 

O valor de Cₐ é:

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

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

 

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

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

Lai é a cor ambiente da i-ésima luz na cena. Cada luz Direct3D tem um conjunto de propriedades, uma das quais é a cor ambiente. O termo sum(Lai) é uma soma de todas as cores do 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 clara.

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

Ilustração de uma esfera cinzentailustração de uma esfera vermelha

A cena resultante é mostrada na ilustração a seguir. O único objeto na cena é uma esfera. A luz ambiente ilumina 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 ambiente

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

Matemática de iluminação