Comment puis-je modéliser une étoile?

22

J'essaie de modéliser une star dans Unity, et ça fonctionne, mais ce n'est pas idéal. Actuellement, j'utilise une grande sphère avec un matériau auto-éclairant contenant une texture d'étoile appliquée à sa surface et un projecteur pour créer l'effet de la lumière des étoiles, comme ceci:

entrez la description de l'image ici

Bien que cela fonctionne, il n'a pas l'air le plus beau. Je cherche un effet plus dans le sens de la façon dont Kerbal Space Program modélise une étoile:

entrez la description de l'image ici

Comment puis-je obtenir cet effet?

Ethan Bierlein
la source
1
Je ne connais pas Unity, mais on dirait que vous devez dessiner dans un mode de mélange "additif".
Thane Brimhall
1
Vous pouvez toujours aller dans cette direction: shadertoy.com/view/XdBSDh
Alan Wolfe
4
Vous devez être beaucoup plus précis et montrer que vous avez fait vos recherches. Il existe une pléthore d'informations pour le rendu des étoiles. En règle générale, vous utiliserez un panneau d'affichage 2D face à la caméra pour rendre la couronne au-dessus de votre étoile générique. Personne ne peut vous apprendre tout ce qui est en jeu pour créer une étoile réaliste sur une réponse SE. Voici un bon tutoriel du jeu Seed of Andromeda. seedofandromeda.com/blogs/51-procedural-star-rendering . Un autre tutoriel plus rude sur reddit, mais de bonnes informations néanmoins seedofandromeda.com/blogs/51-procedural-star-rendering
Fuzzy Logic
Dans Unity, changez le Shader of the Material en Additive (c'est sous le sous-menu Particle je pense, car le mode de mélange Additive est surtout utile sur les particules).
jhocking
1
@Shane Deux ans plus tard, mais mieux vaut tard que jamais je suppose. Cheers .. reddit.com/r/gamedev/comments/33xuyj/procedural_star_rendering
Fuzzy Logic

Réponses:

25
  • Utilisez une texture animée. * Il y en a de bonnes dans le magasin pour <10 $.
  • Ajoutez un halo. Vous pouvez utiliser le système de particules, ou simplement une texture de lueur transparente sur un panneau d'affichage devant le soleil avec un script pour repositionner la texture lorsque la caméra se déplace. Cela masque les bords aliasés du modèle de sphère, vous permettant d'utiliser un modèle de poly inférieur, et est joli.
  • Faites tourner le soleil, lentement.
  • Utilisez un système de particules pour les éruptions.
  • Utilisez un shader personnalisé pour faire correspondre les bords avec le halo (multipliez la normale avec le vecteur de la caméra pour trouver les bords).

Le gif animé montre d'abord une texture statique, suivie d'un certain nombre d'ajouts, dans l'ordre:

  1. Texture animée
  2. Éclaircir les bords de la sphère en fonction des normales
  3. Ajouter un panneau d'affichage transparent face à la caméra avec un halo blanc / jaune
  4. Particules, se déplaçant du centre vers l'extérieur, puis s'estompant
  5. Ajoutez 2 panneaux d'affichage "ray" transparents, face à la caméra et tournant le long de l'axe de la caméra dans des directions opposées.

Construire un soleil

Avec la texture animée, assurez-vous d'utiliser des mipmaps, ou cela semblera horrible à certaines distances. Les fréquences d'images lentes dans la texture (10 images par seconde) conviennent bien lorsque vous regardez un soleil de loin, mais lorsque vous vous rapprochez, vous pouvez également utiliser un taux d'images plus élevé. Si vous n'avez pas une texture à haute cadence d'images ou si vous ne pouvez pas gaspiller la mémoire vidéo pour une, vous pouvez utiliser un shader personnalisé pour interpoler tous les autres pixels en fonction de l'image précédente et suivante.

En changeant l'utilisation de Teinte / Saturation / Valeur à l'intérieur du shader, vous pouvez obtenir des résultats comme ceux-ci, sans jamais avoir à modifier la texture:

entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici [entrez la description de l'image ici entrez la description de l'image ici

J'ai commencé avec un modèle bon marché du magasin, donc je n'ai pas eu à faire la texture animée. D'un autre côté, cela signifie que je ne peux pas partager le préfabriqué actuel, car la texture est achetée.


* Alternativement, vous pouvez examiner la cartographie du bruit 2D sur une sphère et utiliser le bruit 3D pour la dimension temporelle, ou utiliser le bruit 4D si vous ne voulez pas faire la cartographie et pouvez épargner les performances.

Peter - Unban Robert Harvey
la source
3
Si vous visez à ce qu'elle soit réaliste: les bords d'une étoile ne sont en fait pas plus brillants mais moins brillants que le centre du disque.
planetmaker
1
@planetmaker Absolument. Mais un effet cool est plus facile à réaliser avec un halo blanc ou blanc et des détails au centre. Cela peut être fait dans l'autre sens, mais je pense que c'est un peu plus difficile de toute façon, regarder un soleil réaliste nous aveugle en permanence, donc nous ne voulons pas d'un soleil réaliste :)
Peter - Unban Robert Harvey
10

Autre que le système particulier et les effets de halo, Vadim a mentionné que vous pouviez créer votre propre effet de shader. Il y a une introduction aux shaders pour Unity et les possibilités sont infinies .

Madmenyo
la source
Je ne sais pas si vous avez trouvé ou créé ce shader, mais c'est absolument magnifique.
Draco18s
Non, je n'ai pas créé le shader, malheureusement mes connaissances sur les shaders sont assez basiques. Mais je suis d'accord, c'est magnifique;).
Madmenyo
2

Essayez d'utiliser un système de particules et un effet de halo. Vous pouvez également ajouter une lumière à l'étoile et avoir un effet de floraison sur votre appareil photo.

Vadim Tatarnikov
la source