Você está na página 1de 13

Tipos de iluminacin

Hay tres tipos de iluminacin que se pueden utilizar para aproximar la luz
del mundo real. Se llaman iluminacin difusa, iluminacin ambiental y la
iluminacin especular.

ILUMINACIN DIFUSA

es la luz que cae directamente a ms o


menos sobre una superficie. Si mantiene su mano en una habitacin con
una fuente de luz, vers que un lado de tu mano est encendida, mientras
que la otra parte no lo es. Ese lado de su mano se enciende con lo que se
llama difusa luz. Tanto la difusa y componentes especulares requieren luces
que se activan en la escena. El color difuso se emite uniformemente a
travs de la superficie de un objeto. La intensidad de la luz que contribuye
al color del material se determina por el ngulo de la superficie normal y el
vector de la luz.

Luz difusa

i:

es el punto en el espacio 3D que queremos sombra,

es la normal de la superficie en el punto que queremos sombra,

es la posicin de la luz en el espacio 3D,

es la contribucin difusa de la fuente de luz,


es el vector de direccin normalizada desde el punto queremos

sombra a la fuente de luz,


La siguiente imagen muestra la escena renderizada con solamente la iluminacin
difusa.

La iluminacin ambiental

se compone de luz que est en todas


partes. En trminos generales, es bastante oscuro (aunque no totalmente
oscuro). Cuando se mantiene la mano en esa habitacin con una fuente de
luz, el lado oscuro de su mano se ambiently iluminado, y la luz que se refleja
no es referido como ambiente de luz.

Luz Ambiental

Iluminacin especular es

a menudo referido como resaltado


especular o, incluso ms comnmente, la reflexin . (Wow, gran palabra,
eh?) Cuando la luz se refleja en un objeto, tenedores estaban la mayor
parte de la luz ir en una direccin especfica (en lugar de la dispersin en
todas partes por igual). El resultado es que cada objeto tiene un poco de
brillo en l que viene de la fuente de luz.

Especular Luz

La imagen siguiente muestra los aspectos ms destacados


especulares sobre la esfera en diversos poderes especulares.

del

VA UN VIDEO AKIDEJA UNA DIAPOSITIVA XQ LLEVO EL VIDEO EN UN


PENDRIVE Y AH LO PONGO EN LA U.

Tipos de fuentes de luz


Con el fin de producir los tres tipos de luz, hay varios tipos de luces (o
fuentes de luz) que emanan luz. Los diversos tipos de fuentes de luz, cada
uno que emanan los tipos y colores de luz especficos y luego combinados
con otras fuentes de luz, pueden producir una escena de iluminacin
realista. Bueno, tal vez no es como la luz de la primera imagen de arriba.

Luces.
Similares a los materiales, luces tambin definen un conjunto de

propiedades que determinan el resultado final de la escena. Una vez ms,


las luces pueden tener un nmero arbitrario de argumentos en funcin de
su modelo de iluminacin.
Direct3D ofrece cuatro tipos diferentes de luz, ambiente, direccional, punto
y punto. Las luces se aaden a la escena utilizando los Direct3D device
interfaces.
Las luces pueden ser de cualquier color que desee. Luces y materiales
trabajan juntos por lo que tambin se debe tomar en cuenta los materiales
asociados al momento de aplicar la luz. El material se puede configurar para
cada objeto 3D, se dibuja y determina cmo se encender un objeto. Por
ejemplo tienes una luz blanca y un material objeto es verde aparecer verde
tan brillante. Si la luz es de color rojo que va a dar como resultado una
iluminacin mezcla de rojo en verde.

Luz Ambiental (Ambient Light)


La luz ambiental representa la luz de fondo en una escena. A la luz del
mundo real rebota en muchos objetos y crea un nivel bajo la luz por lo que
incluso la geometra de espaldas a cualquier luz direccional es todava
parcial. La luz ambiental se aplica a todas las superficies,
independientemente de la direccin que se enfrentan. Para establecer el
nivel de luz ambiental en Direct3D utiliza uno la siguiente lnea de cdigo.
gD3dDevice->SetRenderState(
D3DCOLOR_XRGB(50,50,50) );

D3DRS_AMBIENT,

El ltimo valor es un D3DCOLOR es un valor para establecer el color de la


