[n3xt-D] un moteur pour PureBasic
En fait ce qui m'intéresse avec les sprites, c'est de continuer a faire de la 2D avec des effets moderne que je n'ai jamais utilisé, comme les transparences (eau, éclaires), les rotations, positions Z, effets de lumières (laser qui traverse l'écran), etc. Et utiliser une caméra pour "zommer" ou faire des rotations (comme les aiguilles d'une montre) offre des possibilités immenses ! Voilà, c'est ce qui m'éclaterai de faire !
Dans le temps, c'était pas sous purebasic mais je suis sur que équivalent existe aussi dans ce cas, j'utilisais un moteur 2D normal, seulement au lieu de transférer la mémoire tampon (qui servait à stoker l'image finale) à l'adresse mémoire vidéo, je la transférait dans l'adresse mémoire d'une texture destiné à être appliquée sur un simple polygone.
En fonction de la focale de la camera on pouvais calculer les dimensions du polygone et la distance Z qu'il devait avoir pour qu'il remplisse tout le champ de vision de la camera.
Avec ce procédé je pouvais zoomer, tourner, superposer des plans qui bénéficiaient d'effets de transparence et/ou d'une couleur invisible.
Avantage ou inconvénient de ce procédé, le scrolling donnait un aspect un peu baveux, un peu comme une nintendo nes sur la télé, et les zoom bénéficiaient eux d'un lissage qui limite l'effet gros cube (dans turtle in time sur SuperNes les projections d'adversaires étaient ultra pixelisés, avec ce procédé ça serrait un peu plus joli).
Maintenant ce procédé fonctionne bien je trouve pour les jeux retro type Nes, SuperNes, Megadrive et autre vieilles bornes d'arcade, je ne sais pas si c'est dans cet objectif que tu te lance ni même si des procédés plus pratiques ou performants ont étés trouvés depuis dans le milieu amateur.
Edit : J'ai fait un bref tour dans la doc, on dirais que la focale se règle avec la commande iCameraFOV, après pour la création d'un polygone un des premiers exemples inclus avec ce moteur importé t'expliques tout. Reste plus qu'a générer ton image dans une mémoire tampon et la transférer en guise de texture sur ton poly et le tour est joué on dirais.
En fonction de la focale de la camera on pouvais calculer les dimensions du polygone et la distance Z qu'il devait avoir pour qu'il remplisse tout le champ de vision de la camera.
Avec ce procédé je pouvais zoomer, tourner, superposer des plans qui bénéficiaient d'effets de transparence et/ou d'une couleur invisible.
Avantage ou inconvénient de ce procédé, le scrolling donnait un aspect un peu baveux, un peu comme une nintendo nes sur la télé, et les zoom bénéficiaient eux d'un lissage qui limite l'effet gros cube (dans turtle in time sur SuperNes les projections d'adversaires étaient ultra pixelisés, avec ce procédé ça serrait un peu plus joli).
Maintenant ce procédé fonctionne bien je trouve pour les jeux retro type Nes, SuperNes, Megadrive et autre vieilles bornes d'arcade, je ne sais pas si c'est dans cet objectif que tu te lance ni même si des procédés plus pratiques ou performants ont étés trouvés depuis dans le milieu amateur.
Edit : J'ai fait un bref tour dans la doc, on dirais que la focale se règle avec la commande iCameraFOV, après pour la création d'un polygone un des premiers exemples inclus avec ce moteur importé t'expliques tout. Reste plus qu'a générer ton image dans une mémoire tampon et la transférer en guise de texture sur ton poly et le tour est joué on dirais.
Il me semble que les sprites font parti de la 3D et que justement ils sont fait pour pouvoir les utiliser avec pleins d'effets. Je pense à DEAD SPACE par exemple, ou toutes les fumées/poussières sont des images en 2D, des sprites donc. Après ça ressemble aux "bilboards", mais je ne sais pas si les effets se traitent comme les sprites. Enfin, je peux me tromper, tmyke pourra peut-être m'éclairer là-dessus 

-
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
A l'heure actuelle, la gestion des sprites est très limité au niveau de N3XTD. Je le developpe petit à petit.
(encore une ou deux semaines).
Il s'agit de Sprite3D dans un premier temps, donc destiné à s'insérer dans les scenes, comme pour constituer
effectivement par exemple des billboard, ou encore aussi en queue de LOD sur les terrain pour la végétation
par exemples, les particules sont en quelques sorte une extension de l'utilisation de sprite3D.
Les sprite2D, viendront après, il s'agit d'une adaptation vers un environnement 2D des sprites 3D.
Afficher un sprite 2D revient à afficher un quad (2 triangles formant un rectangle) texturé orienté face à la caméra,
en projection orthogonale pour éviter les effets de perspective, et Z-buffer désactivé (donc gestion de l'ordre d'affichage).
Globalement, c'est ça pour résumer et faire court.
On profite donc aussi de tous les effets modernes connu en 3D sur ces éléments, destinés à de la 2D, y compris pourquoi
pas l'emploi de shaders.
(encore une ou deux semaines).
Il s'agit de Sprite3D dans un premier temps, donc destiné à s'insérer dans les scenes, comme pour constituer
effectivement par exemple des billboard, ou encore aussi en queue de LOD sur les terrain pour la végétation
par exemples, les particules sont en quelques sorte une extension de l'utilisation de sprite3D.
Les sprite2D, viendront après, il s'agit d'une adaptation vers un environnement 2D des sprites 3D.
Afficher un sprite 2D revient à afficher un quad (2 triangles formant un rectangle) texturé orienté face à la caméra,
en projection orthogonale pour éviter les effets de perspective, et Z-buffer désactivé (donc gestion de l'ordre d'affichage).
Globalement, c'est ça pour résumer et faire court.
On profite donc aussi de tous les effets modernes connu en 3D sur ces éléments, destinés à de la 2D, y compris pourquoi
pas l'emploi de shaders.

Force et sagesse...
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
avec un sprite3D, pour faire un zoom propre, ben tu prend un image 128*128 que tu affiche en 64*64, et tu zoom jusquà 128*128. Simple mais efficace.Jenova a écrit : un peu comme une nintendo nes sur la télé, et les zoom bénéficiaient eux d'un lissage qui limite l'effet gros cube (dans turtle in time sur SuperNes les projections d'adversaires étaient ultra pixelisés, avec ce procédé ça serrait un peu plus joli).
Maintenant ce procédé fonctionne bien je trouve pour les jeux retro type Nes, SuperNes, Megadrive et autre vieilles bornes d'arcade, je ne sais pas si c'est dans cet objectif que tu te lance ni même si des procédés plus pratiques ou performants ont étés trouvés depuis dans le milieu amateur.
On peut utiliser de grandes images( par rapport à une famicom ce sont des images gigantesques), car nos PC ne manquent pas de mémoire... Pour résumer, avec pb et nos PC, on pourrai refaire tout les jeux 2D des années 90( même de la neogeo) en haute résolution. Voir en 3D cel shading mais en gardant un déroulement 2D de l'action. Le cel shading, voilà du travail en perspective pour notre courageux Tmyke

config de mon ordi: seven, directx11, Pentium(R) DualCore E5700, RadeonHD 4550 512MB, PureBasic 4.61 x86
-
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Petite mise à jour (la 10 ieme).
Les ajouts et améliorations concernent :
- nouveau portail internet (toujours http://www.n3xt-d.org ),
- certains point de syntaxe,
- les Sprites3D qui sont enfin opérationnels,
- ajout d'exemples de postprocessing pour les plus velus.
- renomage des exemples pour s'y retrouver plus facilement.
Les liens sont toujours ceux du post originel.
Travaux en cours:
- la 2D, en particulier les sprites. Le moteur est assez pauvre pour le moment,
donc je fais en sorte que les choses changent.
Les ajouts et améliorations concernent :
- nouveau portail internet (toujours http://www.n3xt-d.org ),
- certains point de syntaxe,
- les Sprites3D qui sont enfin opérationnels,
- ajout d'exemples de postprocessing pour les plus velus.
- renomage des exemples pour s'y retrouver plus facilement.
Les liens sont toujours ceux du post originel.

Travaux en cours:
- la 2D, en particulier les sprites. Le moteur est assez pauvre pour le moment,
donc je fais en sorte que les choses changent.

Force et sagesse...
-
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
J'essais demaintenir tant bien que mal le Makefile, mais j'avoue que je ne sais pas ce que celaCpl.Bator a écrit :je vais regardé ce week-end ou ds la semaine pour compile sous linux
donne dans la pratique
C'est toujours le systeme basic de shadowsVolume natif d'Irrlicht. Il faut passer par des shaders pourCpl.Bator a écrit :sinon , les shadows n'ont pas évolué ? pas possible d'avoir de belle ombres sur un terrain ?
avoir des ombres plus évoluees. Je vais quand meme voir pour pondre un truc plus 'civilise' , c'est une
des grosse lacune de Irrlicht sur ce point. Cela fait partie des points sur lequels je vais plancher cet ete.
Merci, et j'espere que tu nous tiendra au courant concernant ce projetcha0s a écrit :Sympa le nouveau portail !
Cool les Sprite3D. Pour l'instant je suis sur un prototype de jeux pour la japan expo donc j'utilise le moteur de pure pour aller
plus vite mais plus tard je testerais le rendue avec Next3D.

PS-> SINON, desole pour les accents, je suis avec mon tel portable, car je n'ai plus de NET depuis hier soir,
et je ne sais malheureusement pas quand cela reviendra, et c'est certainement pas un dimanche que cela
va etre corrige.

Force et sagesse...