2010-12-29 32 views
12

¿Hay alguna fórmula que genere un conjunto de coordenadas de triángulos cuyos vértices se encuentren en una esfera?¿Cómo crear una esfera pareja con triángulos en OpenGL?

Probablemente estoy buscando algo que haga algo similar a gluSphere. Sin embargo, necesito colorear los diferentes triángulos en colores específicos para que parezca que no puedo usar gluSphere.

También entiendo que gluSphere dibuja bordes a lo largo de líneas con longitudes y latitudes iguales que implica que los triángulos son pequeños en los polos en comparación con su tamaño en el ecuador. Ahora, si tal fórmula generaría los triángulos de manera que su diferencia de tamaño se minimice, eso sería genial.

+0

Usted está buscando "generación geosfera". Google encuentra mucha información con esas dos palabras. – Virne

+3

página no tiene precio: http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html – Fattie

+0

La segunda recomendación de Joe Blow es la publicación de blog de Andreas Kahler. Kahler proporciona código en C# y descripciones claras. – Rethunk

Respuesta

5

Comience con una unidad icosaedro. Luego aplica múltiples subdivisiones homogéneas de los triángulos, normalizando la distancia de los vértices resultantes al origen.

+1

Octaedro es una buena opción para el primer modelo también. Más información aquí: http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/sphere_cylinder/ – Virne

20

Para calcular las normales y el mapa UV.

Afortunadamente existe un increíble truco para calcular las normales, en una esfera. Si lo piensas, las normales en una esfera no son más que la dirección desde el centro de la esfera, ¡hasta ese punto! Además, si lo piensas bien, significa que las normales son literalmente iguales al punto! es decir, ¡es el mismo vector! - simplemente no te olvides de normalizar la duración, para lo normal.

Puedes ganar apuestas de barra sobre esa: "¿hay una forma en la que todas las normales sean exactamente ... iguales a los vértices?" A primera vista, pensarías, eso es imposible, no podría existir tal forma de coincidencia. Pero, por supuesto, la respuesta es simplemente "¡una esfera con radio uno!" ¡Heh!

En cuanto a los UV. Es relativamente fácil en una esfera, suponiendo que esté proyectando a 2D de la manera "obvia", a "rectangle-style" map projection. En ese caso, u y v es básicamente la longitud/latitud de cualquier punto, normalizado a 0,1.

Espero que ayude!

Aquí está la página web de todos los tiempos-clásico que muy bien explica cómo construir un icoesfera .. http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html

+1

Quiero ir a bares donde esa es una apuesta válida. –

+0

¡Tú, yo y Neal Stephenson, amigo! Ese "otro" D. Souther proporcionaría la música :) – Fattie

+0

Infierno sí, lo haría, lo llamaremos Hemingway's Whisky –

Cuestiones relacionadas