Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Dibujar sobre una textura en ogl

Iniciado por coolhand, 01 de Febrero de 2007, 02:37:34 PM

« anterior - próximo »

coolhand

Me interesa saber si es posible dibujar sobre una textura aplicada a un modelo, o sea, dibujar sobre el modelo directamente. No me interesa usar el ratón para nada, simplemente necesito dibujar coordenadas en una esfera.

   Me explico mejor: tengo una esfera, con una textura adherida a ella (y por lo tanto deformada para adaptarse a su forma), y necesito marcar rutas sobre la textura, de manera que pueda obtenerla luego. Me interesa aplicar esa ruta de manera fidedigna a un mapa con cordenadas cartesianas de toda la vida obteniendo luego la textura de memoria.

Gracias.

Pogacha

Cuesta entender tu pregunta ...
Mejor pones unos ejemplos, he?

tamat

y no sería más facil hacerlo matematicamente?
Por un stratos menos tenso

coolhand

Me refiero a que una textura se fija con unas ciertas coordenadas. Quisiera dibujar encima de esa textura o de otra textura superpuesta puntos y lineas dentro de esas coordenadas, para evitar tener que hacer transformaciones inversas para calcular en qué coordenadas "normales" tendrían que caer esos puntos (o sea, dibujar directamente en las coordenadas que me dan para que sea opengl el que se encargue de hacer las transformaciones inversas y tener el dibujo transformado en la textura). Sería más fácil hacerlo matemáticamente si la transformación fuese simple, pero es compleja y muy costosa computacionalmente.

Un ejemplo simple podría ser obtener una elipse. Cogemos una textura, la estiramos, dibujamos un circulo sobre los polígonos donde está ella, y al obtener la textura de memoria debería tener una elipse dibujada (más o menos acentuada según lo estirada que esté la textura cuadrada).

Otra pregunta que me hacía es si se puede usar texturas no cuadradas en opengl, y en caso afirmativo, a partir de qué versión (tampoco me vendría mal saber cómo averiguar el tamaño máximo de textura que permita el cliente).

marcode

Si no he entendido mal suponiendo que el polo norte es 0, el ecuador 0.5 y el polo sur 1.0, la coordenada Y del globo coincidirá exactamente con la textura.

La X del extremo izquierdo en el ecuador sera de 0 + rotación y el extremo derecho 0.5 + rotación del globo. Donde media rotación sería 0.5

Por tanto sólo debes convertir la X para las diferentes latitudes mediante una fórmula (que ahora mismo no tengo ni idea de cúal).

¿Es eso?
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

Fran

Cita de: "coolhand"Me refiero a que una textura se fija con unas ciertas coordenadas. Quisiera dibujar encima de esa textura o de otra textura superpuesta puntos y lineas dentro de esas coordenadas, para evitar tener que hacer transformaciones inversas para calcular en qué coordenadas "normales" tendrían que caer esos puntos (o sea, dibujar directamente en las coordenadas que me dan para que sea opengl el que se encargue de hacer las transformaciones inversas y tener el dibujo transformado en la textura). Sería más fácil hacerlo matemáticamente si la transformación fuese simple, pero es compleja y muy costosa computacionalmente.

Un ejemplo simple podría ser obtener una elipse. Cogemos una textura, la estiramos, dibujamos un circulo sobre los polígonos donde está ella, y al obtener la textura de memoria debería tener una elipse dibujada (más o menos acentuada según lo estirada que esté la textura cuadrada).

Otra pregunta que me hacía es si se puede usar texturas no cuadradas en opengl, y en caso afirmativo, a partir de qué versión (tampoco me vendría mal saber cómo averiguar el tamaño máximo de textura que permita el cliente).

Hombre. Yo creo q la única solución a esto es la multiplicación por una matriz que deconvierta la matriz de proyección, la proyección sobre la pantalla y una transformación de coordenadas cartesianas  a esféricas. Con eso sacar la u,v y con ello podrias sacar la posición en la textura. No he hecho las cuentas pero eso es reproducible en una sola matriz si no toy quivokao. Y dudo q haya mas formas de hacerlo.

coolhand

La tierra es elíptica, con lo cual la transformación de coordenadas esféricas -> coordenadas cartesianas se complica un poco.

Yo supongo que tendrías que obtener qué polígono se encuentra en las coordenadas del punto que queremos pintar (basta con hacer una malla ordenada de polígonos -saber qué polígonos pertenecen a cada grado/minuto/segundo, depende de la densidad de la malla) y a partir de las coordenadas de la textura para ese polígono hallar la posición transformada para ese punto y dibujarlo en la textura; No se si hay alguna forma más directa de hacerlo...






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.