1 / 20

Gr ficas Interactivas

. Rasterizaci

Albert_Lan
Télécharger la présentation

Gr ficas Interactivas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Grficas Interactivas Isaac Rudomn (Instructor) rudomin@itesm.mx Erik Milln (asistente) emillan@itesm.mx

    2. Rasterizacin Aliasing Recorte

    3. Rasterizacin Lneas Tringulos Polgonos

    4. Rasterizacin: Que es? Como ir de los nmeros reales de las coordenadas de los vrtices de las primitivas a las coordenadas enteras de los pixeles en pantalla Primitivas geomtricas Puntos: redondear locacin del vrtice en coordenadas de pantalla Lneas: OK para puntos extremos, pero que hacemos en medio? Polgonos: Como lleno rea acotada por aristas?

    5. Rasterizando lneas: metas Dibuja pixeles tan cerca como sea posible de la lnea ideal Usand el mnimu nmero de pixeles sin dejar huecos Hacerlo eficientemente Extras Diferentes estilos de lneas Anchura Punteado Estilos de uniones para lneas conectadas Minimizar aliasing (escalerillas)

    6. Dibujo de lneas mediante DDA DDA significa Digital Differential Analyzer, que es el nombre de unos plotters que existan antiguamente Forma pendiente-interseccin de la lnea: y = mx + b m = dy/dx b es donde la lnea intersecta al eje Y La idea bsica del DDA: Si incrementamos la coordenada x por 1 pixel en cada paso, la pendiente de la lnea nos dice cuanto incrementar y por paso Es decir m = dy/dx, por lo que para dx = 1, dy = m Esto solo funciona si m <1 sino hay huecos Solucin: intercambia los ejes y avanza en direccin Y pues entonces dy = 1, obtenemos dx = 1/m

    7. Dibujo de lneas mediante DDA DDA significa Digital Differential Analyzer, que es el nombre de unos plotters que existan antiguamente Forma pendiente-interseccin de la lnea: y = mx + b m = dy/dx b es donde la lnea intersecta al eje Y La idea bsica del DDA: Si incrementamos la coordenada x por 1 pixel en cada paso, la pendiente de la lnea nos dice cuanto incrementar y por paso Es decir m = dy/dx, por lo que para dx = 1, dy = m Esto solo funciona si m <1 sino hay huecos Solucin: intercambia los ejes y avanza en direccin Y pues entonces dy = 1, obtenemos dx = 1/m

    8. DDA: Algoritmo Dados puntos extremos (x0, y0), (x1, y1) Coordenadas enteras: Redondea si los endpoints fueron originalmente de valor real Supon (x0, y0) a la izquierda de (x1, y1): Intercambia en caso contrario Entonces calculamos pendientes no negativas: m = dy/dx = (y1 y0) / (x1 x0) Itera If m <= 1: Itera entero x de x0 a x1, incrementando por 1 cada paso Inicializa real y = y0 Agregale m a y en cada paso y dibuja punto (x, round(y)) Si m > 1: Itera entero y desde y0 a y1, incrementando por 1 Inicializa real x = x0 Agregale 1/m a x en cada paso y dibuja punto (round(x), y)

    9. DDA: Notas Pendientes negativas por simetra Es decir, rota 90 grados a favor del reloj para iterar: (x, y) ! (y, x) Trata como caso normal Rota de vuelta para dibujar DDA es lento Clculo de punto flotante y redondeo son relativamente caros

    10. Algoritmo de punto medio Midpoint (Bresenham) para dibujar lneas Idea bsica: Evita redondear, hacer todo con aritmtica de enteros para velocidad Supon pendiente entre 0 y 1 Otra vez usar simetra para lneas con otras pendientes

    11. Dibujando lneas con punto medio: la ecuacin La forma de pendiente-interseccin de la ecuacin de la lnea es y = (dy/dx)x + b Multiplicando por dx, queda: F(x, y) = dy x - dx y + dx b = 0 F es: Cero para puntos en la lnea Positiva para puntos bajo la lnea (a la derecha si pendiente > 1) Negativa para puntos sobre la lnea (izquierda si pendiente > 1) Ejemplos: (0, 1), (1, 0), etc.

    12. Dibujando lneas con punto medio: la decisin Dadas nuestras suposiciones sobre la pendiente, despus de dibujar (x, y) el siguiente pixel puede ser o bin el superior U = (x + 1, y + 1) o bin el inferior L = (x + 1, y)

    13. Dibujando lneas con punto medio: la decisin Despues de dibujar (x, y), para escoger el siguiente pixel a dibujar consideramos el punto medio M = (x + 1, y + 0.5) Si est en la lnea, U y L son equidistantes de la lnea Si est bajo la lnea, U es mas cercano a la lnea que L Si est sobre la lnea, L es mas cercano que U.

    14. Dibujando lneas con punto medio: la decisin entonces F es una funcin de decisin acerca de que pixel dibujar: Si F (M ) = F (x + 1, y + 0.5 ) > 0 (M bajo la lnea), escogemos U Si F (M ) = F (x + 1, y + 0.5 ) <= 0 (M sobre o en la l[inea), escogemos L

    15. Dibujando lneas con punto medio: implementacin Por eficiencia: F no necesariamente debe ser evaluada por completo en cada paso Si evaluamos por completo y obtenemos F(x + 1, y + 0.5) Si escogemos L, el prximo punto medio, M0 est en F(x + 2, y + 0.5) Si escogemos U, el prximo punto medio, M00 est en F(x + 2, y + 1.5)

    16. Dibujando lneas con punto medio: implementacin Por eficiencia: F no necesariamente debe ser evaluada por completo en cada paso Si evaluamos por completo y obtenemos F(x + 1, y + 0.5) Si escogemos L, el prximo punto medio, M0 est en F(x + 2, y + 0.5) Si escogemos U, el prximo punto medio, M00 est en F(x + 2, y + 1.5)

    17. Dibujando lneas con punto medio: implementacin Por eficiencia: F no necesariamente debe ser evaluada por completo en cada paso Si evaluamos por completo y obtenemos F(x + 1, y + 0.5) Si escogemos L, el prximo punto medio, M0 est en F(x + 2, y + 0.5) Si escogemos U, el prximo punto medio, M00 est en F(x + 2, y + 1.5)

    18. Dibujando lneas con punto medio: implementacin Expandiendo esto utilizando using F(x, y) = dy x - dx y + dx b : FM = F(x + 1, y + 0.5) = dy(x + 1) - dx(y + 0.5) + dx b FM0 = F(x + 2, y + 0.5) = dy(x + 2) - dx(y + 0.5) + dx b FM00 = F(x + 2, y + 1.5) = dy(x + 2) - dx(y + 1.5) + dx b Nota que FM0 FM = dy y FM00 FM = dy - dx Asi que dependiendo si escogemos L o U, solo debemos agregar dy o dy - dx, respectivemente, al viejo valor de F para obtener el nuevo valor

    19. Dibujando lneas con punto medio: algoritmo Para inicializar, calculamos F en el primer punto medio junto al punto extremo izquierdo: F(x0 + 1, y0 + 0.5) = dy(x0 + 1) - dx(y0 + 0.5) + dx b = dy x0 - dx y0 + dx b + dy - 0.5 dx = F(x0, y0) + dy - 0.5 dx pero F(x0, y0) = 0 pues est sobre la lnea, asi que la primera F =dy-0.5 dx Solo importa el signo para la decisi, asi que para que sea un valor entero, multiplicamos por 2 y obtenemos 2F = 2 dy - dx Para actualizar, se requiere conocer el valor actual para x y y y un valor parar F: Si escojo L: F += 2dy y x++ Si escojo U: F += 2(dy - dx) y x++ , y++

    20. Velocidad de dibujo de lneas 100,000 lneas al azar en ventana 500 x 500 DDA: 6.8 segundos Midpoint: 2.5 segundos OpenGL usando GL_LINES (en software): 1.6 segundos

    21. Rasterizando Polgonos En grficas interactivas, los polgonos dominan Dos razonesTwo main reasons: Mnimo denominador comn Pueden representar o aproximar cualquier superficie Simplicidad matemtica que permite algoritmos sencillos y regulares, que pueden ser implementados en hardware

    22. Rasterizando Tringulos El tringulo es polgono mnimo Todos los polgonos pueden descomponerse en tringulos Convexos, concavos, complejos Los tringulos son siempre: Planos Convexos Que es ser convexo?

    23. Formas Convexas Una forma bidimensional es convexa si y solo si cualquier segmento conectando dos puntos en la frontera est contenido por completo en la forma.

    24. Formas Convexas Porque queremos formas convexas para rasterizar? Una respuesta: porque cualquier lnea de scan est garantizada a contener a lo mas un segmento o span de un tringulo

    25. Decomponer Polis a Tris Cualquier polgono convexo se descompone trivialmente en tringulos Los polgonos concavos o complejos tambin, aunque no es trivial

    26. Rasterizar tringulos Caso especial de polgonos Exactamente dos aristas activas en cualquier momento Un mtodo: Llena tabla de la lnea de scan entre vrtice superior e inferior usando los algoritmos DDA o punto medio para seguir las aristas Hacer travesa de la tabla lnea de scan por lnea de scan, llenando de izquierda a derecha

    27. Rasterizar tringulos Hardware para grficas interactivas usa comnmente las tcnicas de edge walking o edge equation Hay otras tcnicas: Subdivisin recursiva de primitivas a micropolgonos (REYES, Renderman) Subdivisin recursiva de pantalla (Warnock)

    28. Subdivisin recursiva de tringulos

    29. Subdivisin recursiva de pantalla

    30. Seguimiento de aristas Basicamente: Dibuja aristas verticalmente LLena spans horizontales para cada lnea de scan Interpola colores a lo largo de las aristas En cada lnea de scan, interpola colores de arista a travs del span Notas: Muy rpido Tiene algunos problemas con casos especiales Puede haber huecos entre aristas adyacentes

    31. Ecuaciones de aristas (edge equations) Un edge equation es simplemente la ecuacin de la lnea que contiene esa arista Edge equations definen dos medios espacios:

    32. Edge Equations Un tringulo puede definirse como la interseccin de tres medios espacios positivos:

    33. Edge Equations Basta encenderlos pixeles para los cuales todas las edge equations evalan a > 0:

    34. Uso de Edge Equations Como hacer esto en hardware? Como lo haras en software?

    35. Uso de Edge Equations Que pixeles?: calcula caja acotante min,max (fcil) Edge equations: calcla a partir de vrtices, con rea positiva Problemas numricos (aqu lo dejamos)

    36. Edge Equations: Cdigo Basic amente: Setup: calcular edge equations, bounding box (loop externo) Para cada lnea de scan en BB (loop interno) checa cada pixel en lnea de scan, evaluando las ecuaciones y dibujando el pixel si las tres son positivas

    37. Optimiza esto! findBoundingBox(&xmin, &xmax, &ymin, &ymax); setupEdges (&a0,&b0,&c0,&a1,&b1,&c1,&a2,&b2,&c2); /* Optimize this: */ for (int y = yMin; y <= yMax; y++) { for (int x = xMin; x <= xMax; x++) { float e0 = a0*x + b0*y + c0; float e1 = a1*x + b1*y + c1; float e2 = a2*x + b2*y + c2; if (e0 > 0 && e1 > 0 && e2 > 0) setPixel(x,y); } }

    38. Rasterizacin de polgonos Dado un conjunto de vrtices, rellenar el interior Bsicamente: Itera sobre lneas de scan entre vrtice superior e inferior Para cada lnea de scan, encuentra todas las intersecciones con aristas de polgonos Ordena intersecciones por valor en x y llena de pixeles entre pares de intersecciones non y par

    39. Rasterizacin de polgonos: Notas Refinnamientos Mantener paridad correcta descartando intersecciones con puntos extremos superiores de cualquier arista Evita dibujar doblemente las fronteras de polgonos adyacentes (es malo si hay blending o XOR) siguiendo la regla de pertenencia izquierda-abajo: Dibuja pixel en arista izquierda pero no en derecha Descarta intersecciones con aristas horizontales

    40. Rasterizacin de polgonos Bsicamente: usar prueba de paridad for each scanline edgeCnt = 0; for each pixel on scanline (l to r) if (oldpixel->newpixel crosses edge) edgeCnt ++; // draw the pixel if edgeCnt odd if (edgeCnt % 2) setPixel(pixel);

    41. Tabla de aristas activas Idea: Aristas que intersectan una lnea de scan, probablemente intersectan la prxima Entre lneas de scan consecutivas, el rden de las intersecciones con aristas probablemente no cambie mucho

    42. Tabla de aristas activas Algoritmo: Sort de aristas por coordenada y mnima Comenzando abajo, agrega aristas con Ymin= 0 a la tabla Para cada lnea de scan: Sort de aristas en tabla por interseccin x Ve de izquierda a derecha, dibujando pixeles segn regla de paridad Incrementa lnea de scan Quita aristas con Ymax < Y Agrega aristas con Ymin > Y Recalcula intersecciones de aristas y vuelve a ordenar (como hacerlo eficientemente?) Para cuando Y > Ymax para las ltimas aristas

    43. Aliasing y anti Aliasing

    44. Aliasing y Antialiasing Aliasing: trmino de procesamiento de seales con significado preciso Aliasing: trmino en grficas computacionales para cualquier artefacto visual no deseado Antialiasing: trmino en grficas computacioneales para el combate a los artefactos no deseados Veremos estos en rden

    45. Procesamiento de seales Dispositivo Raster: muestras regulares de una funcin continua Piensa en una funcin 1-D:

    46. Procesamiento de seales Muestra de funcin 1-D:

    47. Procesamiento de seales Muestra de funcin 1-D:

    48. Procesamiento de seales Muestra de funcin 1-D: Que notas?

    49. Procesamiento de seales Muestra de funcin 1-D: Que notas? No es suave

    50. Procesamiento de seales Muestra de funcin 1-D: Que notas? No es suave Pierde informacin!

    51. Procesamiento de seales Muestra de funcin 1-D: Que notas? No es suave Pierde informacin! Que podemos hacer? Reconstruccin de mayor rden Usar mas muestras Cuantas muestras mas?

    52. El teorema de muestreo Obviamente, entre mas muestras, mejor aproximamos la funcin inicial El teorema: Una funcin continua limitada en banda, puede ser completamente representada por un conjunto de muestras regulares, si estas ocurren a ms del doble de la frecuencia, del componente de mxima frecuencia de la funcin.

    53. El teorema de muestreo En otras palabras, para representar adecuadamente una funcin cuya mxima frecuencia es F, debemos muestrear a la frecuencia N = 2F. N se llama lmite de Nyquist.

    54. El teorema de muestreo Ejemplo: sinusoidales

    55. El teorema de muestreo Ejemplo: sinusoidales

    56. Teora de Fourier Los ejemplos usan sinusoidales, porque? La teora de Fourier nos permite descomponer cualquier seal en una suma de (posiblemente un nmero infinito de) ondas senoidales

    57. Prefiltrado Elimina las altas frecuencias antes de muestrear Convertir I(x) a F(u) Applica filtro pasa bajos (e.g., multiplica F(u) por funcin caja) Entonces muestrea. Resultado: no hay aliasing! Entonces que problema hay? Problema: los algoritmos de render generan directamente una funcin como muestras e.g., Z-buffer, ray tracing

    58. Supersampling La forma mas sencilla para reducir artefactos de aliasing es el supersampling Incrementa la resolucin de las muestras Promedia A veces se llama postfiltrado Crea imagen virtual a mas alta resolucin que la imagen final Aplica filtro pasa bajos Remuestrea imagen filtrada

    59. Supersampling: Limitaciones Almacenamiento crece cuadrticamente No elimina el aliasing, solo sube el lmite de Nyquist Peor caso tablero de ajedrez recediendo al infinito De todas maneras se utiliza. Como hacerlo bien?

    60. Supersampling El proceso: Crea imagen virtual a mas alta resolucin que la imagen final (fcil) Aplica filtro pasa bajos Convierte a dominio de frecuencia Multiplica por funcin caja Caro!!! Pero recuerda que multiplicacin en dominio de frecuencia equivale a convolucin en el espacio, por lo que: basta hacer la convolucin de la imagen con la transformada de Fourier de la funcin caja Remuestrea imagen filtrada En la prctica si combinamos los pasos 2 y 3 solo debemos crear la imagen filtrada en los nuevos puntos muestra, es decir solo hay que hacer la convolucin con el filtro en los nuevos puntos, lo cual involucra solo multiplicar y sumar valores

    61. Supersampling: Convolucin digital

    62. Supersampling Para multiplicar por una funcin caja en la frecuencia, en el espacio debemos usar la funcin sinc que es (sin(x) / x) Es dificil pues Sinc tiene soporte infinito y lbulos negativos Comunmente se usa Sinc truncado Caja (muy malo) Tringulo Gaussiano (bueno, entre mas ancho el filtro, mejor; usualmente 3x3, 5x5 o a lo mas 7x7)

    63. Antialiasing en el dominio continuo A pesar de los problemas del prefiltrado, a veces se trata de aproximar el efecto de la convolucin en el dominio continuo

    64. Antialiasing en el dominio continuo

    65. Antialiasing en el dominio continuo Lo bueno Puedo evaluar de manera exacta la cobertura de poligono del kernel del filtro Que implica? Recorte Determinar superficies visibles Lo malo Determinar cobertura es muy caro La variacin de intensidad puede no ser pareja

    66. Algoritmo de Catmull Encuentra area de fragmentos Multiplica por color de fragmentos Suma para determinar color final del pixel

    67. Algoritmo de Catmull Primer intento para filtrar en dominio continuo Muy caro Recorta poligonos a fragmentos Ordena fragmentos de poligono por profundidad Es un filtro de caja

    68. El A-Buffer Idea: approximar filtrado continuo por muestreo a nivel subpixel Sumar areas se vuelve sencillo

    69. El A-Buffer Ventajas: Incorporar a scanline renderer reduces costos de almacenamiento dramticamente Procesamiento por pixel depende solo del nmero de fragmentos visibles Puede implementarse eficientemente con operaciones de lgicas de bits sobre mscaras a nivel subpixel Desventajas Bsicamente sigue siendo supersampling No es amigable para el hardware

    70. Muestreo estadstico El muestreo irregular da ruido en vez de aliasing, lo que molesta menos al sistema visual. Integrar el muestreo estadstico a Ray tracing (sencillo) Z-buffer (posible, ver REYES) o simular con jitter de imagen A-buffer (no) Como es bueno distribuir las muestras? Poisson (agregar al azar hasta llenar; es uniforme) Disco de Poisson (distancia minima; muy pareja) Jittered (perturba malla regular al azar; granular)

    71. Recorte

    72. Recorte Hemos estado suponiendo que todas las primitivas (lneas, tringulos, polgonos), estn completamente dentro del viewport En general, esto no es cierto:

    73. Recorte Se pueden calcular analticamente las partes de las primitivas dentro del viewport

    74. Porque recortar? Es mala idea rasterizar fuera de los lmites del framebuffer No queremos desperdiciar tiempo rasterizando pixeles fuera de la ventana

    75. Recorte Mtodo ingenuo: for each line segment for each edge of viewport find intersection points pick nearest point if anything is left, draw it Que es mas cercano? Como optimizar?

    76. Aceptacin y Rechazo Trivial Si los dos extremos estan dentro aceptacin trivial Si los dos extremos estn del mismo lado de la misma lnea, rechazo trivial

    77. Recorte de Lneas Cohen-Sutherland Divide plano de vista en regiones definidas por aristas Asigna a cada regin un cdigo de 4 bits:

    78. Recorte de Lneas Cohen-Sutherland Define bits con pruebas sencillas x > xmax y < ymin etc. Asigna un cdigo a cada vrtice de la lnea Si ambos cdigos = 0, aceptacin trivial haz AND bit por bit de cdigos de los vrtices Si resultado ? 0, rechazo trivial

    79. Recorte de Lneas Cohen-Sutherland Si lnea no puede ser aceptada o rechazada trivialmente, subdivide para poder descartar uno o ambos segmentos Escoge arista que la lnea cruza (como?) Intersecta lnea con arista (como?) Descarta porcin en lado incorrecto de arista y asignale cdigo al nuevo vrtice Aplica pruebas de aceptacin y rechazo trivial; repite si es necesario

    80. Recorte de Lneas Cohen-Sutherland Pruebas de cdigo e intersecciones son rpidas Algunas lneas requieren varias iteraciones Otros algoritmos son mas eficientes (checar): Cyrus-Beck usa lneas paramtrica Liang-Barsky optimiza esto para volumenes verticales

    81. Recorte de Polgonos Recortar polgonos es mas complejo que recortar cada lnea que lo forma Entrada: polgono Salida: polgono, o nada Hay aceptacin o rechazo trivial del polgono en vez de los segmentos que lo forman?

    82. Que le pasa al tringulo al recortar? Cuantos lados tiene al final? Por que es dificil el recorte?

    83. Caso dificil. Resultan varios polgonos: Por que es dificil el recorte??

    84. Recorte Sutherland-Hodgman Basicamente: Considera cada arista del viewport individualmente Recorta el polgono contra la ecuacin de esa arista Al terminar con todas, hemos terminado

    85. Sutherland-Hodgman Clipping

    86. Sutherland-Hodgman Clipping

    87. Sutherland-Hodgman Clipping

    88. Sutherland-Hodgman Clipping

    89. Sutherland-Hodgman Clipping

    90. Sutherland-Hodgman Clipping

    91. Sutherland-Hodgman Clipping

    92. Sutherland-Hodgman Clipping

    93. Sutherland-Hodgman Clipping

    94. Sutherland-Hodgman Clipping Rutina bsica: Ve alrededor del polgonoun vrtice a la vez El vrtice actual tiene una posicin p El vrtice previo tuvo posicin s, y se agrego a la salida si era apropiado

    95. Sutherland-Hodgman Clipping Cuatro casos para arista de s a p:

    96. Prueba punto plano Una prueba generalpara determinar si un punto p est dentro de un plano P, definido por q y n: (p - q) n < 0: p dentro P (p - q) n = 0: p sobre P (p - q) n > 0: p fuera de P

    97. Interseccin Lnea-Plano Usar definicin paramtrica de arista: E(t) = s + t(p - s) Si t = 0 entonces E(t) = s Si t = 1 entonces E(t) = p Si no, E(t) est entre s y p

    98. Interseccin Lnea-Plano La arista intersecta al plano P donde E(t) est sobre P q es un punto en P n es normal a P (E(t) - q) n = 0 t = [(q - s) n] / [(p - s) n] El punto de interseccin i = E(t) para este valor de t

    99. Interseccin Lnea-Plano Note que la longitud de n no afecta el resultado: t = [(q - s) n] / [(p - s) n] Otra vez, oportunidad para optimizar

    100. Recorte 3-D Antes de dibujar debemos recortar Podemos transformar a coordenadas de pantalla primero y recortar en 2-D? Correccin: no dibujar cosas atras del ojo

    101. Recorte con perspectiva Problema: despues de multiplicar por matriz de perspectiva y hacer la divisin homogenea, un punto en (-8, -2, -10) se ve igual que uno en (8, 2, 10). Solucin A: recorta antes de multiplicar el punto por la matriz de proyeccin I.e., recorta en coordenadas de cmara Solucin B: recorta despues de aplicar la matriz pero antes de dividir I.e., recorta en coordenadas homogeneas de pantalla

    102. Recorte con perspectiva Solucin A:

    103. Recap: Proyeccin de perspectiva El volumen de vista tpico es un frustum o pirmide truncada

    104. Proyeccin de Perspectiva El fustrum consiste de 6 planos Sutherland-Hodgeman algorithm (recortar poligonos a una regin plano por plano) generaliza a 3-D Recorta poligonos contra los 6 planos del frustum Cual es el problema? Recortar un segmento contra un plano arbitrario es caro pues requiere productos punto

    105. Proyeccin de Perspectiva De hecho, por simplicidad se prefiere utilizar un fustrum cannico:

    106. Proyeccin de Perspectiva De hecho, por simplicidad se prefiere utilizar un frustum cannico:

    107. Recorte con perspectiva Hay que refinar nuestro modelo de pipeline: Note que esto nos obliga a separar las transformaciones de proyeccin de las de modelado y vista

    108. Recorte en coordenadas homogeneas Otra opcin es recortar directamente en coordenadas homogeneas. Esto permite recortar despus de la proyeccin de perspectiva: Que ventaja tiene?

    109. Recorte en coordenadas homogeneas Otras ventajas: Podemos transformar la vista cannica para perspectiva en la vista cannica de proyecciones paralelas Recortar en esta ltima Permite implementar en hardware Habr primitivas con w ? 1 Por ejemplo, polgonos que resultan de subdividir splines Si no se recorta en coordenadas homogeneas, hay que dividir dos veces en esas primitivas

    110. Recorte en coordenadas homogeneas Pero como se recorta en coordenadas homogeneas? Brevemente, as: Recuerda que hemos aplicado una transformacin a device coordinates x, y ? [-1, 1] z ? [0, 1] Al recortar digamos al lado derecho de la pantalla (x = 1), recorta mejor a (x = w)

More Related