2010-12-29 24 views
12

Gibt es eine Formel, die eine Menge von Koordinaten von Dreiecken erzeugt, deren Ecken sich auf einer Kugel befinden?Wie erstellt man eine gerade Kugel mit Dreiecken in OpenGL?

Ich bin wahrscheinlich auf der Suche nach etwas, das ähnlich wie gluSphere tut. Aber ich muss die verschiedenen Dreiecke in bestimmten Farben färben, so dass es scheint, dass ich gluSphere nicht verwenden kann.

Auch: Ich verstehe, dass gluSphere Kanten entlang Linien mit gleichen Längen und Breiten zieht, was dazu führt, dass die Dreiecke im Vergleich zu ihrer Größe am Äquator klein an den Polen sind. Würde eine solche Formel die Dreiecke so erzeugen, dass ihre Größenunterschiede minimiert würden, wäre das großartig.

+0

Sie sind für „Geosphäre Generation“ suchen. Google findet viele Informationen mit diesen beiden Wörtern. – Virne

+3

unbezahlbare Seite: http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html – Fattie

+0

Ich zweite Joe Blow's Empfehlung des Blog Post von Andreas Kahler. Kahler bietet Code in C# und klare Beschreibungen. – Rethunk

Antwort

5

Beginnen Sie mit einer Einheit Ikosaeder. Wenden Sie dann mehrere homogene Unterteilungen der Dreiecke an und normalisieren Sie die resultierende Scheitelentfernung zum Ursprung.

+1

Octahedron ist auch eine gute Wahl für das erste Modell. Mehr Infos hier: http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/sphere_cylinder/ – Virne

20

Um die Normalen und die UV-Karte zu berechnen.

Glücklicherweise gibt es einen erstaunlichen Trick für die Berechnung der Normalen, auf einer Kugel. Wenn man darüber nachdenkt, sind die Normalen auf einer Sphäre tatsächlich nichts weiter als die Richtung vom Mittelpunkt der Sphäre zu diesem Punkt !! Wenn Sie darüber nachdenken, , bedeutet das, dass die Normalen buchstäblich gleich dem Punkt sind! h. es ist der gleiche Vektor! - Vergessen Sie nicht, die Länge zu normalisieren.

Sie können Bar Wetten auf diese eine gewinnen: "Gibt es eine Form, wo alle Normalen zufällig genau gleich den Scheitelpunkten sind?" Auf den ersten Blick könnte man meinen, das ist unmöglich, eine solche zufällige Form könnte nicht existieren. Aber natürlich ist die Antwort einfach "eine Kugel mit Radius eins!" Heh!

In Bezug auf die UVs. Es ist relativ einfach auf einer Kugel, vorausgesetzt, Sie projizieren 2D auf die "offensichtliche" Art und Weise, a "rectangle-style" map projection. In diesem Fall ist u und v im Grunde genommen nur die Länge/Breite eines beliebigen Punktes, normalisiert auf 0,1.

Hoffe es hilft!

Hier ist die Allzeit klassische Web-Seite, die schön erklärt, wie ein icosphere zu bauen .. http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html

+1

Ich möchte in Bars gehen, wo das eine gültige Wette ist. –

+0

Du, ich und Neal Stephenson, Alter! Das "andere" D. Souther würde die Musik liefern :) – Fattie

+0

Hölle ja, er würde - wir nennen es Hemingway's Whiskey –

Verwandte Themen