Lenguaje de Programación: C++ GLUTIluminación

Documentos relacionados
Lab Computación Gráfica Gpo 28/III/08

Iluminación y sombreado en OpenGL

Técnicas de Iluminación empleando shaders. Prof. Esmitt Ramírez J. Septiembre 2010

Lenguaje de Programación: C++ GLUT

Iluminación en GPU. Prof. Esmitt Ramírez Marzo 2011

Tema 4: Modelos de Iluminación y Sombreado 1

Lenguaje de Programación: C++ GLUT (como instalarlo)

Iluminación. Gráfica. Informática. David Vallejo Fernández Carlos González Morcillo

Lenguaje de Programación: C++ GLUTTransformaciones

Lenguaje de Programación: C++ Directivas al preprocesador

Lenguaje de Programación: C++ Métodos NuméricosERRORE ERRORES DE REDONDEO Y TRUNCAMIENTO

Iluminación Local. Prof. Fernández et al. (Universidad de la República de Uruguay) -

PATG. Rosa Mª Sánchez Banderas

El color es una longitud de onda de luz, visible para el ojo humano

Técnicas de Iluminación y Sombreado. Héctor Navarro

Lenguaje de Programación: C++

Lenguaje de Programación: C++ Arreglos

Creación de un material VRay básico

Introducción a OpenGL Shading Language (GLSL)

1. Fundamentos de óptica

Tema 1 Introducción. David Vallejo Fernández. Curso 2007/2008. Escuela Superior de Informática

Lenguaje de Programación: C++ Estructuras de control:switch

Tema 4: Viendo en 3D

VIDEOJUEGOS 2 Iluminación

TUTORIAL #4: Iluminación y texturas. Iluminación

El pipeline de visualización es el conjunto de

Mapping de texturas. Víctor Theoktisto

Iluminación Global métodos en VRay

Tema 3. Color, material e iluminación

glclearcolor (1.0, 0.0, 0.0, 0.0); glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT);

Tema 4. Color, material e iluminación

Iluminación Modelo de Cook-Torrance Y Modelo de Kadija

Sombreado (Shading) Iluminación Global. Capitulo 6 de Angel Capitulo 14 y 16 de Foley

Tema 2: Modelado. J.Ribelles. SIE020: Síntesis de Imagen y Animación Institute of New Imaging Technologies, Universitat Jaume I

PRÁCTICA 3 Color e Iluminación.

GUÍA 6. Creando. materiales. Diseño digital IV Autodesk Maya

Tema 1: Modelado poligonal

Tema 6: Aplicación de Texturas 2D

Visualización y Realismo: Problemas Capítulo 2

Seminario de Física. 2º bachillerato LOGSE. Unidad 6. Óptica

Introducción a 3D Transformaciones 3D

El Ray Tracing. Instituto Tecnológico de Costa Rica Escuela de Matemática Jorge Monge Fallas Resumen

Departamento de Física y Química

Reflexión y refracción en superficies planas y curvas

Manual de usuario. Paleta Led 18X8

Fundamentos de POV-Ray. Computación Geométrica 2010/2011 Jorge Calvo Zaragoza

PROBLEMAS COMPLEMENTARIOS

El proceso de iluminación

CUESTIONARIO DE ÓPTICA.

Tema 5: Modelos de Iluminación y Sombreado

ILUMINACIÓN. Tipos de luces Omni: Bombilla (6 focos unidos, una por cada cara de un cubo) Foco: circular o redondo.

Introducción. Rendering: OpenGl (OGL) and Adobe Ray Tracer (ART)

7 Efectos. avanzados. Múltiples pasos de dibujo Algoritmos de varias pasadas Texturas múltiples Ejemplos de texturas múltiples. Prof.

VECTORES : Las Cantidades Vectoriales cantidades escalares

Profr. Jonathan Torres Barrera 5 de Abril de 2017

Curso de 3ds Max 2013