luz ambiental. Lo anterior establece un bajo fondo de luz blanca. Podemos
determinar el color utilizando un selector de colores que nos permita
generar los mismos mediante los valores RGB. Como podemos ver en la
siguiente grfica y aparte podremos visualizar el color que tendra la luz.

ESCENA ORIGINAL

La imagen de abajo muestra la misma escena renderizada con nica


contribucin ambiente.

La contribucin ambiente no debe ser demasiado brillante de lo contrario la


escena aparecer sobreexpuesta y descolorida.

Luces direccionales (Directional Lights)


Luz direccional se utiliza para simular fuentes de luz distantes como el sol.
Tiene una direccin pero no posicin. Por ejemplo, podra configurar para
que apunte hacia abajo (0, -1,0) que simula el sol estar directamente
encima. Luz direccional es relativamente liviana, aunque si se agrega un
montn de ellos usted puede encontrar que la velocidad de fotogramas se
cae un poco. El efecto de iluminacin en los objetos depende de la forma en
que se enfrentan con relacin a la direccin de la luz (definido en el vrtice
normal). As que un tringulo con la normalidad que apunta hacia arriba
(0,1,0) estara iluminada por el Sol (0, -1,0) totalmente - que recibira la
mxima cantidad de luz. A medida que el ngulo de la luz normal se
aumenta se aplica menos luz.

Para aadir una luz para nuestra escena usamos el mismo mtodo para
direccional, punto y luces puntuales. Llenamos en una estructura ligera y
llamamos el dispositivo SetLight funcin para establecer los parmetros de
luz. Dependiendo del tipo de luz llenamos en diferentes variables de
estructura por lo que siempre es una buena idea empezar por despejar la
estructura de valores por defecto (a 0) antes de llenar los valores necesarios
para un tipo de luz particular.

Debemos recordar a encender la luz llamando LightEnable. El nmero de


