Wie kann ich einen Stern modellieren?

22

Ich versuche, einen Stern in Unity zu modellieren, und das funktioniert, aber es ist nicht ideal. Gegenwärtig verwende ich eine große Kugel mit einem selbstleuchtenden Material, auf dessen Oberfläche eine Sterntextur aufgebracht ist, und einem Scheinwerfer, um den Effekt von Sternenlicht zu erzeugen:

Bildbeschreibung hier eingeben

Während es funktioniert, sieht es nicht besonders gut aus. Ich bin auf der Suche nach einem Effekt, der eher der Art und Weise entspricht, wie das Kerbal Space Program einen Stern modelliert:

Bildbeschreibung hier eingeben

Wie kann ich diesen Effekt erzielen?

Ethan Bierlein
quelle
1
Ich weiß nichts über Unity, aber es sieht so aus, als müssten Sie in einem "additiven" Mischmodus zeichnen.
Thane Brimhall
1
Sie könnten immer in diese Richtung gehen: shadertoy.com/view/XdBSDh
Alan Wolfe
4
Sie müssen viel spezifischer sein und zeigen, dass Sie Ihre Recherchen durchgeführt haben. Es gibt eine Fülle von Informationen zum Rendern von Sternen. Normalerweise verwenden Sie eine 2-D-Plakatwand mit Blick auf die Kamera, um die Korona über Ihrem generischen Stern zu rendern. Niemand kann Ihnen alles beibringen, um aus einer SE-Antwort einen realistisch aussehenden Stern zu machen. Hier ist ein gutes Tutorial aus dem Spiel Seed of Andromeda. seedofandromeda.com/blogs/51-procedural-star-rendering . Ein weiteres, gröberes Tutorial zu reddit, aber dennoch gute Infos seedofandromeda.com/blogs/51-procedural-star-rendering
Fuzzy Logic
Ändern Sie in Unity den Shader des Materials in "Additiv" (das befindet sich im Untermenü "Partikel", da der Mischmodus "Additiv" hauptsächlich für Partikel geeignet ist).
jhocking
1
@ Shane Zwei Jahre später, aber besser spät als nie, denke ich. Cheers .. reddit.com/r/gamedev/comments/33xuyj/procedural_star_rendering
Fuzzy Logic

Antworten:

25
  • Verwenden Sie eine animierte Textur. * Es gibt einige gute im Laden für <$ 10.
  • Fügen Sie einen Heiligenschein hinzu. Sie können das Partikelsystem oder nur eine transparente Leuchttextur auf einer Werbetafel vor der Sonne mit einem Skript verwenden, um die Textur neu zu positionieren, wenn sich die Kamera bewegt. Dadurch werden die Kanten des Kugelmodells ausgeblendet, sodass Sie ein unteres Poly-Modell verwenden können, und es sieht gut aus.
  • Drehen Sie die Sonne langsam.
  • Partikelsystem für Eruptionen verwenden.
  • Verwenden Sie einen benutzerdefinierten Shader, damit die Kanten gut mit dem Lichthof übereinstimmen (multiplizieren Sie die Normale mit dem Kameravektor, um Kanten zu finden).

Das animierte GIF zeigt zuerst eine statische Textur, gefolgt von einer Reihe von Ergänzungen, in der Reihenfolge:

  1. Animierte Textur
  2. Hellen Sie die Ränder der Kugel auf der Grundlage von Normalen auf
  3. Fügen Sie eine transparente Plakatwand mit Kameraausrichtung und einem weiß / gelben Lichthof hinzu
  4. Partikel, die sich von der Mitte nach außen bewegen und dann verblassen
  5. Fügen Sie 2 transparente Werbetafeln hinzu, die der Kamera zugewandt sind und sich entlang der Kameraachse in entgegengesetzte Richtungen drehen.

Eine Sonne bauen

Verwenden Sie bei der animierten Textur unbedingt Mipmaps, da diese bei einigen Entfernungen schrecklich aussehen können. Langsame Frameraten in der Textur (10 fps) sind in Ordnung, wenn Sie von weitem auf eine Sonne schauen. Wenn Sie sich jedoch nähern, möchten Sie möglicherweise auch eine höhere Framerate verwenden. Wenn Sie keine Textur mit hoher Framerate haben oder den Videospeicher nicht für eine verschwenden können, können Sie einen benutzerdefinierten Shader verwenden, um jedes zweite Pixel basierend auf dem vorherigen und dem nächsten Bild zu interpolieren.

Durch Ändern der Verwendung von Farbton / Sättigung / Wert im Shader können Sie die folgenden Ergebnisse erzielen, ohne die Textur ändern zu müssen:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben [Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Ich habe mit einem billigen Modell aus dem Laden angefangen, damit ich die animierte Textur nicht machen musste. Andererseits bedeutet dies, dass ich das aktuelle Fertighaus nicht teilen kann, da die Textur gekauft wurde.


* Alternativ können Sie 2D-Rauschen auf einer Kugel abbilden und 3D-Rauschen für die Zeitdimension verwenden oder 4D-Rauschen verwenden, wenn Sie das Abbilden nicht durchführen möchten und die Leistung schonen können.

Peter - Unban Robert Harvey
quelle
3
Wenn Sie es realistisch anstreben: Die Ränder eines Sterns sind tatsächlich nicht heller, aber weniger hell als die Mitte der Scheibe.
Planetenbauer
1
@planetmaker Auf jeden Fall. Mit einem weißen oder weißlichen Heiligenschein und Details in der Mitte lässt sich jedoch ein cooler Effekt leichter erzielen. Es kann auch anders gemacht werden, aber ich denke, es ist auf
jeden
10

Außer den von Vadim erwähnten Particale-System- und Halo-Effekten können Sie Ihren eigenen Shader-Effekt erstellen. Es gibt eine Einführung in Shader für Unity und die Möglichkeiten sind endlos .

Madmenyo
quelle
Ich weiß nicht, ob Sie diesen Shader gefunden oder erstellt haben, aber er ist absolut großartig.
Draco18s
Nein, ich habe den Shader nicht erstellt. Leider sind meine Kenntnisse über Shader ziemlich grundlegend. Aber ich stimme zu, es ist wunderschön;).
Madmenyo
2

Versuchen Sie es mit einem Partikelsystem und einem Halo-Effekt. Sie können dem Stern auch ein Licht hinzufügen und einen Blüteeffekt auf Ihre Kamera anwenden.

Vadim Tatarnikov
quelle