Jeux Libres
       
           

» Les Forums » Aide à propos de la création de jeux vidéo » [FPS] Recherche d'un dessinateur 2D


Aller à la page : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17.

[FPS] Recherche d'un dessinateur 2D
David



Grade : Maître
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 11 Août 2014, 22:46             Message non corrigé

LoubiTek, je reviens sur le personnage.

Avant de me lancer dans la construction du loader, j'aimerais vérifier que ton fichier puisse être chargé avec un viewer d'OBJ. J'ai testé avec plusieurs viewer mais j'arrive pas à zoomer sur lil pour voir si ça marche.

Du coup, je pense que je vais commencer le loader, on verra ensuite.

Pour ce qui est du loader d'OBJ, je vais là encore viser la simplicité : c'est à dire que je vais simplement me contenter d'afficher les polygone de façon brut, indépendamment de la lumière.

EDIT : Voici une première version. Pour celle-ci, je me suis contenté d'utiliser les sources issues de ce tutoriel afin que tu puisse commencer à tester l'importation de tes modèles.

Voici le résultat avec un chat.



________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil
David



Grade : Maître
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 12 Août 2014, 04:38             Message non corrigé

Après plusieurs heures de renseignement à propos du format OBJ, j'ai pris conscience que la création d'un loader OBJ était hors de ma porté.

Le format OBJ



Le format OBJ, à lui tout seul, n'est pas d'une complexité exorbitante. Mais je lui reproche tout de même certaines choses.

- La première, c'est que le format OBJ peut (ou pas) comporter plusieurs objets 3D. Ce qui implique, lors de l'utilisation, d'indiquer quel objet doit être dessiné. Or, le nom de l'objet n'est pas systématiquement indiqué (même très rarement), sauf lorsqu'il y en a plusieurs car il devient obligatoire d'indiquer son nom. Je trouve cela assez déroutant.

- Pour ce qui est des coordonnées des points de l'objet 3D et des textures, il n'y a rien à redire, c'est très simple d'utilisation et très facile à expliquer.

- Pour les faces, il y a de nombreuses façons de les décrire. Ça créé de la souplesse qui, selon moi, laisse trop de liberté. Voici différentes formes que peuvent prendre les faces :
1
f v/vt/vn v/vt/vn v/vt/vn v/vt/vn
1
f v/vt/vn v/vt/vn v/vt/vn
1
f v//vn v//vn v//vn v//vn
1
f v//vn v//vn v//vn
1
f v v v v
1
f v v v

Il s'agit là du numéro de absolu du point dans l'objet en cours. Mais il existe la numérotation relative, qui s'utilise comme ceci :
1
2
3
4
5
v 0.000000 2.000000 2.000000
v 0.000000 0.000000 2.000000
v 2.000000 0.000000 2.000000
v 2.000000 2.000000 2.000000
f -4 -3 -2 -1

Je vais m'arrêter là pour ce qui est des faces. Les développeurs qui aimerait s'y coller ont déjà un aperçu de ce qui les attends.

Je vous l'accorde tout de même, jusque là il n'est pas insurmontable de créer un loader OBJ, mais on vois bien que la permissivité du format complexifie le développement du loader.

- Ensuite, il y tout ce qui touche aux courbes. Honnêtement, je ne suis pas assez calé en math pour prendre cette partie de la spec. Voici un aperçu :
1
2
3
4
5
6
7
8
9
10
    cstype bezier
   deg 1 1
   surf 0.0 2.0 0.0 2.0 1 2 3 4
   parm u 0.00 2.00
   parm v 0.00 2.00
   trim 0.0 4.0 1
   hole 0.0 4.0 2
   trim 0.0 4.0 3
   hole 0.0 4.0 4
   end

Je vais m'arrêter là (5% de la spec) car les autres notions que supporte le format, bien que sans doute très utiles, dépassent complètement mes compétences.

Le format MTL



Le format OBJ est accompagné d'un ou plusieurs fichier MTL comportant un ou plusieurs matériels. Il s'agit d'un fichier décrivant certains paramètre de luminosité (lumière ambiante, diffuse et spéculaire) ainsi que l'opacité et divers autres paramètres dont le(s) éventuel(s) fichier(s) de texture à utiliser suivant la lumière appliqué sur l'objet.

Je pense que c'est très bien d'avoir fait ça, mais il faut l'implémenter tout ça ! Alors dans un premier temps je m'étais dis que jallais simplement utiliser le fichier de texture et ne pas implémenté les différentes lumières. Mais c'est une très mauvaise idée car en procédant ainsi, on passe à côté d'une grande bibliothèque d'objet 3D. En effet, la plupart des objets proposé sur cet site sont justement coloré par la lumière qui est indiqué dans le fichier MTL. C'est ainsi que la plupart des objets réussissent à se passer de texture. Justement, parlons-en des textures.

