Estructura de alambre OpenGL


18

No, no estoy buscando glPolygonMode. Estoy buscando un método, posiblemente un sombreador GLSL que produzca ese aspecto de estructura de alambre de estilo retro para objetos. ¿Alguna sugerencia?

Algo como Vector Tanks tenía.

http://toucharcade.com/wp-content/uploads/2009/01/picture-111-300x204.png

Preferiblemente, la solución también debería funcionar en OpenGL ES 2.0.

Cualquier sugerencia y puntero (siempre que no sea NULL) apreciado!

Respuestas:



5

Recomiendo encarecidamente el uso de texturas, como dijo Dave. Puede ser una molestia, pero creo que proporcionaría un rendimiento mucho mejor.

Podría intentar buscar algoritmos de detección de bordes . Si crea sus mallas utilizando colores de vértice con colores sólidos y valores alfa medios (para una ligera transparencia), y luego usa un sombreador de detección de bordes, podría verse lo suficientemente bueno. No sería lo mismo, pero puede que te guste aún más; o tal vez no.

De lo contrario, es posible que esté buscando una solución de dos pasos, dibujando polígonos translúcidos (nuevamente, configure los colores de los vértices en un color sólido con un valor alfa medio), luego configure glPolygonMode (GL_LINE) y ajuste glLineWidth como desee (tal vez en función del objeto distancia) y dibuje los polígonos nuevamente.

Es un poco tarde y me está costando leer esto, pero una discusión en el foro apunta a este PDF: Representación de estructura metálica de un solo paso . Mis disculpas si no es relevante.


+1: sería más fácil si encontrara una forma de generar las texturas de alguna manera. No se puede usar glPolygonMode debido a la posterior orientación de OpenGL ES (iStuff).
Kornel Kisielewicz

2

Sé que probablemente no sea lo que buscas, pero parece que Vector Tanks solo usa modelos texturizados. La textura le da el aspecto de marco de alambre, se ejecuta en mi iPod touch que no admite sombreadores.


Lo sé, lo sé, pero también podría pegar imágenes de Subversion, y no usa texturas en absoluto (AFAIK)
Kornel Kisielewicz

2

La única forma en que lo he visto es con texturas de alta resolución, en su mayoría negras, como las de Tron 2.0. Sus texturas son casi universalmente, ya sea un negro plano con un borde grueso y de color, o una simple textura de ruido Perlin.

Aplicaron algo de procesamiento posterior simple para lograr el efecto de brillo.


+1: conocía el artículo, pero gracias por recordarlo, es un buen artículo (y ayuda con el segundo problema que tuve: brillo).
Kornel Kisielewicz

1

Podría probar algún tipo de función de distancia simple en el sombreador de píxeles. Quizás algo así como coordenadas barcéntricas (almacene diferentes RGB en los vértices y el rasterizador hará la mayor parte del trabajo por usted).

Luego, su sombreador de píxeles tendrá la información que necesita sobre en qué parte del polígono se encuentra el píxel actual: cerca de un vértice, cerca de un borde o en el medio ...

Sin embargo, sospecho que en la práctica sería más fácil texturizarlo.


1

Qué tal esto: tome su modelo y bisele los bordes que desea que aparezcan como contornos. Colorea las caras que se crearon con un verde opaco brillante, mientras que todas las caras antiguas son de un verde translúcido oscuro.

Esto no requiere el uso de sombreadores de píxeles en absoluto. (De hecho, tampoco texturas; solo colores de la cara). Requiere un cierto procesamiento previo del modelo por su parte, lo que puede o no ser un problema.

No podrá ver el contorno cuando la superficie biselada sea perpendicular a la vista. Si esto le molesta, puede extruir un poco la superficie biselada, coloreando la extrusión como lo haría con el bisel. Puede jugar con diferentes grados de biselado y extrusión para hacer líneas más delgadas y gruesas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.