Forum de la communauté SFML
Général => Projets SFML => Discussion démarrée 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
-
Et deuxième billet disponible : http://www.alpha-arts.net/blog/articles/view/44/z-buffer-2-5d
-
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?
-
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.
-
Nouveau billet sur les ombres. 8)
http://alpha-arts.net/blog/
-
Gregouar je t'aime <3 :D
-
Est-ce que c'est utilisable en 3d?
-
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.
-
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
-
Je suis dessus kamui, j'en parlerai très prochainement ! ;)
-
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 ?
-
Oui je veux bien Gregouar, ça m'aiderait énormément. Merci. :)
-
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
-
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...
-
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 ^^
-
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.
-
sans les ombres, c'est moins intéressant.
Tu comptes l'intégrer à HolySpirit ?
-
Non, ça demanderait de refaire tous les rendus graphiques, trop pénible.
-
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
-
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. ;-)
-
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
-
C'est que je ne suis pas le seul à développer ce genre de choses. ;)
-
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!
-
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)
-
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
-
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)
-
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. :)