Forum de la communauté SFML

Général => Projets SFML => Discussion démarrée par: Gregouar le Avril 08, 2012, 11:47:11 am

Titre: Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Avril 08, 2012, 11:47:11 am
Salut à tous !

Après quelques heures de travail je viens vous montrer mes avancées sur un projet de moteur d'éclairage par pixel pour univers en 2.5D.

Pour ceux qui l'ignorent, on appelle 2.5D des graphismes réalisés avec des logiciels de modélisation 3D mais sont on utilise que des rendus en 2D par après. C'est une technique qui fut fort utilisée par le passé dans le milieu du jeu-vidéo car les anciens ordinateurs n'étaient pas assez puissant que pour gérer un univers 3D.

J'aime beaucoup travaillé en 2.5D mais j'ai voulu mettre cette technique un peu en jour en lui incorporant un zbuffer (permettant d'afficher les objets dans n'importe quel ordre et de les faire s'intersecter en 3D), un éclairage par pixel et une projection d'ombre (ne marchant que sous certaines conditions étant donné qu'en 2.5D il nous manque de l'information sur la géométrie complète des objets).

Voici quelques images du résultat actuel :

Pixel lighting :
(http://www.holyspirit.fr/Autres/pixel_lighting/demo_lighting.png)

Ombres :

Sans :
(http://www.holyspirit.fr/Autres/pixel_lighting/demo_shadow_without.png)

Avec:
(http://www.holyspirit.fr/Autres/pixel_lighting/demo_shadow.png)

Z-buffer :
(http://www.holyspirit.fr/Autres/pixel_lighting/demo_zbuffer.png)

L'abbaye entière n'est composée que d'un seul morceau.

Je vous tiendrai au courant de mes avancées et je posterai sur mon blog (http://alpha-arts.net/blog/) des explications plus détaillées des techniques que j'utilise.

Vous pouvez déjà trouver un premier article sur l'éclairage par pixel : http://alpha-arts.net/blog/articles/view/43/pixel-lighting
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Avril 08, 2012, 02:53:47 pm
Et deuxième billet disponible : http://www.alpha-arts.net/blog/articles/view/44/z-buffer-2-5d
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: lezebulon le Avril 14, 2012, 01:45:40 pm
Salut,
est-ce que tu penses que c'est adaptable à une vue 2D vue de haut (enfin le classique RPG 2D quoi)?
Sinon, comment est-ce que tu génères tes normales depuis le logiciel 3D?
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Avril 14, 2012, 07:29:14 pm
C'est adaptable à n'importe quelle vue 2D normalement.
Et yep, les normales et la heightmap sont générées avec un logiciel 3D.
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Mai 12, 2012, 03:49:26 pm
Nouveau billet sur les ombres.  8)

http://alpha-arts.net/blog/
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Zinlibs le Mai 12, 2012, 07:37:28 pm
Gregouar je t'aime <3  :D
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: charlesfire le Mai 13, 2012, 01:31:13 am
Est-ce que c'est utilisable en 3d?
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Mai 13, 2012, 10:20:56 am
Non, justement tout le principe du moteur c'est de faire un éclairage 3D dans une scène 2D.
Maintenant, pour l'illumination ce n'est jamais qu'une normal map, ça tu peux le faire en 3D sans problème.
Par contre, pour les ombres, non, il faut utiliser autre chose, mais en cherchant un petit peu sur le net tu devrais aisément trouver des articles sur des techniques plus ou moins faciles à mettre en place.
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: kamui le Mai 14, 2012, 03:21:24 pm
Bonjour,

je ne fais que passer ^^

besoin d'un moteur graphique d'éclairage pour mon jeux alors je viens faire mes petites amplettes...  ;D

Ah ! Zinlibs, tu m'avais parler d'adapter ton système à SFML2.0RC et C++11, si tu pouvais aussi l'adapter à ce nouveau système xD... (je sais ça fait énormément de boulot mais bon...)


Sinon Gregouar t'aurais pas dans tes tiroirs une librairie qui permet de l'utiliser un peu plus haut niveau ton moteur ?

En tout cas encore félicitations pour ton boulot ! ;D 8) *clap*UN-BE-LIE-VA-BLE*clap* 8) ;D

Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Zinlibs le Mai 14, 2012, 09:54:51 pm
Je suis dessus kamui, j'en parlerai très prochainement !  ;)
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Mai 14, 2012, 10:17:06 pm
Kamui, ke peux voir pour rendre mon code un peu plus user-friendly que tu puisses facilement l'adapter si tu le souhaites.

Zinlibs, tu veux que je t'envoie mes sources actuelles ?
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Zinlibs le Mai 15, 2012, 12:18:37 am
Oui je veux bien Gregouar, ça m'aiderait énormément. Merci. :)
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: kamui le Mai 15, 2012, 10:38:19 am
Merci de ton aide Gregouar, c'est très sympa de ta part de fournir tes sources.

Merci à toi aussi Zinlibs encore une fois, vous me faites gagner un temps précieux, et votre nom ne sera pas oublié si ce projet (Xeenos) arrive un jour à terme ;). Laurent aussi merci, mais toi t'as déjà assez de renommé comme ça  :P  ;D

juste une question Gregouar : dans les images que tu montre c'est une vue 3/4 ou moins ?

juste une question (encore) : j'ai dl le résultat sur ton deuxieme billet, je voulais savoir si les 3 images pour chaque objet sont génrées par ton code ou s'il faut les faire soi-même (si tel est le cas (même si je ne penses pas c'est juste au cas où), quellle technique recommandes-tu ? ) Niveau performance, en mémoire ça se ressent ? et ton moteur a-t'il un coup (évidemment oui mais je veux dire..) important sur la fluidité du rendu ? (encore une fois je penses que non mais profites-en pour en faire l'éloge ;) )

Bon bah tout ce m..dier ça fait plus d'une question : la formalité "juste une question" était peut-être mal-convenue ;D

Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Mai 15, 2012, 02:41:57 pm
C'est 1/2 mais c'est adaptable à n'importe quelle vue du genre.

Elles sont générées en 3DS max, je vais expliquer dans un prochain billet comment je fais. ;o)

Niveau mémoire ça va, c'est surtout le traitement des pixels qui bouffent des perfs. Et oui, il a un très grand cout même...
Titre: Re : Re : Moteur graphique d'éclairage 2.5D
Posté par: kamui le Mai 15, 2012, 03:06:40 pm
C'est 1/2 mais c'est adaptable à n'importe quelle vue du genre.

Elles sont générées en 3DS max, je vais expliquer dans un prochain billet comment je fais. ;o)

Niveau mémoire ça va, c'est surtout le traitement des pixels qui bouffent des perfs. Et oui, il a un très grand cout même...

ok, donc :
 - il faut les dessiner en 3D obligatoirement c'est noté (bon heureusement notre graphiste a de la bouteille)
 - il faut obligatoirement multi-threader son appli pour se servir de ton moteur ? si on veut qu'il soit utilisable dans un jeu sans qu'il bouffe toutes les ressources ?
 - tu conseillerais de n'utiliser que ton précédent moteur pour l'instant ? (parce que holyspirit avait l'air de bien tourner niveau perf..)
 - 1/2 c'est noté (non je demandais parce qu'on se tate encore sur l'angle de notre jeu, et c'est une information un peu indispensable à notre graphiste .  ;D), cet angle me plait bien ^^
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Mai 15, 2012, 07:06:08 pm
Non, le multi-thread n'apportera rien je crois.
Ce n'est pas vraiment comparable, ils ne permettent pas du tout la même chose..
Par contre, si tu prends juste l'éclairage sans les ombres, là les perfs sont déjà bien meilleures.
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: kamui le Mai 15, 2012, 08:00:22 pm
sans les ombres, c'est moins intéressant.

Tu comptes l'intégrer à HolySpirit ?
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Mai 15, 2012, 08:05:16 pm
Non, ça demanderait de refaire tous les rendus graphiques, trop pénible.
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Zinlibs le Juillet 07, 2012, 05:57:23 pm
Voilà, c'est intégré avec succès dans Zoom. Merci encore à toi Grégoire, et bien sûr je n'ai pas oublié de te citer !  ;D
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Juillet 22, 2012, 11:03:55 am
Je suis encore en train de travailler dessus, j'ai apporté pas mal d'améliorations au niveau de la gestion de la hauteur des objets pendant mes vacances et j'ai amélioré un peu les ombres.
Je t'enverrai ma nouvelle version en t'expliquant un peu les changements si ça t'intéresse.
Mais ça pourrait être intéressant d'en discuter via Skype ou msn ou autre. ;-)
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: danman le Juillet 22, 2012, 11:58:39 pm
Hey, j'ai pas regardé en détail, mais j'ai trouvé ca (totalement au hasard) : http://www.youtube.com/watch?v=U1Ahytyuwgg&feature=related
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Gregouar le Juillet 23, 2012, 12:28:50 am
C'est que je ne suis pas le seul à développer ce genre de choses.  ;)
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: lezebulon le Mai 24, 2014, 01:58:11 pm
hello! je remonte le sujet parce que je vois que les liens du 1er post ne marchent plus...
est-ce que quelqu'un a une idée de comment il faisait pour les ombres ?
merci!
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Excellium le Mai 24, 2014, 05:39:43 pm
J'avoue, ça a complètement disparu. Je peux t'aider si tu veux, j'ai travaillé dessus (Zinlibs était mon ancien pseudo). Voici quelques sources incluant ce moteur : https://github.com/Zinlibs/Zoom (https://github.com/Zinlibs/Zoom)
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: lezebulon le Mai 28, 2014, 11:26:44 pm
je regarder et c'est très cool par contre est-ce que tu avais compris à l'époque comment ça fonctionnait ? les shaders sont assez dégeux et impossible de comprendre ce qui est fait dans Sprite3d::draw
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Excellium le Mai 30, 2014, 04:50:47 pm
J'ai retrouvé les sources de Gregouar et son mail, on communique par MP, puis tu verras directement avec lui (j'ai des partiel à passer moi :p)
Titre: Re : Moteur graphique d'éclairage 2.5D
Posté par: Lolilolight le Juin 07, 2014, 09:57:03 pm
Ha justement je comptais essayer de faire un moteur d'éclairage par pixel en 2.5D pour mon framework car par vertex ce n'est pas toujours très beau. (en effet)

Pour la normal map ça va, pas de soucis, je vois comment faire j'ai pu généré automatiquement une heightmap et une normal map pour calculer l'éclairage des pixels via le multi-pass rendering.

Mais pour la projection des ombres (dans un shader) je sèche un petit peu et je n'ai plus aucune nouvelle de l'auteur du moteur donc, je pense que je vais regarder ton lien, merci.  :)