luces que podemos tener en nuestra escena depende del soporte de
hardware (8 es comn con el hardware de hoy).
Por ejemplo, para crear un sol como luz direccional con el sol muy bajo en el
cielo que podramos hacer esto:
void CreateSunLight ()
{
// Rellenar una estructura ligera que define nuestra luz
D3DLIGHT9 light;
ZeroMemory( &light, sizeof(D3DLIGHT9) );
light.Type

= D3DLIGHT_DIRECTIONAL;

light.Diffuse.r = 1.0f;
light.Diffuse.g = 1.0f;
light.Diffuse.b = 1.0f;
light.Diffuse.a = 1.0f
light.Range

= 1000.0f;

// Crear una direccin para nuestra luz - debe ser normalizada


D3DXVECTOR3 vecDir;
vecDir = D3DXVECTOR3(0.0f,-0.3f,0.5);
D3DXVec3Normalize( (D3DXVECTOR3*)&light.Direction, &vecDir );
//Indicar al dispositivo sobre la luz y vuelva a encenderlo
gD3dDevice->SetLight( 0, &light );
gD3dDevice->LightEnable( 0, TRUE );
Nota importante: uno de los problemas comunes que tiene la gente con
luces est olvidando que encenderlos! Para girar a la iluminacin de nivel
mundial debe establecer un estado render: por ejemplo.
gD3dDevice-> SetRenderState (D3DRS_LIGHTING, TRUE);

Luz Puntual (Point Lights)


Una luz punto representa una fuente puntual. Tiene una posicin en el
mundo y se irradia la luz en todas las direcciones. Una bombilla en un
soporte sera un ejemplo de esto. Se irradia luz en todas las direcciones y
tiene una posicin en el mundo. Este es un tipo ms caro de la luz en
trminos de velocidad de fotogramas de una luz direccional.

Un punto de luz tiene una atenuacin (cmo el nivel de luz disminuye con la
distancia) y un rango. El rango es la distancia mxima a la luz viajar.
Busque en la ayuda de DirectX para las ecuaciones completas utilizadas. Un
ejemplo de la colocacin de un punto de luz en nuestro mundo se muestra a
continuacin:

void CreatePointLight(const D3DVECTOR &pos)


{
// Rellenar una estructura ligera que define nuestra luz
D3DLIGHT9 light;
ZeroMemory( &light, sizeof(D3DLIGHT9) );
light.Type
= D3DLIGHT_POINT;
light.Diffuse.r = 1.0f;
light.Diffuse.g = 1.0f;
light.Diffuse.b = 1.0f;
// Luces Point no tienen sentido, pero s tienen una
posicin
light.Position = pos
//Indicar al dispositivo sobre la luz y vuelva a encenderlo
light.Attenuation0 = 0.1f;
light.Range=200.0f
gD3dDevice->SetLight( 1, &light );
gD3dDevice->LightEnable( 1, TRUE );

Foco (Spot Lights)


El tipo de luz final en Direct3D es la luz del punto. Esta es
la
luz ms complejo y es el tipo ms costoso en trminos de
velocidad de cuadros a fin de utilizar con moderacin. A
la luz de punto tiene una posicin en el espacio y una
direccin. Emite un cono de luz con dos grados de
intensidad. Cuenta con una seccin central
iluminada y una seccin con poca luz circundante que se funde con la
sombra que rodea. Slo se iluminan los objetos dentro del cono de luz.

Para establecer un punto de luz que necesita para proporcionar la posicin,


direccin, tamao de cono y una serie de parmetros que determinan la
propagacin del cono. Theta es el ngulo que define el cono interior
mientras Phi define el cono exterior. Falloff define la disminucin de la
iluminacin entre el exterior del cono interior y el exterior del cono exterior.
A continuacin se muestra el cdigo de ejemplo para la creacin de un
punto de luz:

void CreateSpotLight(const D3DVECTOR &pos,const D3DVECTOR


&dir)
{
// Rellenar una estructura ligera que define nuestra luz
D3DLIGHT9 light;
ZeroMemory( &light, sizeof(D3DLIGHT9) );
light.Type
= D3DLIGHT_SPOT;
light.Diffuse.r = 1.0f;
light.Diffuse.g = 1.0f;
light.Diffuse.b = 1.0f;
light.Diffues.a = 1.0f;

// Focos tienen direccin y una posicin


light.Position = pos
light.Direction = dir
//Indicar al dispositivo sobre la luz y vuelva a encenderlo
light.Range=1.0f;
light.Theta=0.5f;
light.Phi=1.0f
light.Falloff=1.0f;
light.Attenuation0= 1.0f;
gD3dDevice->SetLight( 1, &light );
gD3dDevice->LightEnable( 1, TRUE );
}
La imagen de abajo muestra la escena iluminada por un solo centro de
atencin con un ngulo de 45 centro de atencin.

Valores Edicin de Luz


Si desea cambiar las luces de forma dinmica no es necesario volver a
crearlos cada vez. En su lugar se puede modificar una luz existente. Usted
puede llamar al getLight funcin para obtener los valores, alterar el que
usted desea y luego llamar SetLight:

Por ejemplo, decir que quera establecer el color de un ndice luz existente 1
por lo que su componente rojo es 0,5:

D3DLIGHT9 light;
HRESULT hr=gD3dDevice->GetLight(1,&light);
light.Diffuse.r=0.5f;
gD3dDevice->SetLight(1,&light);

Iluminacin avanzada
A pesar de que se limitan a 8 luces por la tarjeta grfica
an puede definir tantas luces como quieras, pero slo
puedes tener 8 encendido a la vez. As, por ejemplo, se
podra definir 50 luces y los convierten en y fuera como un
jugador viaja a travs de un nivel.
Direct3D iluminacin direccional y ambiental se utiliza a
menudo en los juegos. Spot luces se utilizan con menos
frecuencia porque lo buenos que aparecen depende
totalmente de la densidad del vrtice escenas. Desde la
iluminacin cambia el color en un vrtice, si no son muy
grandes vrtice (en el suelo, por ejemplo), usted no
conseguir un cono puro, sino ms bien un efecto irregular.
Existen varios mtodos en los juegos para crear una
iluminacin de otras maneras de conseguir alrededor de
este problema, por ejemplo mapas de luz.
Es muy agradable para fijar una luz a un modelo 3D
(tambin puede adjuntar otras cosas que modelos como
sistemas de partculas). Una forma de hacer esto podra
implicar la adicin de una entidad luz a su componente de
visualizacin y un enlace en su modelo mundial entre
entidad del mundo y el grfico entidad luz.

DESCARGA ESTOS VIDEOS


https://youtu.be/ut56ptxSJ3E

Você também pode gostar