La configuración en VRay

PRINCIPIOS FUNDAMENTALES

8.- Animaciones y transiciones.

CAMPO ELÉCTRICO. JUNIO

Óptica geométrica: conceptos generales

MiGo AJUSTES AVANZADOS DE CALEFACCIÓN

Animación. Interpolación

AutoCAD 2011 Completo + 3D

vsmart CONFIGURACIÓN INICIAL

Superficies visibles Modelos de iluminación y sombreado

Temas de la unidad: Objetivo:

TEMA 6.- Óptica CUESTIONES

SOMBRAS. Fundamentos y Técnicas en Computación Gráfica

AUTOCAD 2011 COMPLETO + 3D. ON LINE

Se deben guardar 3 TRES archivos para cada render de acuerdo a solid, gradient y background.

6. TIPOS DE FUENTES DE LUZ

Renderizado de escenarios 3D. Guillermo Vigueras González Departament d Informàtica E.T.S.E Universitat de València Febrero 2011

RESPUESTA DE EXAMEN ACONDICIONAMIENTO LUMINICO DICIEMBRE PAGINA 1 DE 6. Nombre: C.I.:

Planificaciones Sistemas Gráficos. Docente responsable: ABBATE HORACIO ANTONIO. 1 de 5

Tema: Formación Fotométrica de la Imagen

MODELADO DE OBJETOS 3D. Computación Gráfica

Colegio Madre Carmen Educar con Amor y Sabiduría para Formar Auténticos Ciudadanos OPTICA REFLEXIÓN DE LA LUZ

Lenguaje de Programación: C++, INPUT OUTPUT(Variables)

Fundamentos Programación Orientada a Objetos ( POO ) - Parte I Desarrollo de Software

Técnicas de texturizado e iluminación y la Tecnología de Escáner Láser Terrestre. PATRAC.

La eficiencia de los programas

Óptica geométrica (I). Reflexión y refracción en superficies planas. Dispersión de la luz.

CAMPO ELÉCTRICO Nm 2

Óptica Geométrica. Los medios materiales pueden ser: Transparentes Opacos Translúcidos

Problemas métricos. Ángulo entre rectas y planos

Visión artificial y Robótica Geometría. Depto. de Ciencia de la Computación e Inteligencia Artificial

OPTIMIZACIÓN VECTORIAL

Operaciones de Mecanizado Manuales WhitePaper Octubre de 2006

Conceptos básicos de Geometría

Más ejercicios y soluciones en fisicaymat.wordpress.com. 1- a) Explique en qué consiste la doble naturaleza corpuscular y ondulatoria de la luz.

INSTITUCION EDUCATIVA NACIONAL LOPERENA DEPARTAMENTO DE CIENCIAS NATURALES. FISICA I. CUESTIONARIO GENERAL IV PERIODO.

Transcripción:

UG GLUT Lenguaje de Programación: C++ GLUT Universidad de Guanajuato Noviembre 2010 Lenguaje de Programación: C++ GLUT

Mediante la iluminación es como se consigue un mayor efecto de realismo. El modelo de iluminación de OpenGL es bastante sencillo, los algoritmos son de la década de los 70-80, pero a diferencia de aquella época ahora se realizan en tiempo real a una velocidad de 60-100 frames por segundo, estos avances han sido gracias a la evolución del hardware. La calidad de las imágenes de OpenGL no es comparable a una peĺıcula de animación por ordenador donde el cálculo de un frame puede llevar horas al realizarse con algoritmos de trazado de rayos mucho más sofisticados. Lenguaje de Programación: C++ GLUT

