2010-11-01 12 views
5

¿Cuál es la forma más eficiente de identificar los vértices que son visibles desde un punto de vista particular?Identificar vértices visibles en OpenGL

Tengo una escena compuesta de varios modelos 3D. Quiero adjuntar un identificador a cada vértice (ModelID, VertexID) luego generar imágenes 2D desde varios puntos de vista y para cada imagen generar una lista de los identificadores de vértices visibles (esencialmente esto es para una aplicación de procesamiento de imágenes).

Inicialmente pensé realizar un producto escalar entre un vértice normal y el vector de vista de cámara para averiguar si el vértice está mirando hacia la cámara o no, sin embargo, si el modelo está ocluido por otro objeto, esta prueba no funcionaría.

Gracias de antemano

+0

¿Sería gluProject lo que estás buscando? ¿Asignación de coordenadas del objeto a las coordenadas de la ventana? – Jim

+0

¿A qué versión de OpenGL apunta? Siempre incluya esta información. Además, ¿necesita saber qué vértices pasan la prueba, o simplemente necesita el conteo? –

+0

Me estoy dirigiendo al perfil de núcleo de OpenGL 3.1. La respuesta proporcionada es todo lo que necesitaba, gracias. – tat0

Respuesta

3
  1. Disable toda la iluminación/texturización
  2. Render su geometría (GL_TRIANGLES) para poblar Z-buffer
  3. Render su geometría de nuevo (GL_POINTS), la selección de un color RGB diferente para cada vertex, que se correlaciona con los ID de su modelo/vértice
  4. Lea de nuevo el framebuffer y busque los colores que utilizó anteriormente, haciendo una asignación de los ID de su modelo/vértice.

No muy rápido, pero debería funcionar.

+0

Genial, es un buen truco y funciona bien. La velocidad no es muy importante en este caso. Gracias por tu ayuda. – tat0

Cuestiones relacionadas