Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
1 Escenas 3D Lab. de Visualización y Computación Gráfica Dpto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur La generación de un mundo 3D requiere 3 componentes esenciales: • El mundo 3D de los objetos • La o las fuentes de luz • La cámara o el ojo que observa la escena Al mundo virtual que generemos lo denominaremos escena y a los objetos en la misma, actores. Una cámara especifica nuestra posición de vista y ciertos parámetros de vista (longitud focal, tamaño de la imagen, etc.). Usaremos transformaciones afines 3D para posicionar y mover actores y cámaras en la escena. Introducción S. Castro, D. Urribarri CG 2015 Una escena Introducción S. Castro, D. Urribarri CG 2015 Mundo Ojo Clipping Pantalla 3D Pipeline 3D S. Castro, D. Urribarri CG 2015 Pipeline 3D S. Castro, D. Urribarri CG 2015 Espacios Objeto Mundo Ojo Clipping Modelado Ubicación Clipping en el Mundo Escalar Rotar Escalar Trasladar Trasladar Trasladar Rotar Perspectiva Especificación de la cámara Escalar Rotar La Cámara S. Castro, D. Urribarri CG 2015 2 En general, todos los programas de rendering 3D proveen una cámara por defecto o estándar. Esta cámara tiene un sistema óptico: filtros, lentes y apertura. La superficie de proyección puede ser plana o curva y estar orientada a distintos ángulos con respecto a la luz incidente, la cámara o el ojo. La Cámara S. Castro, D. Urribarri CG 2015 La Cámara La cámara oscura • Modelo abstracto de la cámara • Modelado de la geometría de la proyección perspectiva • Usado en la mayoría de las aplicaciones de CG S. Castro, D. Urribarri CG 2015 Definición de la Cámara S. Castro, D. Urribarri CG 2015 Un modelo de cámara sintética debe tener información de: – Posición – Orientación – Campo de visión (ángulo de ancho, normal…) – Profundidad de Campo (Plano cercano y lejano) – Distancia Focal – Desviación de los planos vista/película (si no es normal a la dirección de vista produce proyecciones oblicuas) – Proyección perspectiva o paralela (cámara cerca de los objetos o a distancia infinita) Veremos en detalle cada uno de éstos. Definición de la Cámara S. Castro, D. Urribarri CG 2015 Para definir un modelo de cámara sintética debemos especificar: Posición de la cámara (desde dónde se está mirando) El vector look at (mirando hacia) especifica en qué dirección apunta la cámara La orientación de la cámara está determinada por el vector look at y el ángulo en el que está rotada la cámara con respecto a ese vector, es decir, la dirección del vector up. Van Dam Definición de la Cámara S. Castro, D. Urribarri CG 2015 La posición es un punto en el espacio tridimensional (deben especificarse x, y y z). Este sistema de coordenadas debe ser de mano izquierda o mano derecha en concordancia con todo el sistema gráfico. Posición Determinar la posición es análogo a decidir el punto desde el cual tomar la foto. Van Dam Definición de la Cámara S. Castro, D. Urribarri CG 2015 3 La orientación por defecto es la de las z (positivas o negativas según el sistema de coordenadas sea de mano izquierda o de mano derecha) y la orientación up apunta en la dirección positiva de las y (hacia arriba). La cámara de la figura está localizazda en el origen y está dirigida hacia un punto arbitrario con una dirección up también arbitraria. Orientación La orientación se especifica mediante un punto 3D, que es el punto al que se está mirando y un ángulo de rotación alrededor de esa dirección (punto al que se mira – punto de posición). Van Dam Definición de la Cámara S. Castro, D. Urribarri CG 2015 Determina la distorsión en perspectiva; desde 0 en una proyección paralela a mucha en los lentes gran angular. Angulo de visión En un frustum, se tienen en cuenta dos ángulos de vista: en lo ancho y en lo alto. Si se especifica el ángulo de Elevación el otro ángulo se determina de (Aspect ratio * Ángulo de Elevación) Elegir estos ángulos es análogo a lo que hace el fotógrafo eligiendo un tipo específico de lente (por ej. Un gran angular o un telezoom). Veremos esto en más detalle cuando veamos tipos de lentes. Van Dam Definición de la Cámara S. Castro, D. Urribarri CG 2015 La distancia (o longitud) focal es la distancia desde el punto de vista al plano focal; también se denomina profundidad de campo, ya que se determina a qué distancia están los objetos que deben verse en foco. Distancia focal Definición de la Cámara S. Castro, D. Urribarri CG 2015 El volumen comprendido entre los planos cercano y lejano define lo que ve la cámara. Planos de Clipping Cercano y Lejano La posición de dichos planos se define normalmente a lo largo del vector de look at. Los objetos que aparecen fuera del volumen del vista no serán dibujados. Los objetos que intersectan el volumen del vista serán recortados o clipeados. Van Dam Definición de la Cámara S. Castro, D. Urribarri CG 2015 ¿Por qué tener un plano de clipping cercano? Los objetos que estén demasiado cerca de la cámara no quieren dibujarse porque bloquearían al resto y seguramente estarían muy distorsionados. Tampoco se quieren dibujar los objetos que están detrás de la cámara ya que uno no espera verlos. Si uno decidieradibujar lo que está detrás de la cámara seguramente aparecerían distorsionados por la perspectiva. ¿Por qué tener un plano de clipping lejano? Los objetos muy alejados de la cámara podrían no querer dibujarse porque aparecerían muy pequeños para ser visualmente significativos; por otro lado tomaría demasiado tiempo renderizarlos. Descartando estos objetos perdemos poco detalle pero ganamos mucho en lo que respecta a tiempo de renderizado. Por otro lado, puede ser que la escena esté llena de objetos significativos y querramos despejar la escena de modo tal que se rendericen los cercanos y se descarte el resto. Definición de la Cámara S. Castro, D. Urribarri CG 2015 La limitación del volumen de vista es útil para eliminar objetos extraños. Los ángulo de elevación y de ancho son cero. Proyección Paralela: Volumen de Vista Van Dam Definición de la Cámara S. Castro, D. Urribarri CG 2015 4 La limitación del volumen de vista es útil para eliminar objetos tanto cercanos como lejanos. Proyección Perspectiva: Volumen de Vista Van Dam Definición de la Cámara S. Castro, D. Urribarri CG 2015 Tipos de Lentes S. Castro, D. Urribarri CG 2015 Los lentes de la cámara, reales o simulados, son una componente muy importante en cualquier sistema de cámara porque definen la forma en que el mundo 3D se proyecta en la lente o plano de la imagen. El plano de proyección de las cámaras simuladas en la computadora pueden posicionarse en cualquier lugar de la escena 3D. Los fotógrafos se refieren a los lentes de una cámara en término de su longitud focal; esta característica controla la forma en la que los objetos 3D son vistos por la cámara. La mayoría de los lentes tiene longitud focal fija, excepto los zooms que contienen múltiples lentes y por lo tanto son capaces de un rango de longitud focal variable. La nomenclatura estándar para la longitud focal de los lentes se expresa en mm. Hay una gran variedad de lentes. Los lentes característicos estándar son los lentes normales de 50 ó 55 mm, el gran angular de 28 mm y el telefoto de 135 mm. A continuación veremos distintas fotos tomadas con distintos lentes. Tipos de Lentes S. Castro, D. Urribarri CG 2015 Tipos de Lentes S. Castro, D. Urribarri CG 2015 Tipos de Lentes S. Castro, D. Urribarri CG 2015 Imágenes vistas por una cámara ubicada dentro de una esfera, con seis lentes diferentes. Tipos de Lentes S. Castro, D. Urribarri CG 2015 5 La Cámara en OpenGL S. Castro, D. Urribarri CG 2015 Para especificar la cámara debemos utilizar las primitivas de la librería matemática que usemos. Debemos especificar • Viewing: Ubicación de la cámara • Proyección: Descripción del frustum de visión de la cámara (y, en consecuencia, de la transformación de proyección) • División perspectiva: Cálculo de los puntos 3D a partir de las coordenadas homogéneas La Cámara en OpenGL S. Castro, D. Urribarri CG 2015 Para ubicar la cámara debemos posicionarla en el espacio del mundo como si fuera una cámara real. Para ello debemos: • Identificar el lugar donde la cámara está ubicada, es decir el punto donde está el ojo (eye point). • Identificar el punto que deseamos que aparezca en el centro de nuestra vista, es decir, el punto hacia el cual miramos (look-at- point). • Identificar lo que esté orientado hacia arriba en nuestra imagen final (up-vector). La Cámara en OpenGL S. Castro, D. Urribarri CG 2015 La librería glm provee una función que implementa la especificación de viewing: La Cámara en OpenGL Estos parámetros están en coordenadas del mundo. glm::mat4 glm::lookAt(glm::vec3 const & eye,glm::vec3 const & center, glm::vec3 const & up); glm::dmat4 glm::lookAt(glm::dvec3 const & eye, glm::dvec3 const & center, glm::dvec3 const & up); S. Castro, D. Urribarri CG 2015 En la Proyección el usuario debe especificar la ventana 3D de visión. En la proyección paralela (u ortográfica) el usuario especifica el frustum de visión ortográfico, es decir, La Cámara en OpenGL Utilizando la librería glm esto puede hacerse mediante: glm::dmat4 glm::ortho(double left, double right,double bottom,double top, double zNear, double zFar); glm::dmat4 glm::ortho(float left, float right, float bottom, float top, float zNear, float zFar); S. Castro, D. Urribarri CG 2015 La Cámara en OpenGL Función provista por la librería glm para especificar este frustum de visión es: En la proyección perspectiva el frustum de visión que se especifica es: Otra función para este fin es: donde fov es el ángulo de visión vertical y aspect es la relación ancho/alto de la imagen en el plano near. glm::dmat4 glm::frustum(double left, double right,double bottom,double top, double zNear, double zFar); glm::dmat4 glm::frustum(float left, float right, float bottom, float top, float zNear, float zFar); glm::mat4 perspective(double fov,double aspect, double zNear, double zFar); glm::mat4 perspective(float fov, float aspect float sNear, float zFar); S. Castro, D. Urribarri CG 2015 6 Proyecciones S. Castro, D. Urribarri CG 2015 La creación del espacio tridimensional pretendía generarse mediante formas volumétricas redondeadas por el sombreado; la profundidad espacial era sugerida mediante líneas convergentes. Esto no era hecho sistemáticamente y las líneas no convergían a un solo punto de fuga. Giotto, Franciscan Rule Approved, Asís, Basílica, c.1295-1300 Antecedentes S. Castro, D. Urribarri CG 2015 Alberti publicó el primer tratado de perspectiva, Della Pittura, en 1435. “Unapintura [el plano de proyección] es la intersección de una pirámide visual [volumen de vista] a una determinada distancia, con un centro fijo [centro de proyección] y una posición definida de la luz, representada artísticamente con líneas y colores en una dada superficie [el rendering].” (Leono Battista Alberti (1404-1472), Della Pintura, pp. 32-33) Van Dam Antecedentes S. Castro, D. Urribarri CG 2015 La primera pintura (La Trinidad con la Virgen, San Juan y los Donantes) hecha en perspectiva. Masaccio, 1427. Antecedentes S. Castro, D. Urribarri CG 2015 La perspectiva se formaliza. Da Vinci, alrededor de 1498. Antecedentes S. Castro, D. Urribarri CG 2015 Albrecht Dürer (1471-1528) describe en su tratado el concepto de triángulos similares tanto geométrica como mecánicamente. Albrecht Dürer, Artista dibujando un Laúd, 1525 Antecedentes S. Castro, D. Urribarri CG 2015 7 Se puede entonces calcular la imagen proyectada tomando como base: La altura del objeto (AB) La distancia del objeto al ojo (CB) La distancia del ojo al plano de la imagen (CD) La relación de triángulos: CB es a CD como AB es a ED Van Dam Antecedentes S. Castro, D. Urribarri CG 2015 Una proyección transforma puntos de un sistema de coordenadas de dimensión n a uno de dimensión menor que n. Proyecciones S. Castro, D. Urribarri CG 2015 Una proyección transforma puntos de un sistema de coordenadas de dimensión n a uno de dimensión menor que n. La proyección de un objeto 3D está definida por los proyectores que emanan de un centro de proyección pasando a través de cada punto del objeto e intersectando un plano de proyección, en el que se forma la proyección del objeto. Proyecciones planas S. Castro, D. Urribarri CG 2015 Las principales proyecciones geométricas planas son: En general, una proyección está determinada por: - Dónde está el plano de proyección relativo a los ejes principales del objeto - El ángulo de los proyectores con el plano de proyección Perspectiva: determinada por el Centro de Proyección (CDP) Paralela: determinada por la Dirección de Proyección (DDP); los proyectores son paralelos El CDP está en el Proyecciones planas S. Castro, D. Urribarri CG 2015 Hay distintos tipos de proyecciones geométricas planas: Las proyecciones paralelas se usan en general para ingeniería y arquitectura porque conservan las medidas. Las proyecciones perspectiva imitan nuestros ojos o una cámara y son más naturales. Proyecciones planas S. Castro, D. Urribarri CG 2015 Una cámara virtual usualmente ofrece no sólo la proyección perspectiva, sino también la proyección paralela. En esta proyección, todas las líneas y planos paralelos de los objetos siguen siendo paralelos en la proyección; el tamaño de los objetos permanece constante a medida que los objetos se alejan del plano de la imagen. Proyección paralela S. Castro, D. Urribarri CG 2015 8 Hay distintos tipos de proyecciones paralelas geométricas planas: Paralela Líneas de proyección paralelas entre sí Oblicua Líneas de proyección no son perpendiculares al plano de proyección Ortográfica Líneas de proyección son perpendiculares al plano de proyección Planos de elevación Plano de proyección perpendicular a uno de los ejes Axonométrica Plano de proyección orientado arbitrariamente Proyecciones planas S. Castro, D. Urribarri CG 2015 Proyección ortográfica multivista Proyecciones planas S. Castro, D. Urribarri CG 2015 Proyección axonométrica El plano de proyección es perpendicular a la dirección de proyección pero no es paralelo a los planos coordenados Proyecciones planas S. Castro, D. Urribarri CG 2015 Proyección oblicua El plano de proyección es paralelo a los planos coordenados pero la dirección de proyección no es perpendicular a éste. Los proyectores forman un ángulo oblicuo con el plano de proyección Van Dam Carlbom Proyecciones planas S. Castro, D. Urribarri CG 2015 Una cámara real siempre crea una proyección perspectiva. En una proyección perspectiva, de acuerdo a como ésta es creada por la cámara, se representa un solo punto de vista, los objetos se achican a medida que están más lejos y las líneas paralelas que no son paralelas al plano de la imagen convergen a los puntos de fuga. Proyecciones planas S. Castro, D. Urribarri CG 2015 Proyección perspectiva Perspectiva de un punto Perspectiva de dos puntos Perspectiva de tres puntos Proyecciones planas S. Castro, D. Urribarri CG 2015 http://en.wikipedia.org/wiki/Image:First_angle_projecting.png http://en.wikipedia.org/wiki/Image:First_angle_unfolding.png http://en.wikipedia.org/wiki/Image:First_angle_unfolded.png http://en.wikipedia.org/wiki/Image:Perspectiva-2.jpg 9 Perspectiva de un punto Perspectiva de dos puntos Perspectiva de tres puntos Proyecciones planas Perspectiva de tres puntos Proyección perspectiva S. Castro, D. Urribarri CG 2015 Proyecciones Perspectiva de Objetos 3D S. Castro, D. Urribarri CG 2015 Pipeline 3D S. Castro, D. Urribarri CG 2015 Espacios Objeto MundoOjo Clipping Modelado Ubicación Especificación Clipping en el Mundo de la cámara Rotar Rotar Escalar Trasladar Trasladar Trasladar Perspectiva Escalar Rotar Derivación de la perspectiva En la proyección perspectiva, un punto 3D en el frustum de visión (coordenadas del ojo) se mapea a un cubo (coordenadas normalizadas del dispositivo); la coordenada x se mapea de [l, r] a [-1, 1], la coordenada y de [b, t] a [-1, 1] y la z de [n, f] a [-1, 1]. Veremos que esto lo vamos a hacer en dos etapas. S. Castro, D. Urribarri CG 2015 Transformación de un punto Por triángulos similares podemos calcular cómo escalar las coordenadas x e y. e e p e ep e e p e ep z y ny z y n y z x nx z x n x S. Castro, D. Urribarri CG 2015 P=(x,y,z) se proyecta entonces al punto pp dado por: Transformación de un punto e e e e ppp z y n z x nyxp ,, OpenGL usa el sistema de coordenadas de mano derecha para el mundo. e e p e ep e e p e ep z y ny z y n y z x nx z x n x S. Castro, D. Urribarri CG 2015 http://en.wikipedia.org/wiki/Image:Perspectiva-2.jpg 10 Esta es claramente una transformación no lineal. Podemos dividirla en dos partes: una lineal seguida de una no lineal. Transformaciones )1,,,( ),,,( ),,,( )1,,,( )1,,,( )1,,,( ? nnnlinealNo eeelineal nnneee zyxwzyxT wzyxzyxT zyxzyxT Transformación de un punto e e e e p e ep e e e e p e ep z y n z y ny z y n y z x n z x nx z x n x S. Castro, D. Urribarri CG 2015 Transformaciones Transf. No Lineal Transf. Lineal 1 w w w w z z w y y w x x nnnn Transformación de un punto e e e e oy w z y x M w z y x *Pr )1,,,( ),,,( ),,,( )1,,,( )1,,,( )1,,,( ? nnnlinealNo eeelineal nnneee zyxwzyxT wzyxzyxT zyxzyxT e e p e e p z y ny z x nx S. Castro, D. Urribarri CG 2015 Veamos entonces como definimos la transformación lineal, es decir la MProy e e e e oy w z y x M w z y x *Pr . ............ ............ ............ ............ ProyM Podemos establecer que la componente w en este espacio intermedio es –ze. Entonces, la cuarta fila de la matriz es (0,0,-1,0). e e e e w z y x w z y x *. 0100 ............ ............ ............ e e p e e p z y ny z x nx Proyección perspectiva e p e p ee z y y z x x nyynxx S. Castro, D. Urribarri CG 2015 Buscamos ahora una expresión que nos permita encontrar la transformación lineal para x y para y. Sabemos que debemos tener en cuenta las relaciones lineales [l,r][-1,1] y [b,t][-1,1]. 2 1 * 11 lr r x lr x pn lr lr lr x x lr lr r-l r - p n 2 2 1 Proyección perspectiva S. Castro, D. Urribarri CG 2015 Mapeamos ahora yp con [b,t][-1,1]. 2 1 * 11 bt r y bt y pn bt bt bt y y bt bt bt t - p n 2 2 1 Dado que conocemos el mapeo y que sabemos que para pasar del espacio intermedio a las coordenadas normalizadas del dispositivo debemos dividir por w=-ze veamos ahora cómo obtenemos x e y. Proyección perspectiva S. Castro, D. Urribarri CG 2015 Sabemos que: bt bt bt y y p n 2 y reemplazando: lr lr lr x x p n 2 e e p z x nx e e p z y ny eeee e e e e e e e e e e p n zxzz lr lr x lr n z z lr lr z x lr n lr lr z lr nx lr lr zlr nx lr lr lr z nx lr lr lr x x 2 )( 2 2 2 2 2 en zw w x x Proyección perspectiva S. Castro, D. Urribarri CG 2015 11 Para y efectuamos cáculos análogos y obtenemos: Entonces completamos la primera y la segunda fila de la matriz e e e e w z y x bt bt bt n lr lr lr n w z y x *. 0100 ............ 0 2 0 00 2 eeee z bt bt y bt n yz lr lr x lr n x 2 2 Proyección perspectiva S. Castro, D. Urribarri CG 2015 Es claro que la proyección que realizamos descarta la información de profundidad. ¿Necesitamos dicha información? ¿Qué debemos hacer si queremos mantenerla? x y -z n P P1 P2 P(x’,y’) Proyección perspectiva S. Castro, D. Urribarri CG 2015 Mostramos que una proyección descarta la información de profundidad, pero vemos que no debemos descartarla completamente ya que será imposible saber cuáles objetos están adelante y cuáles atrás. x y -z -n P P1 P2 P(x’,y’) Proyección perspectiva Cuando dos puntos proyecten al mismo punto sobre el plano cercano, necesitamos saber cuál está más cerca. Debemos contar con un test que nos permita saber si P1 oscurece a P2 o viceversa. Para cada punto P que proyectamos debemos conocer su profundidad. S. Castro, D. Urribarri CG 2015 Para encontrar zn debemos trabajar de manera diferente porque ze en el espacio del ojo se proyecta siempre a -n en el plano near. Además de poder realizar el test de profundidad, debemos poder realizar la transformada inversa de la proyección. Sabemos que z no depende del valor de x o de y. e e e e w z y x BA bt bt bt n lr lr lr n w z y x *. 0100 00 0 2 0 00 2 e e e ee e nen z BAz z BwAz z z zzw w z z , Proyección perspectiva S. Castro, D. Urribarri CG 2015 Para encontrar los coeficientes A y B usamos la relación que existe entre (ze, zn), es decir (-n -1) y (-f 1): e e n z BAz z y tenemos entonces 2 ecuaciones con dos incógnitas: fAfB nAnB f BAf n BAn 1 1 nf nf AnAnfAf nf fn nAnBA 2 en doreemplazany podemos obtener así z en función de ze Proyección perspectiva S. Castro, D. Urribarri CG 2015 Reemplazamos en: e e e e e e e e w z y x nf fn nf nf bt bt bt n lr lr lr n w z y x BA bt bt bt n lr lr lr n w z y x *. 0100 2 00 0 2 0 00 2 *. 0100 00 0 2 0 00 2 ee e e e n z z z nf fn z nf nf z BAz z 2 completamos la matriz de transformación: Proyección perspectiva S. Castro, D. Urribarri CG 2015 12 Si además el volumen de vista tanto en x como en y lo ponemos entre -1 y 1 tenemos Para pasar entonces a coordenadas normalizadas del dispositivo (en algunos casos denominadas coordenadas 3D de la pantalla) dividimos por w=-ze y entonces tenemos: 1 1 e e e n n n z z z y z x w w w z w y w x z y x Proyección perspectiva e e e e e e e e w z y x nf fn nf nf n n w z y x nf fn nf nf bt bt bt n lr lr lr n w z y x *. 0100 2 00 000 000 *. 0100 2 00 0 2 0 00 2 S. Castro, D. Urribarri CG 2015 La matriz MProy es la que se setea, por ejemplo en glm, mediante la primitiva glm::mat4 glm::frustum (l, r,b,t,n,f). En lugar de ésta puede usarse perspective(). Proyección perspectiva . 0100 2 00 0 2 0 00 2 Pr nf fn nf nf bt bt bt n lr lr lr n M oy Esta primitiva setea la misma matriz luego de calcular los valores de r, l, t y b mediante: glm::mat4 perspective (ángulo, aspecto, n, f) -rlaspectoarrr tbangulont 2/ 180 tan Observar S. Castro, D. Urribarri CG 2015 Proyección perspectiva e e n z nf fn z nf nf z 2 S. Castro, D. Urribarri CG 2015 Veamos la relación que hay entre ze y zn. Esta relación es una ecuación racional y se ve la relación no lineal entre ze y zn. Esto significa que hay muy alta precisión en el plano n pero poca en el plano f. Si el rango [-n, -f] se agranda, se origina un problema de precisión en profundidad: un pequeño cambio de ze cerca del plano f no afecta el valor de zn. La distancia entre n y f debe ser la menor posible para minimizar la precisión en profundidad. Proyección perspectiva A partir de este punto estamos en el espacio de clipping. Luego de realizar el clipping debemos ver cuáles son los objetos que se ven y mapearlos al viewport. Tendremos entonces nuestra vista en 2D. S. Castro, D. Urribarri CG 2015 Pipeline 3D S. Castro, D. Urribarri CG 2015 Espacios Objeto Mundo 3D Ojo Clipping CND Pantalla Modelado Ubicación Especificación en el Mundo de la cámara Rotar Rotar Escalar División w Transformación Trasladar Trasladar Trasladar Viewport Perspectiva Clipping CND Pantalla 3D Escalar Rotar Clipping S. Castro, D. Urribarri CG 2015 13 Pipeline 3D S. Castro, D. Urribarri CG 2015 Espacios Objeto Mundo Ojo Clipping Modelado Ubicación Especificación en el Mundo de la cámara Rotar Rotar Escalar Trasladar Trasladar Trasladar Perspectiva Clipping Escalar Rotar Pipeline 3D S. Castro, D. Urribarri CG 2015 Espacios Objeto Mundo 3D Ojo Clipping CND 3D Pantalla Modelado Ubicación Especificación en el Mundo de la cámara Rotar Rotar Escalar División w Proyección Trasladar Trasladar Trasladar a pantalla 2D Perspectiva Clipping CND Pantalla Escalar Rotar Vimos que: Clipping es el proceso de determinar qué primitivas y partes de primitivas caen dentro del volumen de clipping definido por el programa de aplicación. Clipping S. Castro, D. UrribarriCG 2015 Generalmente, cualquier proce- dimiento que identifica aquellas porciones de una escena que están dentro o fuera de una región especificada se denomina algoritmo de clipping. La región contra la cual se clipea un objeto se denomina ventana de clipping. En lugar de clipear contra las rectas que constituyen los bordes de la ventana, clipearemos los objetos contra los planos limitantes del volumen de vista. Clipping en 3D S. Castro, D. Urribarri CG 2015 El clipping tridimensional identifica y guarda todo lo que se encuentra dentro del volumen de vista para mostrarlo posteriormente. Se descartan todos los objetos y/o partes de los mismos que estén fuera de dicho volumen. El clipping en 3D puede llevarse a cabo usando extensiones del clipping en 2D. Para clipear una línea contra el volumen de vista, debemos chequear la posición relativa de la misma con respecto a los planos que constituyen el volumen de vista. Si suponemos que un plano limitante del volumen de vista está dado por: Ax + By + Cz + D = 0 Un punto extremo (x1,y1,z1) de un segmento de línea estará fuera del volumen de vista si: Clipping en 3D Ax1 + By1 + Cz1 +D > 0 Y estará dentro del mismo si: Ax1 + By1 + Cz1 + D < 0 El punto (x1,y1,z1) de intersección será aquél que verifique que: Ax1 + By1 + Cz1 + D = 0 S. Castro, D. Urribarri CG 2015 Para clipear una superficie poligonal podemos: Clipear los lados del polígono para detectar los casos en que el mismo esté completamente afuera o completamente adentro del volumen de vista. Si está completamente adentro, guardamos el polígono para dibujarlo; si está completamente afuera, lo descartamos. Si el polígono está parcialmente adentro, debemos calcular las intersecciones con los planos limitantes. Clipping en 3D S. Castro, D. Urribarri CG 2015 14 Veamos cuándo y cómo realizamos el clipping: ¿Antes de la transformada en perspectiva? En este caso debemos clipear contra el frustum de vista. Luego debemos realizar la transformación en perspectiva, luego la proyección y luego dibujar en la ventana Clipping en 3D S. Castro, D. Urribarri CG 2015 ¿Después de la transformada en perspectiva? En coordenadas homogéneas debemos clipear contra los planos -w x w -w y w -w z w En coordenadas 3D de la pantalla debemos clipear contra los planos -1 x 1 -1 y 1 -1 z 1 ¿Es indistinto clipear en cualesquiera de estos dos espacios? ¿Por qué? En este caso tenemos dos opciones; podemos hacerlo en coordenadas 3D de la pantalla o en coordenadas homogéneas. Clipping en 3D S. Castro, D. Urribarri CG 2015 Entonces debemos clipear teniendo en cuenta que: - El clipping se realiza en coordenadas homogéneas, es decir, antes de dividir por w y después de realizar la transformación de proyección perspectiva. - El volumen de vista contra el que se efectúa el clipping está dado por: -w x w -w y w -w z w Clipping en 3D S. Castro, D. Urribarri CG 2015 Algoritmo de Clipping de Cohen-Sutherland ( 3D) S. Castro, D. Urribarri CG 2015 En este caso se dividirá el espacio en 27 regiones y usaremos un código de 6 bits para chequear si los puntos están dentro o fuera del volumen de vista. Esto se hará para cada uno de los puntos extremos de los segmentos de recta. Es decir que debe determinarse la ubicación de los puntos con respecto al volumen de vista: -w x w -w y w -w z w Algoritmo de Cohen-Sutherland S. Castro, D. Urribarri CG 2015 El volumen de vista contra el que se efectúa el clipping está dado por: -w x w -w y w -w z w Clipping en 3D Y veremos que siempre podemos clipear en la región en que w>0. S. Castro, D. Urribarri CG 2015 15 Los valores guardados se usarán para determinar el punto de intersección con el plano correspondiente. Se generarán conjuntos que nos dicen cómo está ubicado un punto con respecto al volumen de vista. Bit nº Ubicación Se guarda 1 w + x 0 2 w - x 0 3 w + y 0 4 w - y 0 5 Detrás del plano de adelante w+z 0 6 Delante del plano de atrás w - z 0 Algoritmo de Cohen-Sutherland S. Castro, D. Urribarri CG 2015 Se debe calcular la intersección de la línea a clipear con el plano que corta. Se calcula el valor de t de la intersección. Sólo cuando se ha visto que la línea debe clipearse se hallan las coordenadas del o de los puntos de intersección. La intersección de una recta dada en forma paramétrica )()( 2211 11 xwxw xw t )()( )()( 212111 121121 xxtwwtxw xxtxwwtw )( 121 pptpp con el plano w= -x (w+x=0) es: Algoritmo de Cohen-Sutherland Se guardó w + x w - x w + y w - y w+z w - z S. Castro, D. Urribarri CG 2015 iiiii wzyxp ,,, Veamos el algoritmo. Calculamos Código punto 1 Código punto 2 Cp1,1 w1 + x1 Cp2,1 w2 + x2 Cp1,2 w1 – x1 Cp2,2 w2 – x2 Cp1,3 w1 + y1 Cp2,3 w2 + y2 Cp1,4 w1 – y1 Cp2,4 w2 – y2 Cp1,5 w1+z1 Cp2,5 w2 + z2 Cp1,6 w1 – z1 Cp2,6 w2 – z2 Se calcula: c1 (1 a 6) nº de bits para los cuales Cp1,nº bit< 0 c2 (1 a 6) nº de bits para los cuales Cp2,nº bit < 0 )()( 2211 11 xwxw xw t S. Castro, D. Urribarri CG 2015 Algoritmo de Cohen-Sutherland Algoritmo de Cohen-Sutherland Para identificar rápidamente las líneas que están dentro y fuera de la ventana, les asigna un código de región de 4 bits (en 2D) o de 6 bits (en 3D) a cada uno de los puntos extremos del segmento de recta Los bits son puestos en 1 (uno) de acuerdo a: bit 1 punto por arriba de la ventana bit 2 punto por debajo de la ventana bit 3 punto a la derecha de la ventana bit 4 punto a la izquierda de la ventana bit 5 punto adelante de la ventana bit 6 punto atrás de la ventana Código S. Castro, D. Urribarri CG 2015 Algoritmode Cohen-Sutherland 1001 1000 1010 0001 0010 0101 0110 0100 0000 Si Código1=0 y Código2=0 entonces el segmento de línea está dentro de la ventana sino sino si (Código1 and Código2)0 entonces el segmento de línea está fuera de la ventana no sabemos S. Castro, D. Urribarri CG 2015 c1 Código del punto p1 , c2 Código del punto p2 si c1 es vacío y c2 es vacío entonces Línea trivialmente aceptada sino si (c1 and c2) vacío entonces Línea trivialmente rechazada sino t1 0; t2 1 para nº bit: 1 6 si (c p1,nº bit< 0) or (c p2,nº bit< 0) entonces t c p1,nº bit/(c p1,nº bit - c p2,nº bit) si c p1,nº bit<0 entonces si t > t1 entonces t1 t sino si t < t2 entonces t2 t si t2 t1 entonces dx x2-x1; dy y2-y1; dz z2-z1; si t2 1 entonces x2 x1 + t2*dx; … si t1 0 entonces x1 x1 + t1*dx; … Algoritmo de Cohen-Sutherland S. Castro, D. Urribarri CG 2015 16 Este algoritmo que vimos realiza el clipping en la región de los w>0. De acuerdo a lo visto se debe considerar también el clipping de puntos con w<0. Esto se realiza de acuerdo a: - p1 y p2 con w>0 -w x,y,z w - p1 y p2 con w<0 -w x,y,z w con - p1 y - p2 - p1 y p2, uno con w>0 y -w x,y,z w con p1 y p2 otro con w<0 -w x,y,z w con - p1 y - p2 Algoritmo de Cohen-Sutherland S. Castro, D. Urribarri CG 2015 Pipeline 3D S. Castro, D. Urribarri CG 2015 Espacios Objeto Mundo 3D Ojo Clipping CND Pantalla Modelado Ubicación Especificación en el Mundo de la cámara Rotar Rotar Escalar División w Transformación Trasladar Trasladar Trasladar Viewport Perspectiva Clipping CND Pantalla 3D Escalar Rotar Pipeline 3D S. Castro, D. Urribarri CG 2015 Espacios Objeto Mundo 3D Ojo Clipping CND Pantalla Rotar Rotar Escalar División w Transformación Trasladar Trasladar Trasladar Viewport Perspectiva Rasterización Operaciones sobre frag Operaciones raster Mostrar fb Escalar Rotar Bibliografía S. Castro, D. Urribarri CG 2015 ACM SIGGRAPH Proceedings Agoston, M. Computer graphics & geometric modeling / Mathematics, Springer-Verlag London Ltd., 2005. Angel, E., Shreiner, D. Interactive Computer Graphics: A top-down approach with shader-based OpenGL, Addison Wesley, 2011, 6th. Ed. Foley, J., van Dam, A., Feiner, S. y Hughes, J., Computer Graphics. Principles and Practice, Addison Wesley, 1992, 2nd Edition. Hearn, D., Baker, M.P., Computer Graphics, C Version, Prentice Hall Inc., 2003, 3rd Edition. Hill, F. Jr, Kelley, S., Computer Graphics Using OpenGL, Prentice Hall., 2006, 3rd Ed. Fin Coordenadas Homogéneas S. Castro, D. Urribarri CG 2015 ),,( ),,( 2222 1111 wyxp wyxp H H Coordenadas homogéneas En el espacio homogéneo 2D 1,, 1,, 2 2 2 2 2 1 1 1 1 1 w y w x p w y w x p S. Castro, D. Urribarri CG 2015 17 ),,( ),,( 2222 1111 wyxp wyxp 1t0 121 pptpp Coordenadas homogéneas En el espacio homogéneo 2D S. Castro, D. Urribarri CG 2015 Homogéneas Homogéneas proyectadas Cartesianas Coordenadas homogéneas S. Castro, D. Urribarri CG 2015 Coordenadas homogéneas S. Castro, D. Urribarri CG 2015 Porción visible de la pantalla Coordenadas homogéneas S. Castro, D. Urribarri CG 2015 Coordenadas homogéneas ? S. Castro, D. Urribarri CG 2015 Coordenadas homogéneas S. Castro, D. Urribarri CG 2015 18 Coordenadas homogéneas S. Castro, D. Urribarri CG 2015
Compartir