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

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
FriteCoca
Messages : 17
Inscription : 16 Mai 2018 13:39

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

Message par FriteCoca » 19 Août 2018 00:19

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.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

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

Message par Alesk » 19 Août 2018 07:26

Salut,

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

Avatar de l’utilisateur
Liven
Messages : 268
Inscription : 30 Nov 2017 01:48

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

Message par Liven » 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.

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

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

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

Message par Alesk » 19 Août 2018 15:45

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...

FriteCoca
Messages : 17
Inscription : 16 Mai 2018 13:39

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

Message par FriteCoca » 19 Août 2018 22:09

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.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

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

Message par Alesk » 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 ?

FriteCoca
Messages : 17
Inscription : 16 Mai 2018 13:39

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

Message par FriteCoca » 20 Août 2018 23:48

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.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

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

Message par Alesk » 21 Août 2018 21:31

ç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.

FriteCoca
Messages : 17
Inscription : 16 Mai 2018 13:39

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

Message par FriteCoca » 23 Août 2018 22:55

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.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

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

Message par Alesk » 24 Août 2018 14:01

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.

Répondre

Revenir vers « Unity le logiciel »