Le format MTL ne définit rien quand au format de texture utilisé. Il est donc tout à fait possible d'utiliser du PNG, du TIFF, du JPG... C'est bien, ça donne de la souplesse. Mais alors, en tant que développeur, pour faire le loader OBJ, il faut implémenter chacun de ces formats ? ... au risque de ne pas pouvoir charger certains objets issues d'autres communautés ? Alors oui vous allez me dire qu'on peut utiliser SDL_image. Mais il y a un moment où il faut mettre un frein, sinon on utilisera toujours plus de "sous-projets" ce qui peut freiner à l'évolution future du projet.

Pour en revenir à la bibliothèque d'objets 3D dont je vous parlais à l'instant, vous remarquerait qu'il y a de magnifiques arbres en bas de page. Seulement, les différente nuance de couleur qui donne cette impression de relief à la surface du tron ne sont en réalité qu'un jeu de limière issu de l'inclinaison de certaine surface. Il faut donc impérativement implémenter lutilisation des normales pour obtenir un bon rendu, sinon le tronc sera vu comme un simple rectangle marron.

Et enfin, la belle piscine que vous voyez utilise un matériel comportant une opacité de 75% pour l'eau. C'est bien, le format supporte la transparence. Mais pour que ce genre de polygone soit bien implémenté dans un projet OpenGL, les polygones transparents doivent être dessiné du font vers l'avant. Or comment voulez-vous implémenter un tel mécanisme si vous avez une multitude d'objets 3D ?

Je vous laccorde, il n'est pas impossible de faire un loader OBJ, mais il est très difficile de faire un bon loader OBJ. Si on part dans cette direction, il faut s'attendre à perdre de nombreux lecteurs et le loader OBJ est un projet qui dépasse la taille du projet du FPS. Ou alors, il faut créer un loader OBJ et le présenter comme une bibliothèque, du point de vu de lutilisateur uniquement. Et pour ce qui est du développement du loader OBJ, il faudra faire des concessions. C'est à dire qu'il faudra savoir avec quel logiciel on "travail", voir comment ils exportent les modèles 3D et se limiter à l'implémentation de quelques "fonctions" issues du format et se contenter du nécessaire.

Mon point de vue, c'est qu'il faudrait faire un loader OBJ mais se limiter à :
- Un seul objet par fichier
- Un seul et "obligatoire" matériel (MTL)
- Ne pas jouer avec les couleurs
- Utiliser systématiquement un fichier BMP pour définir la couleur de chaque polygone.
- Ne pas utiliser les normales (et encore, ça c'est discutable)

Par contre, même si tout n'est pas implémenté, il faut être en mesure de charger la quasi-totalité des fichiers OBJ sans que ça plante, même si le rendu n'est pas optimal.

J'aimerais avoir vos avis.

________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil
Brouilles



Grade : Habitué
Inscrit le: 04 Fev 2012, 17:40
Ecrit le: 12 Août 2014, 09:04             Message non corrigé

Salut,
En lisant ce que tu as écrit je suis d'accord avec toi, le format est un peut trop permissif ce qui complique et alourdie son implémentation.

Pour se qui est de ta liste de fonctionnalité indispensable je pense qu'elle est correcte et couvrira une bonne partie des cas possibles, après si le loader est surtout utilisée pour le FPS les limitations seront connus des graphistes/programmeurs.
Je ne pense donc pas que cela soit un problème que certaines fonctionnalités du format ne fonctionne pas.

Cordialement Brouilles.

________
Site personnel et Portfolio.
  Profil
David



Grade : Maître
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 12 Août 2014, 18:02             Message non corrigé

  Pour se qui est de ta liste de fonctionnalité indispensable je pense qu'elle est correcte et couvrira une bonne partie des cas possibles      


C'est ce que font la plupart des loaders. Je pense que je vais partir là dessus.

________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil
LoubiTek



Grade : Connaisseur
Inscrit le: 08 Août 2014, 13:42
Ecrit le: 12 Août 2014, 18:58             Message non corrigé

Je fait des tests pour tout ce qui est "items" comme les munitions, les vies, les armes...
Je ne sais pas si c'est utile pour l'instant, mais ça me semble pas mal d'avoir des boîtes carrée ( cube ).
Si dans l'avenir il y aura possibilité de faire tourner ces cubes comme ici:

Ne faite pas attention à l'image et le rendu, ceci est un simple teste ^^ Bien évidemment je retoucherai par la suite en mettant de la couleurs =P
Ah ouai je me demander c'était quel version de la sdl, je l'avais vu quelque part mais je me souviens plus où. C'est la sdl 1.2.14 si je me souviens ? C'est pour pouvoir bricoler dans le code, vu que sur ce pc je n'est pas installer la sdl sous code blocks.

________
--->YouTube<---
--->Musique<---
  Profil
David



Grade : Maître
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 12 Août 2014, 19:31             Message non corrigé

Oui c'est possible de faire un cube qui tourne pour les munitions. C'est vrai que les balles infinies c'est pas super. En plus ça constitue une "faille" dans le sens où le joueurs peut "tirer" continuellement s'il modifie son client. Ton idée permettrais justement de faire une barrière à ce problème.

Pour la version de SDL, dans le tutoriel c'est effectivement la version 1.2.14. Mais dans la version que je t'ai envoyé par mail, c'est la version 2.0. Pour ne pas t'embêter, voici mon dossier C:\Program File\CodeBlocks.


________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil
LoubiTek



Grade : Connaisseur
Inscrit le: 08 Août 2014, 13:42
Ecrit le: 12 Août 2014, 19:38             Message non corrigé

Merci !
Donc je continue sur cette voie, je prépare déjà la base après les couleurs et ajustement viendront plus tard.
Je fait plusieurs items après on verra bien ce qu'on gardera ou pas...

Edit: Version 8.02 =o

Re edit:

________
--->YouTube<---
--->Musique<---
  Profil
David



Grade : Maître
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 12 Août 2014, 20:52             Message non corrigé

Pour en revenir à ton humain, ça fonctionne.


En vrai, ça n'a pas fonctionné du premier coup avec le loader que j'utilisais car les polygones ne comportaient pas de normales. Tu n'y est pour rien et c'est aussi bien car on ne les utilisera probablement pas.

De ton côté, il ne faut pas que tu t'en soucis, c'est à moi de faire un loader qui s'adapte à ce que tu vas me fournir. Par contre, il y a deux choses que j'aimerais revoir avec toi :

La première, c'est la taille des textures. Celle que tu m'as fourni faisait 1024 x 1024 px. Pour le jeu, c'est bien trop grand pour un il. Pour te donner une idée, la texture du chat tout entier fait 512 x 1024 px. Et si ça ne tenais qu'à moi, je la réduirais à 128 x 256 px, ce qui est bien suffisant.

La seconde chose, c'est le nombre de polygone. Ton personnage comporte 13465 quadrilatères, or on n'a pas besoin d'avoir des détails comme le contour des doigts de pieds. Je trouve que ça fait beaucoup. S'il pouvait y en avoir que 1000 ce serait bien.

Pour te donner une idée, cet objet comporte 512 polygones :


Je te l'accord, ce sera sans doute moins beau, mais on pourra afficher bien plus d'objets (personnage ou autre) dans la scène avant que la carte graphique ne commence à peiner.



________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil
LoubiTek



Grade : Connaisseur
Inscrit le: 08 Août 2014, 13:42
Ecrit le: 12 Août 2014, 21:09             Message non corrigé

Ok ouai c'est vrai que la performance c'est le principal ! Je me suis demander si il fallait mettre tout en low à un moment, je te repasse le perso avec une qualité la plus basse + la texture que je vais redimensionner ;)
Edit: TestPerso.rar - 35 KB
J'espère que ça ira mieux comme ceci !
Re edit: Le mode Desert me semble fini Mode Desert.rar - 3.0 MB

