Frage

Was ist der beste Weg wäre, zu speichern, zu implementieren und zu sphärischen Welten, wie die, die in Spore oder Unendlichkeit zu machen, aber ohne das in-zwischen den Stufen von Spore und mehr Welten ala unendlich Universum. Machen Sie keine Annahmen darüber, wie der Planet selbst erzeugt oder seine Größe / Skalierung.

War es hilfreich?

Lösung

Für Rendering, müssen Sie irgendeine Art von Level-of-Detail-Algorithmus, um verwenden, um nahtlos von der Nähe zu bewegen, um die Oberfläche des Planeten weit weg. Es gibt viele dynamische LOD-Algorithmen ( sehen hier ). Ein älterer Algorithmus, ROAM genannt, können kugelförmige Objekte, oder Planeten ( sphärischen ROAM zu handhaben angepasst werden ). Geometry Clipmaps ist ein neuerer, populäreren Algorithmus, der auf sphärische Oberflächen angepasst werden kann auch .

Wie zum Speichern der Daten, können Sie in Verfahren Generation aussehen sollen (je nach Bedarf) für die Texturierung, Height usw. Dies ist ähnlich wie Unendlichkeit und Spore Dinge zu tun. Sie können ein wenig über prozedurale Texturierung hier . Procedural Height ist einfacher, je nachdem, wie komplex / realistisch, dass Sie Ihr Terrain wollen. Auf der einfachsten Ebene, können Sie einfach Ihre Scheitelhöhe durch eine Perlin Noise-Funktion verschieben.

Andere Tipps

Wenn Sie etwas suchen, Daten über die Oberfläche in zu speichern, könnte schauen Sie auf HEALpix . Es ist eine Software von der astronomischen Gemeinschaft entwickelt speziell zur Kartierung des Himmels (eine andere kugelförmige Oberfläche).

HEALpix schafft ein Netz, das die Position und die Größe der Oberfläche Flächen beschreibt und ordnet jedes eine ID. Sie können dann diese ID als Schlüssel oder Index verwenden, so viele Details zuzugreifen, wie Sie über diese spezielle Ebene wollen.

HEASpix stellt Verfahren finden Oberflächenbereiche benachbarter und kann Zentrum und Vertexpositionen für jeden Gitterpunkt geben.

Es ist ein hierarchisches Netz, das Ihnen jedes Gesicht so viel zu unterteilen kann, wie Sie so wollen Sie in der Theorie könnten Teile des Netzes mit geringer Auflösung und anderen Teilen bei höheren Detailstufen haben, wenn man wollte. Es hat die schöne Eigenschaft, dass es unendlich teilbar ist (bis auf die Speichergrenzen) und jedes Pixel des Gitters bei einer gegebenen Auflösung hat die gleiche Fläche wie alle die anderen in dieser Auflösungsstufe.

Das Verteilungspaket bietet eine Menge Sachen, die Sie wahrscheinlich nicht brauchen, aber die Kernbibliotheken nützlich sein sollten.

Dies ist wahrscheinlich nicht das, was Sie suchen ... Aber was solls. Es ist eine gute Geschichte.

Vor Äonen zurück, als die Dinosaurier streiften noch die Erde und Speicher noch in Kilobyte gemessen wurde, spielte ich mit einiger Software Planeten zu erzeugen fractally.

Die Idee war, ein 2NxN Rechteck, um die Planeten zu erstellen. Schneiden Sie den Planeten in einem halben paar Mal die beiden Hälften Verschiebung leicht jedes Mal. (Sinuswelle für den Schnitt mit zufälliger Phasenverschiebung und Amplitude. Weitere Zufallssinuswelle für die Verschiebung.) Afterwords, überschwemmt die untergeordneten Stellen mit Wasser und farb Code des Rest der Höhe.

Dann legen Sie eine Kugel mit einem Durchmesser N oben und Projekt, eine NxN Region der Karte Umwickeln Hälfte der Kugel. Bewegen Sie die Kugel um die Karte und es sah aus wie es war zu drehen.

Ich würde vorschlagen, eine Art von Polygonmodell im Speicher mit ihnen den Welten zu implementieren, verwenden Sie eine Datei um sie zu speichern und machen sie eine Art von 3D-Engine. Entweder das, oder nur einen Zeiger Zentrum und ein Radius, zusammen mit einer Überlagerung der Geographie der Welt zu beschreiben.

Edit: Vielen Dank für ein bisschen mehr Detail. Je nachdem, wie viel Detail, das Sie benötigen, müssen Sie irgendeine Art von Methode verwenden, um die Textur in kleinere Teile zu brechen - Sie können nur die Textur für 20 Gesichter erzeugen und eine Ikosaeder um den Mittelpunkt. Schauen Sie sich auf Karte Projektionen für einige Gedanken darüber, wie dies im wirklichen Leben behandelt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top