Dynamic light 2D

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Avatar de l’utilisateur
Axel74
Messages : 100
Inscription : 23 Mai 2014 16:47
Localisation : Thonon - Lyon

Dynamic light 2D

Message par Axel74 » 24 Mai 2017 07:15

Salut tout le monde,

J'aimerai optimiser mon projet qui est en 2D où j'utilise un point light comme en 3D, avec quelque mesh renderer, pour effectuer des ombres dynamiques.

J'avais pas vraiment prévu de prendre un asset pour ce projet... Mais finalement j'en ai trouvé un qui pourrai bien m'aider à ce sujet :
2DDL Pro : 2D Dynamic Lights and Shadows

Il y a une version gratuite que j'ai pu essayer. Alors le rendu en soit n'est pas mauvais mais il ne fonctionne pas parfaitement. En longeant des vertices des fois le rayon qui focalise une arrête de mon collider en 2D ne continu pas pour "simuler" la lumière.

Voilà un aperçu pour faire une idée ce que je vous décrit :

Lorsque ça ne "bug" pas Image

Lorsque ça "bug" Image

On peut constater que la lumière simulée en rose est celle effectué par le script qui vient de l'asset en question, qui simule un dynamic light en 2D, et la lumière blanche par un point light.


Ce qui m'amène aux questions suivantes :
- Est ce que l'utilisation d'un tel script optimisera beaucoup les performances de mon jeu surtout pour un mobile ?
- Si oui, avez vous un avis sur l'asset qui est payant ? Ayant vu la vidéo de présentation j'ai pu m'apercevoir que la lumière n'était pas très bien simulée. Lorsqu'il effectue un mouvement vers le bas ou le haut, sur un des vertices (objet plan) en haut ou en bas, on voit la lumière simulée qui n'est pas très bien "rafraîchi" par l'Update. J'ai donc un doute sur la qualité du rendu que j'attend si je venais à utiliser cet asset.
- Connaissez vous un asset recommandable qui correspond à ce que je cherche ?
Douille ou l'ail que pote étaux ? Yes I like.

Avatar de l’utilisateur
Axel74
Messages : 100
Inscription : 23 Mai 2014 16:47
Localisation : Thonon - Lyon

Re: Dynamic light 2D

Message par Axel74 » 24 Mai 2017 11:20

En rose c'est la simulation du dynamic light 2D et en blanc c'est un point light. Les deux sources de lumière (2D et point light) viennent du même endroit. La scène est complètement dans le noir si ce n'est pas éclairé.

Quand ça fonctionne correctement
Image

Quand ça bug pour je ne sais quelle raison le rayon tangent au coin d'un obstacle s'arrête en se point (suffit d'un déplacement pour que ça change)
Image

et une image avec la scène volontairement éclairée pour que vous voyez à quoi elle ressemble
Image
Douille ou l'ail que pote étaux ? Yes I like.

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

Re: Dynamic light 2D

Message par Alesk » 25 Mai 2017 09:32

Pour les performances et la qualité, aucune idée...

Par contre pour le bug, il faudrait fouiller dans le code de l'asset que tu as récupéré. Je vais y jeter un oeil ... Mais ce serait pratique si tu pouvais partager ta scène de test pour reproduire la même situation.

EDIT : j'ai regardé le code de l'asset... C'est pas super optimisé, mais je n'ai pas trouvé d'erreur majeure dedans non plus. Donc il faudrait vraiment pouvoir regarder ce qu'il se passe dans ta scène d'exemple.

Avatar de l’utilisateur
Axel74
Messages : 100
Inscription : 23 Mai 2014 16:47
Localisation : Thonon - Lyon

Re: Dynamic light 2D

Message par Axel74 » 26 Mai 2017 14:02

Merci de ta réponse Alesk, j'avais un peu fouillé dans le code aussi, compréhensible mais un peu dur pour mon niveau. J'avais refait une scène de démonstration et finalement je me suis rendu compte que ce bug apparaissait lorsque l'objet qui hérite de ce script était en rotation. Même si c'était une rotation en axe Z, car il était child de mon joueur.

J'ai fais plusieurs essais dans quelque scène de mon jeu et je pense que je vais oublier l'idée de ce 2D dynamic light. Même le script de l'asset qui est payant me laisse penser que j'aurai les mêmes bug que je vous présente ci dessous. Voilà pourquoi je vais rester sur un point light qui fonctionnera sans problème..


Bug d'ombre dans le coin car objets superposé :aille: (en remarquant bien, les rayons se focalisent uniquement sur les coins de mes polygon collider 2D)
Image

Bug d'ombre que je pourrai pas vous expliquer :aille2:
Image

Concernant la superposition d'objet, même si c'est juste chouilla un demi millimètre, peu importe, vous aurez des bugs d'ombre qui vont faire effectuer des changement d'angle d'un coup brutal, votre ombre aura l'air de faire une crise d’épilepsie ... Si c'est une superposition complète alors vous aurez le bug comme sur la première image.
Il y a probablement d'autre script qui fonctionnent mieux, j'en ai avait déjà essayé un autre qui ne m'avait coûté que 1€ j'ai tenté le coup. C'est l'asset Light Cube. Il bug également, différemment, mais pas possible d'avoir quelque chose de propre également dans mes conditions de jeu.


Ce genre de script convient bien pour des polygone collider 2D uniquement qui sont séparés les uns des autres et rien d'autre, à moins de les coller entre eux en prêtant soigneusement attention qu'ils ne soient pas superposés comme ci dessous :

Image


Je suis resté sur la question à faire plusieurs essais depuis ces 2 derniers jours et ça ne me convient pas du tout surtout que je ne travail pas qu'avec des rectangle. Ça m'a posé des problèmes régulièrement en fonction de la disposition des objets d'un scène à l'autre...

Sinon dans l'idée c'est un bon asset, mais si il présente les mêmes bug que sur le payant qui ne fait que proposer quelques options supplémentaires, je dirai que c'est à éviter pour certains projet. A vous d'en juger en faisant des essais dans les conditions de l'architecture de votre jeu et de ses besoins, ce n'est que mon avis.
Douille ou l'ail que pote étaux ? Yes I like.

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

Re: Dynamic light 2D

Message par Alesk » 30 Mai 2017 13:42

Si le bug ne se produit que lorsque l'objet qui supporte le script est en rotation, c'est très simple à contourner ou à rectifier.

Il suffit de mettre le script sur un autre objet qui ne pivotera jamais et qui se contentera de se caler sur la position de ton objet principal qui lui pourra pivoter comme il veut.

Sinon il suffit de rectifier le code pour que ça ne déconne plus sur un objet en rotation ... je vais y jeter un oeil ce soir ;)

Répondre

Revenir vers « Unity le logiciel »