En el contexto de los gráficos por computadora , el recorte es un método para habilitar o deshabilitar selectivamente las operaciones de renderizado dentro de una región de interés definida . Matemáticamente, el recorte se puede describir utilizando la terminología de la geometría constructiva . Un algoritmo de renderizado solo dibuja píxeles en la intersección entre la región de recorte y el modelo de escena. Las líneas y superficies fuera del volumen de visualización (también conocido como tronco de pirámide) se eliminan. [ 1 ]
Las regiones de recorte se especifican habitualmente para mejorar el rendimiento de la renderización. Se dice que los píxeles que se dibujarán están dentro de la región de recorte, mientras que los que no se dibujarán están fuera. De forma más informal, se dice que los píxeles que no se dibujarán están "recortados".
En gráficos 2D
En gráficos bidimensionales, se puede definir una región de recorte para que los píxeles se dibujen únicamente dentro de los límites de una ventana o marco. Las regiones de recorte también se pueden usar para controlar selectivamente la representación de píxeles con fines estéticos o artísticos. En muchas implementaciones, la región de recorte final es la composición (o intersección) de una o más formas definidas por la aplicación, así como cualquier restricción del hardware del sistema.
En un ejemplo de aplicación, consideremos un programa de edición de imágenes. Una aplicación de usuario puede renderizar la imagen en una ventana gráfica. A medida que el usuario hace zoom y se desplaza para ver una porción más pequeña de la imagen, la aplicación puede establecer un límite de recorte para que los píxeles fuera de la ventana gráfica no se rendericen. Además, los widgets de la interfaz gráfica de usuario , las superposiciones y otras ventanas o marcos pueden ocultar algunos píxeles de la imagen original. En este sentido, la región de recorte es la combinación del "recorte de usuario" definido por la aplicación y el "recorte del dispositivo" impuesto por la implementación de software y hardware del sistema. [ 2 ] El software de la aplicación puede aprovechar esta información de recorte para ahorrar tiempo de cálculo, energía y memoria, evitando el trabajo relacionado con los píxeles que no son visibles.
En gráficos 3D

En gráficos tridimensionales, el término «recorte» se utiliza para describir diversas funciones relacionadas. Generalmente, «recorte» se refiere a operaciones en el plano que trabajan con formas rectangulares, mientras que «eliminación» se refiere a métodos más generales para procesar selectivamente elementos del modelo de escena. Esta terminología no es rígida y su uso exacto varía según la fuente.
Los elementos del modelo de escena incluyen primitivas geométricas: puntos o vértices; segmentos de línea o aristas; polígonos o caras; y objetos de modelo más abstractos como curvas, splines, superficies e incluso texto. En modelos de escena complejos, los elementos individuales pueden deshabilitarse (recortarse) selectivamente por razones como la visibilidad dentro de la ventana gráfica ( eliminación de frustum ); la orientación ( eliminación de caras posteriores ), la oclusión por otros elementos de la escena o del modelo ( eliminación de oclusión , recorte de profundidad o "z"). Existen algoritmos sofisticados para detectar y realizar este recorte de manera eficiente. Muchos métodos de recorte optimizados se basan en la lógica de aceleración de hardware específica proporcionada por una unidad de procesamiento gráfico (GPU).
El concepto de recorte puede extenderse a dimensiones superiores utilizando métodos de geometría algebraica abstracta .
Recorte cercano
Más allá de la proyección de vértices y el recorte 2D, se requiere un recorte cercano para rasterizar correctamente las primitivas 3D; esto se debe a que los vértices pueden haberse proyectado detrás del ojo. El recorte cercano garantiza que todos los vértices utilizados tengan coordenadas 2D válidas. Junto con el recorte lejano, también ayuda a prevenir el desbordamiento de los valores del búfer de profundidad. Algunos hardware de mapeo de texturas primitivos (que utilizaban mapeo de texturas hacia adelante ) en videojuegos sufrieron complicaciones asociadas con el recorte cercano y las coordenadas UV .
Recorte por oclusión (recorte en Z o por profundidad)
En gráficos 3D por computadora, "Z" suele referirse al eje de profundidad en el sistema de coordenadas centrado en el origen de la ventana gráfica: "Z" se usa indistintamente con "profundidad" y conceptualmente corresponde a la distancia "hacia el interior de la pantalla virtual". En este sistema de coordenadas, "X" e "Y" se refieren, por lo tanto, a un sistema de coordenadas cartesianas convencional dispuesto en la pantalla o ventana gráfica del usuario . Esta ventana gráfica está definida por la geometría del tronco de visión y parametriza el campo de visión .
El recorte Z, o recorte de profundidad, se refiere a técnicas que renderizan selectivamente ciertos objetos de la escena según su profundidad relativa a la pantalla. La mayoría de los kits de herramientas gráficas permiten al programador especificar una profundidad de recorte "cercana" y "lejana", y solo se muestran las porciones de los objetos entre esos dos planos. Un programador de aplicaciones creativas puede usar este método para renderizar visualizaciones del interior de un objeto 3D en la escena. Por ejemplo, una aplicación de imágenes médicas podría usar esta técnica para renderizar los órganos dentro de un cuerpo humano. Un programador de videojuegos puede usar la información de recorte para acelerar la lógica del juego. [ 3 ] Por ejemplo, una pared o edificio alto que ocluye otras entidades del juego puede ahorrar tiempo de GPU que de otro modo se emplearía en transformar y texturizar elementos en las áreas posteriores de la escena; y un programa de software estrechamente integrado puede usar esta misma información para ahorrar tiempo de CPU optimizando la lógica del juego para los objetos que no son visibles para el jugador. [ 3 ]
Algoritmos
- Algoritmos de recorte de líneas :
- Algoritmos de recorte de polígonos :
- Metodologías de renderizado
Véase también
Lecturas adicionales
- Joyas de la GPU: Eliminación eficiente de oclusiones [ 3 ]
- Recorte en Java AWT :
java.awt.Graphics.clipRectJavaDoc [ 2 ] - Recorte en UIKit para iOS (2D):
UIRectClip - Recorte en SceneKit para iOS (3D):
SCNCamera(Ajuste de la perspectiva de la cámara) - Recorte en OpenGL : Preguntas frecuentes técnicas de OpenGL: Recorte, eliminación de objetos y pruebas de visibilidad [ 4 ]
Referencias
- ↑ Bertoline, Gary; Wiebe, Eric (2002). Fundamentos de la comunicación gráfica (3.ª ed.). McGraw-Hill. pág. G-3. ISBN 0-07-232209-8. Consultado el 4 de enero de 2015 .
- 1 2 "java.awt.Graphics.clipRect" . Oracle. 2014.
- 1 2 3 Sekulic, Dean (2004). "Efficient Occlusion Culling" . GPU Gems . Pearson. Archivado del original el 5 de junio de 2013. Recuperado el 2 de enero de 2015 .
- ↑ Paul Martz (2001). "Recorte, eliminación y pruebas de visibilidad" . OpenGL.org . Consultado el 2 de enero de 2015 .
- Recorte (gráficos por computadora)
- Gráficos por computadora
- artefactos gráficos por computadora