________
--->YouTube<---
--->Musique<---
  Profil
David



Grade : Maître
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 12 Août 2014, 23:21             Message non corrigé

Le mode Doom



Les menus : J'aime bien.
La scène 3D : J'aime beaucoup.
Le viseur : Simple mais efficace.
Le tableau des scores : Simple mais simpat.
La map : Très originale vue du dessus et se joue bien.

Le mode Desert



Les menus : J'adore.
La scène 3D : J'aime beaucoup.
Le viseur : J'aime pas trop.
Le tableau des scores : Pourrait être amélioré.
La map : Elle me parait bien.

Par contre, désolé d'être chiant mais, au niveau des droits pour les images, t'est "en règle" ? Ça va être un vrai problème. Même si on ne vient pas embêter un petit projet comme celui-ci, c'est toujours mieux d'être en règle au niveau des droits d'auteurs. Donc pour les images qui proviendrait d'internet, ce serait bien de noter dans un fichier info.txt la provenance de luvre, le nom de l'auteur et la licence. (chose que je n'ai pas faite d'ailleurs)

Pour ton personnage, je ne vais pas le charger avant la semaine prochaine. Je commence le développement du loader OBJ. Je terminerais probablement en fin de semaine prochaine car je ne vais pas avoir beaucoup de temps les jours à venir.

EDIT : Je viens quand même d'y jeter un il avec un viewer. Ton personnage est bien. Il comporte moins de 1000 quadrilatères et la forme est quand même bien conservée.

________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil
 


Aller à la page : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17.


Hébergeur du site : David
Version PHP : 5.4.45-0+deb7u2
Uptime : 63 jours 15 heures 33 minutes
Espace libre : 1495 Mo
Dernière sauvegarde : inconnue
Taille de la sauvegarde : 1116 Mo


5902613 pages ont été consultées sur le site !
Dont 1340 pages pendant les 24 dernières heures.

Page générée en 0.812 secondes


Nos sites préférés
- Création d'un jeu de plateforme de A à Z avec SDL
- Zelda ROTH : Jeux amateurs sur le thème de Zelda
- Zeste de Savoir : la connaissance pour tous et sans pépins
- YunoHost : s'héberger soi-même en toute simplicité
- Site de Fvirtman : recueil de projets et de codes en C et C++
- Par ici la sortie : le site des idées de sorties


  © 2005-2020 linor.fr - Toute reproduction totale ou partielle du contenu de ce site est strictement interdite.