Page 1 sur 2

Empecher le flickering dans l'affichage des étoiles dans une galaxie

Publié : 19 Août 2018 00:19
par FriteCoca
Salut, j'ai fait un script pour crée une galaxie automatiquement mais le problème est qu'à une certaine distance je me heurte au problème du flickering.

j'ai voulus faire comme le jeux ci-dessous ( skywanderer ), c'est à dire que chaque étoiles dans le ciel est un endroit ou il est possible d'aller.

http://www.noelshack.com/2018-33-7-1534 ... apture.png

Image

Dans mon cas ( Screenshots ci-dessous ), à longue distance seul une lumière crée via le component "Light" est visible. Une fois à distance raisonnable, j'active les différents MeshRenderer pour représenter les planètes/soleil.

http://www.noelshack.com/2018-33-7-1534 ... ran-31.png
Image

Mais à chaque mouvement, les étoiles distante commencent à scintiller ( le flickering ). Malgré mes recherches je n'ai pas trouver de solution autre que diminuer la distance de vue ( grossièrement résumé ) ce qui fait perdre l’effet voulu, c'est à dire qu'en regardant la galaxie, vous voyez une étoile à 2000AL et vous pouvez y allez.

Merci.

Re: Empecher le flickering dans l'affichage des étoiles dans une galaxie

Publié : 19 Août 2018 07:26
par Alesk
Salut,

Tu pourrais essayer d'atténuer l'intensité des étoiles distantes, jusqu'à les faire totalement disparaître quand elles sont trop éloignées.

Re: Empecher le flickering dans l'affichage des étoiles dans une galaxie

Publié : 19 Août 2018 15:14
par Liven
Tu dis que passé une certaines distance, tu remplace tes sprites par des points de lumière, du coup tu dois te retrouver avec plein de light dans ta scène. Je me demande si Unity est adapté pour un si grand nombre.

J'imagine que tu est déjà en deferred et pas en forward.

Après vérifie les trucs comme le pixel light (normalement c'est pas ça, mais des fois on a des surprises) et autres options liés aux sources de lumière car c'est une utilisation particulière que tu en fait là.

Sinon t'as essayé de passe par un matérial en HDR avec un petit bloom pour les étoiles éloignée? Ou alors creuser du coté de shader graph voir si tu peux pas des crafter quelque chose sur mesure pour tes besoins car vu le nombre d'étoiles que tu va avoir en arrière plan, utiliser des lumières risque d'être un peu tendu (ce n'est que mon avis, je n'ai pas essayer).

sinon tu peux jeter un oeil là dessus tu y trouvera peut être à manger (si ce n'est pas sur ce problème, ce sera peut être sur un autre) https://answers.unity.com/questions/125 ... -away.html

Re: Empecher le flickering dans l'affichage des étoiles dans une galaxie

Publié : 19 Août 2018 15:45
par Alesk
Liven a écrit :
19 Août 2018 15:14
Tu dis que passé une certaines distance, tu remplace tes sprites par des points de lumière, du coup tu dois te retrouver avec plein de light dans ta scène. Je me demande si Unity est adapté pour un si grand nombre.
C'est surtout totalement inutile et contre productif d'utiliser des lights pour faire ça...

Re: Empecher le flickering dans l'affichage des étoiles dans une galaxie

Publié : 19 Août 2018 22:09
par FriteCoca
Salut, j'ai essayé différentes solutions mais j'ai toujours le même problème.

Mais merci quand même pour l'info sur les light, le jeux est beaucoup plus fluide.

je vais tenter demain de remplacer par une sprite les étoiles lointaines.

Si vous avez d'autres astuces je suis preneur.

Re: Empecher le flickering dans l'affichage des étoiles dans une galaxie

Publié : 19 Août 2018 22:39
par Alesk
Combien as-tu d'étoiles à afficher dans ton fond cosmique ? Et comment veux-tu qu'elles soient rendues ? juste un point blanc ou bien avec un halo / flare ?

Re: Empecher le flickering dans l'affichage des étoiles dans une galaxie

Publié : 20 Août 2018 23:48
par FriteCoca
Alesk a écrit :
19 Août 2018 22:39
Combien as-tu d'étoiles à afficher dans ton fond cosmique ? Et comment veux-tu qu'elles soient rendues ? juste un point blanc ou bien avec un halo / flare ?
J'ai 20k etoiles que je veux afficher avec un Holo, et un gameobject quand je suis proche.

Re: Empecher le flickering dans l'affichage des étoiles dans une galaxie

Publié : 21 Août 2018 21:31
par Alesk
ça fait beaucoup d'étoiles !

Il faudrait voir si tu peux les intégrer dans une texture d'arrière plan. Quand une étoile est trop éloignée, elle est dans la texture, quand elle est proche, tu l'efface de la texture et tu en fais un gameobject.

Une autre méthode plus simple serait d'utiliser un nuage de points et un shader pour les colorer.

Re: Empecher le flickering dans l'affichage des étoiles dans une galaxie

Publié : 23 Août 2018 22:55
par FriteCoca
Salut, desoler d'avoir fait le mort.

Peux-tu m'expliquer en detail comment ajouter une image au background ?

Je n'ai pas tres bien compris.

Re: Empecher le flickering dans l'affichage des étoiles dans une galaxie

Publié : 24 Août 2018 14:01
par Alesk
Yo !

Pour une image d'arrière plan, il faut utiliser soit une sphère, soit un cube en utilisant respectivement une texture en projection sphérique ou cubique.
Unity gère déjà directement le mapping cubique pour les environnements, donc autant s'en servir : https://docs.unity3d.com/Manual/class-Cubemap.html

Il y a aussi cette fonction qui te permet de générer un cubemap à partir d'une scène : https://docs.unity3d.com/ScriptReferenc ... bemap.html

C'est surtout ça qui va te servir à mon avis.

Il faut utiliser une caméra dédiée au rendu dans le cube map (en filtrant les objets qu'elle peut voir grâce aux layers d'unity) et ensuite trouver la bonne combine pour rajouter ou enlever des étoiles dans le cube map.

Ajouter une étoile est relativement simple, il suffit de placer une sphère à la position de l'étoile et de refaire le rendu du cube map, par contre pour la retirer il faut l'effacer et faisant gaffe aux éventuelles étoiles affichées à proximité qu'il ne faut pas effacer... faut tester plusieurs approches pour voir laquelle serait la plus efficace.

L'intérêt de cette méthode est d'avoir toutes les étoiles lointaines rendues dans une texture qui ne demande rien en temps de calcul, donc on gagne un max de performances.