Modos de Renderización Cuando renderizamos una primitiva disponemos de dos métodos de rellenado. Para cambiar entre uno u otro se hace con la función void glshademodel(glenum mode), como parámetro le pasamos uno de los siguientes modos: GL FLAT : Renderiza la primitiva con un solo color, elegido de uno de los vértices dependiendo de la primitiva. GL SMOOTH : Renderiza la primitiva interpolando el color de los vértices. Esto en cuanto a la manera de renderizar la primitiva, el color de cada uno de los vértices hasta ahora lo especificábamos con la función glcolor. En el modo de iluminación activado el color de cada uno de los vértices es calculado a partir del material del vértice y las luces. Lenguaje de Programación: C++ GLUT

Modelo de iluminación El modelo de iluminación como hemos mencionado anteriormente es bastante básico y pasamos a describirlo a continuación describiendo cada una de sus partes. El cálculo del color se realiza en cada vértice según las luces que haya encendidas y las propiedades del material de dicho vértice, no tiene en cuenta posibles oclusiones de terceros objetos que producirían sombras, reflejos de la luz que permitiría tener espejos o refracciones de la luz para ver a través de materiales como el agua. Lenguaje de Programación: C++ GLUT

Luces Para habilitar el modo de iluminación se realiza con la función glenable(gl LIGHTING), cuando renderizamos en este modo la instrucción glcolor no tienen ninguna influencia ya que el color resultante de cada vértice es calculado a partir de los materiales del vértice y las luces que haya encendidas. Disponemos de ocho luces que podemos encender o apagar con la función glenable(gl LIGHTi) donde i =[0... 7]. Cada luz la podemos configurar estableciendo los siguientes parámetros con la función gllight{if}v : Lenguaje de Programación: C++ GLUT

Luces Parámetro Valor por defecto Significado GL AMBIENT (0.0, 0.0, 0.0, 1.0) intensidad ambiente de la luz GL DIFFUSE (1.0, 1.0, 1.0, 1.0) GL LIGTH0 (0.0, 0.0, 0.0, 1.0) intensidad difusa de la luz GL LIGTH1-GL LIGHT7 GL SPECULAR (1.0, 1.0, 1.0, 1.0) GL LIGTH0 (0.0, 0.0, 0.0, 1.0) intensidad especular de la luz GL LIGTH1-GL LIGHT7 GL POSITION (0.0, 0.0, 0.0, 1.0) (x, y, z, w) posición de la luz GL SPOT DIRECTION (0.0, 0.0, -1.0) (x, y, z) dirección de la luz GL SPOT EXPONENT 0.0 exponente del foco GL SPOT CUTOFF 180.0 ángulo de abertura del foco GL CONSTANT ATTENUATION 1.0 factor de atenuación constante GL LINEAR ATTENUATION 0.0 factor de atenuación lineal GL QUADRATIC ATTENUATION 0.0 factor de atenuación cuadrático Lenguaje de Programación: C++ GLUT

Componentes de la luz La luz tiene tres componentes: ambiente, difusa y especular: Ambiente : Es la luz que se emite en todas direcciones y rebota en todas direcciones. Difusa : Luz emitida desde el punto de luz que rebota en todas las direcciones. Especular : Luz emitida en una dirección que rebota según la normal del poĺıgono, provoca el brillo puntual del objeto, p.e. el brillo blanco de la bola de billar negra. Lenguaje de Programación: C++ GLUT

Tipo de fuente de luz Además de las componentes de luz es necesario saber que tipo de fuente de luz se trata, en OpenGL disponemos de dos tipos: Direccional : Todos los rayos son paralelos e inciden en la dirección, el valor w de GL POSITION es cero, la dirección se especifica mediante (x, y, z) de GL POSITION. Un ejemplo de luz direccional es el sol. Posicional : La luz esta colocada en el punto (x, y, z) el valor w de GL POSITION es distinto de cero. Si se trata de una luz posicional, un foco, podemos alterar una serie de parámetros: GL SPOT DIRECTION : La dirección en que apunta. GL SPOT EXPONENT : Concentración de la luz en en centro del foco. GL SPOT CUTOFF : Apertura del foco en grados, el ángulo se multiplica por dos, 180 significa que la luz sale en todas direcciones Lenguaje de Programación: C++ GLUT

