Galdred
24/05/2015, 12h16
Coucou,
je développe un jeu indépendant en 3D isométrique :
http://i.imgur.com/jaOZS9O.png, (j'ai d'ailleurs ouvert un thread sur le forum, mais il a vite été enterré :http://forum.canardpc.com/threads/98005-A-venir-La-guerre-du-Zodiac-un-RPG-tactique-med-fan-avec-de-la-strat%C3%A9gie-dedans )
Comme vous pouvez le voir, cela manque cruellement d'ombres (ça donne l'impression que les personnages flottent), mais le problème des ombres en 3D iso est assez compliqué (vu qu'en fait, on est en 2D...).
Quelles techniques (ou lectures) pourriez vous me recommander?
A priori, ce que je voudrais faire :
Il y aurait une lumière diffuse + une lumière directionnelle ("soleil" en extérieur, et en intérieur, aucune justification sauf que c'est plus facile pour les ombres), et des sources de lumière ponctuelles (brasiers, chandelles...).
Je pensais faire en sorte que :
- Seuls les murs occultent toutes les sources de lumière (donc shadowmaps précalculées), et on calculera la quantité de lumière reçue partout à partir de la somme des intensités lumineuses de chaque source (qui dépendra de la distance et l'occultation). Cela nécessitera de traiter les murs comme des objets 3D à priori (base + heightmap), mais ils ont une hauteur fixe, donc c'est peu compliqué.
- Les persos et autres sprites (mobilier, arbres, ...) projetteront une ombre (sous forme de sprite obtenu par une transformation du sprite initial correspondant à sa projection sur le sol), uniquement dans la direction de la lumière directionnelle (donc la direction lumineuse est fixée pour chaque niveau, et on "colle" le sprite correspondant à cette direction).
Mais la projection des ombres de persos sur les murs poserait problème : comment faire (sans trop d'opérations GPU compliquées) pour qu'on n'ait pas l'impression que le mur est dans la même direction que le sol? ou que le mur n'est pas affecté par l'ombre des personnages ou des arbres.
Une autre méthode serait de créer des heightmaps pour les sprites également, et de faire les calculs d'occulsion complets, mais il me semble compliqué de le faire à partir de sprites 2D complexes (personnages).
Vous connaissez des livres ou articles détaillant ce genre de techniques (utilisées dans Diablo 2, et Nox il me semble, et c'est à peu près tout)?
je développe un jeu indépendant en 3D isométrique :
http://i.imgur.com/jaOZS9O.png, (j'ai d'ailleurs ouvert un thread sur le forum, mais il a vite été enterré :http://forum.canardpc.com/threads/98005-A-venir-La-guerre-du-Zodiac-un-RPG-tactique-med-fan-avec-de-la-strat%C3%A9gie-dedans )
Comme vous pouvez le voir, cela manque cruellement d'ombres (ça donne l'impression que les personnages flottent), mais le problème des ombres en 3D iso est assez compliqué (vu qu'en fait, on est en 2D...).
Quelles techniques (ou lectures) pourriez vous me recommander?
A priori, ce que je voudrais faire :
Il y aurait une lumière diffuse + une lumière directionnelle ("soleil" en extérieur, et en intérieur, aucune justification sauf que c'est plus facile pour les ombres), et des sources de lumière ponctuelles (brasiers, chandelles...).
Je pensais faire en sorte que :
- Seuls les murs occultent toutes les sources de lumière (donc shadowmaps précalculées), et on calculera la quantité de lumière reçue partout à partir de la somme des intensités lumineuses de chaque source (qui dépendra de la distance et l'occultation). Cela nécessitera de traiter les murs comme des objets 3D à priori (base + heightmap), mais ils ont une hauteur fixe, donc c'est peu compliqué.
- Les persos et autres sprites (mobilier, arbres, ...) projetteront une ombre (sous forme de sprite obtenu par une transformation du sprite initial correspondant à sa projection sur le sol), uniquement dans la direction de la lumière directionnelle (donc la direction lumineuse est fixée pour chaque niveau, et on "colle" le sprite correspondant à cette direction).
Mais la projection des ombres de persos sur les murs poserait problème : comment faire (sans trop d'opérations GPU compliquées) pour qu'on n'ait pas l'impression que le mur est dans la même direction que le sol? ou que le mur n'est pas affecté par l'ombre des personnages ou des arbres.
Une autre méthode serait de créer des heightmaps pour les sprites également, et de faire les calculs d'occulsion complets, mais il me semble compliqué de le faire à partir de sprites 2D complexes (personnages).
Vous connaissez des livres ou articles détaillant ce genre de techniques (utilisées dans Diablo 2, et Nox il me semble, et c'est à peu près tout)?