Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Uso de los componentes diffuse y specular de un vertice

Iniciado por fiero, 27 de Marzo de 2003, 08:48:48 PM

« anterior - próximo »

fiero

                                Tengo una duda de concepto.

Según tengo entendido, con el componente diffuse de un vertice podemos hacer que la textura se oscurezca, un valor diffuse=1.0 significa que la textura muestra su color real, con un valor de 0.5 la textura se ve un 50% oscurecida y con un valor de 0.0 la textura se ve totalmente negra.

Con el componente specular podemos hacer que la textura se aclare. Con un valor specular=0.0 la textura se ve con el color real, con un specular=0.5 se ve con un 50% más de brillo y con specular=1.0 se ve totalmente blanca.

Mi duda es, ¿en qué situaciones se necesitan las dos cosas a la vez?, o sea, que un vertice se oscurezca y aclare al mismo tiempo. En todas las situaciones que me he encontrado siempre se deja uno de los dos fijo y se modifica el otro. No me refiero a los materiales que se aplican al objeto, sino a las componentes fijas que tiene cada vertice.

La razón por la que me planteo esto es para eliminar una de las dos componentes de la definición de cada vertice y poner un bool que me diga qué componente estoy definiendo. Si el vertice tiene información specular, su diffuse será 1.0 y si tiene información diffuse, su specular será 0.0. Se eliminarian muchos bytes innecesarios al guardar los objetos.

¿Qué opinais?

un saludo                                
www.videopanoramas.com Videopanoramas 3D player

MChiz

                                Hola fiero:

Yo no he jugado mucho con la luz y todo eso, solo te propongo otra solucion. Es parecida a lo que tu dices:
Si nunca pueden estar los dos tipos de luz a la vez, porque no guardas todo en un float? Si es inferior a 1.0f es difusa, si es superior, es especular.
Bueno, no creo que te halla ayudado mucho, pero ya que nadie contesta...
Un saludo!                                

fiero

                                Si, exacto, esa tambien es una buena solución.

Después en el programa tendría las dos componentes, pero cuanto menos ocupe el fichero mejor.

un saludo                                
www.videopanoramas.com Videopanoramas 3D player

tamat

                                Pues porque la luz difusa y la especular tienes propiedades distintas a la hora de mostrarse, no hablamos de un parametro generico, hablamos de iluminacion, y como sabreis la iluminacion se ve afectada por por la inclinación de un plano (su normal en cada vertice).

La diferencia entre luz difusa y especular es la siguiente.

La luz difusa es aquella luz que se ve afectada por la dirección en que la luz incide sobre el poligono con respecto a su normal. Por ejemplo, supongamos que tenemos un cuarto oscuro con un unico foco de luz en el techo y ponemos un libro plano sobre una mesa en mitad de ese cuarto. La cara superior del libro quedara totalmente iluminada, sin embargo si vamos inclinando poco a poco esa tapa del libro veremos como poco a poco se va oscurenciendo, y una vez la tenemos perpendicular a la mesa deberia estar oscura (sin contar radiosidad).
Eso en infografia se hace mediante la normal en cada vertice de un poligono, para asi obtener esos efectos de sombreado en las caras en las que la luz no incide.

La luz especular ademas de tener en cuenta la inclinacion del plano tambien tiene en cuenta la posicion del espectador con respecto al poligono. Sirve para dar la sensacion de que una superficie es reflectante, como metalica. Para ello cuando iluminas el vertice miras si la camara se encuentra en la recta reflejada en el punto de contacto con el poligono del vector de la luz.

Algo semejante a esta imagen:


Si la luz parte del principio del vector amarillo y el ojo está en alguna posicion del vector azul pues se ilumina con luz especular, sino no.

Creo que deberiais mirarte mejor el tema de la iluminacion, vectores, materiales y propiedades para así poder comprender mejor como modelan los sistemas de render el efecto de la iluminación.

Espero que esa fuera tu duda.                                
Por un stratos menos tenso

fiero

                                ok, gracias por la explicación tamat. La verdad es que yo calculaba la intensidad specular sin tener en cuenta el vector de la cámara. Así conseguía una iluminación idéntica a la diffuse pero iluminando en vez de oscureciendo. He leido más sobre el tema y ya me ha quedado claro. Como las dos componentes no funcionan de la misma forma, una no excluye a la otra, así que dejaré las dos en mi grabación de vertices.

muchas gracias, un saludo                                
www.videopanoramas.com Videopanoramas 3D player






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.