Más luces Además de las ocho luces tenemos una luz ambiente global que podemos modificar mediante la instrucción: gllightmodel{if}v(glenum param, TYPE* param) : Nos permite cambiar la luz ambiente global y otros parámetros de configuración del modelo de iluminación. Parámetro Valor por defecto Significado GL LIGHT MODEL AMBIENT (0.2, 0.2, 0.2, 1.0) intensidad ambiente de la luz global GL LIGHT MODEL LOCAL VIEWER 0.0 o FALSE como se calculan los ángulos para la reflexión de la luz especular GL LIGHT MOEL TWO SIDE 0.0 o FALSE permite elegir entre iluminación a una o dos caras GL LIGHT MODEL CONTROL COLOR GL SINGLE COLOR la componente especular se calcula separado de la ambiente y difusa Lenguaje de Programación: C++ GLUT

Materiales En el modelo de renderización sin iluminación definíamos el color de cada vértice, ahora tenemos que definir los materiales. Se definen cuatro componentes de material para cada vértice. Ambiente : Es la componente del material que refleja la luz independientemente de la dirección que venga. Difusa : Es la componente del material que refleja según la dirección de procedencia de la luz. Especular : Componente que refleja la luz especular, provoca el efecto brillo. Emisiva : Componente de color que se añade independientemente de la luz recibida. Lenguaje de Programación: C++ GLUT

Materiales Para establecer las componentes del material lo hacemos con la función glmaterial Parámetro Valor por defecto Significado GL AMBIENT (0.2, 0.2, 0.2, 1.0) componente ambiente GL DIFFUSE (0.8, 0.8, 0.8, 1.0) componente difusa GL SPECULAR (0.0, 0.0, 0.0, 1.0) componente espcular GL SHININESS 0.0 exponente de brillo GL EMISSION (0.0, 0.0, 0.0, 1.0) componente emisiva Tenemos la posibilidad de dotar de funcionalidad a la función glcolor habilitandola con la instrucción glenable(gl COLOR MATERIAL). Con la opcion color-material activado la función glcolor cambia el material que indicamos en la función glcolormaterial : glcolormaterial (GLenum face, GLenum mode) : Especifica que materiales (mode) cambia y de que caras (face) al usar la función glcolor. Face toma valores entre GL FRONT, GL BACK, GL FRONT AND BACK (por defecto), mode entre GL AMBIENT, GL DIFFUSE, GL SPECULAR, GL AMBIENT AND DIFFUSE (por defecto). Lenguaje de Programación: C++ GLUT

Normales Una de las características que se puede establecer de un vértice es el color (o el material si estamos en modo iluminacion), pero podemos establecer otras características como la coordenada de la textura o la normal que sirve para realizar los cálculos de la iluminación resultante. No importa el orden en que se definan las características pero siempre se hará antes de definir el vértice. glcolor3f(1.0, 0.3, 0.4); // Color del vértice glnormal3f(1.0, 0.0, 0.0); // Normal del vértice gltexcoord2f(0.0, 1.0); // Coordenada de la textura glvertex3f(1.0, 3.2, 3.6); // Vértice El vector normal se utiliza para calcular la incidencia de la luz sobre el vértice, si el vector normal no es unitario el vértice estará sobreiluminado (mayor que 1) o infrailuminado (menor que 1). Es muy importante que para cada vértice se defina la normal, ya que OpenGL no asigna la normal a partir de la orientación de la primitiva. De lo contrario utilizará como normal la ultima normal establecida. Lenguaje de Programación: C++ GLUT

Programming Principles and Practice Using C++, Bjarne Stroustrup. http://www.codeblocks.org http://www.wxwidgets.org (O Reilly) Practical C Programming (3rd Edition) http://www.cplusplus.com http://es.wikipedia.org/wiki/glut Lenguaje de Programación: C++ GLUT