La revue des projets - 49
Posté le 30/08/2015 18:00
« Salutations à tous nos spectateurs qui sont venus nombreux pour la RDP de PC (Revue Des Projets de Planète Casio ou Rassemblement Anonyme Particulier des Plaisantins et des Clowns) !
Je me présente, je suis le fameux, le très attendu, le…
_ Ça c'est sûr que tu es très attendu, hier soir le repas était froid avant que tu n'arrives.
_ Non mais tais-toi juste, ce n'était pas drôle, toi tu n'es que balayeur justement car ton humour est aussi développé que la diplomatie de l'état islamique. Bref, je disais : je suis l'unique monsieur Loyal ! Applaudissez-moi tous ! Non, vous êtes sûr ? Bon d'accord. Bienvenue au cirque Maxime, oui, c'est aussi mon prénom…
_ C'est un homme Maxime !
_ ?
_ Bah oui : Maxime homme
(maximum) !
_ Ok, toi tu es viré, décidément je croyais que tout le monde te fuyait car tu puais mais en fait ça ne venait pas de là. Faites place à l'extraordinaire cavalière et à ses chevaux !
_ Elle va monter sur ses grands chevaux ?
_:facepalm: Je donnerais tout pour qu'il se taise celui-là…
_ Tu vendrais donc ton royaume pour un cheval ?
_ En fait, changement de programme, on va, avec vous mes chers spectateurs et devant vos yeux éblouis, faire une chasse à l'homme : le premier qui attrape cet idiot se verra rembourser sa place et aura une invitation à la prochaine tournée !
[Une cohue plus tard]
_ Grâce à vous, il va faire pour votre plaisir les acrobaties que vont par la suite reproduire nos plus grands acrobates ! Ah merde, il est mort. Pas grave, passons au prochain numéro, un numéro unique au monde, un numéro que les cirques du monde entier nous envient, un numéro dont vous vous souviendrez toute votre vie, celui de Louis, notre exceptionnel clown mythomane !
Dark Storm a écrit :Vous vous souvenez de mon projet de moteur 3D, Firefly 3D ? Et bien suite à un échange avec Lephenixnoir, j'ai fait un petit addin de test : modélisation d'une coque de bateau. Alors pour l'instant c'est tout fait à la mimine — coordonnées des points, lignes, etc. — mais je compte faire un éditeur d'objets 3D on-calc sous peu. Enfin, poser les bases.
Il faut savoir que je n'ai pas touché au moteur en lui-même, juste créé un modèle qui l'utilise. Donc c'est une version qui date de l'an dernier environ, mais qui
à priori fonctionne sans soucis.
Bref, avec 14 points, 32 lignes — dont 5 masquées — et 18 faces, j'obtiens un rendu pas trop mal.
On peut faire tourner l'objet grâce aux touches 7-4 / 8-5 / 9-6, et changer la focale avec +/-. La focale est la première info affichée à l'écran. Il y a aussi un point qui s'affiche en gros : avec 1-0 vous pouvez en changer, son ID est affiché à droite de la focale, ses coordonnées dans l'espace sur la seconde ligne
Étant donné que j'ai pas d'addin regroupant le cube et la coque en même temps, je vous met des screenshots.
Il est aussi bon de savoir que ce moteur n'est pas spécialement conçu pour afficher un environnement dans lequel la caméra se déplace. Pour ça, il faut que je modifie un peu (beaucoup ?) le code. Donc pour le moment c'est fait pour afficher des objets en 3D, comme effet de style dans un jeu par exemple (genre une épée qui tourne dans un menu).
Si vous voulez utiliser cette bibliothèque, elle est diffusée pour le moment en
CeCILL.
Des questions ? N'hésitez pas à commenter cet article, utiliser le
topic officiel, ou encore m'envoyer un MP.
_ AhAh, il n'en manque vraiment pas une celui-là ! Comme si un tel truc pouvait exister, il est vraiment inégalable, et quel humour mes amis ! Je suis désolé mais ça va être la fin du spectacle, n'oubliez pas d'écraser la carcasse de l'ancien balayeur en sortant calmement, et revenez nous voir pour la prochaine tournée dimanche prochain ! »
Citer : Posté le 30/08/2015 22:08 | #
Cool que tu reprennes ton moteur FireFly, si tu as des questions concernant la caméra, envoie moi un MP, j'ai passé pas mal de temps dessus ces vacances avec mon moteur aussi
Et ça tourne à combien de fps ?
Citer : Posté le 30/08/2015 22:38 | #
Ça serait vraiment cool si un moteur 3D générique sortait sur Casio
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 30/08/2015 22:47 | #
on ne pourra pas faire de moteur 3D générique à cause des performances trop limitées. Pour chaque jeu il faudrait supprimer des éléments et en optimiser d'autres. Par exemple ne pas mettre de textures et n'autoriser que certaines rotations de la caméra. Avec des performances aux ras des pâquerettes, il faut optimiser tous les bouts possibles en fonction du jeu, on ne peut pas faire un gros truc qui fait tout.
Par contre on peut faire une base assez solide, assez modulable pour ajouter/retirer des fonctionnalités
Citer : Posté le 31/08/2015 09:06 | #
on ne pourra pas faire de moteur 3D générique à cause des performances trop limitées.
Ah ouais ? En bossant en point fixe, optimisant les calculs matriciels, j'ai fait quelques calculs qui laissent à penser que c'est tout à fait possible juste avec le CPU (sur SH3 en particulier), sans compter le puissant overclock de FTune.
Pour chaque jeu il faudrait supprimer des éléments et en optimiser d'autres. Par exemple ne pas mettre de textures et n'autoriser que certaines rotations de la caméra.
Hmm, à mon avis les rotations de la caméra c'est pas gênant : personnellement, pour les tests de 3D que je fais (enfin je pense que c'est la méthode usuelle), j'ai une matrice qui transforme le repère absolu vers le repère associé à la caméra (ensuite j'applique la perspective), donc une fois les coefficients de cette matrice calculés, le nombre de rotations n'a plus d'influence ; et par rapport aux 20-30 points (minimum) qu'on sera obligés d'afficher pour gérer un environnement de type minecraftien correct, même sans texture, le calcul à réaliser est négligeable.
Avec des performances aux ras des pâquerettes, il faut optimiser tous les bouts possibles en fonction du jeu, on ne peut pas faire un gros truc qui fait tout.
Je ne pense pas qu'il sera possible quoi qu'il en soit de gérer (j'exagère) des surfaces ayant des formes quelconques et des orientations quelconques, texturées et en gris, mais j'espère qu'on pourra avoir un moteur assez performant pour que les jeux qui l'utilisent n'aient pas besoin de le modifier pour l'adapter à leurs besoins.
Au passage Darks t'en es où niveau FPS ?
Citer : Posté le 31/08/2015 10:29 | #
Hmm, à mon avis les rotations de la caméra c'est pas gênant
Si tu considères deux rotations "style FPS", c'est à dire une rotations autour de la verticale et une de haut en bas, alors tu oublies la 3ème rotation, au niveau des calculs la matrice de rotation est BEAUCOUP plus légère !
Dès que tu considères la 3ème rotation, la matrice devient plus lourde : lien
Et en plus on utilise les angles d'Euler... Sans rentrer dans les détails (on en avait un peu parlé par MP ) ce n'est pas du tout optimal à cause d'un tas de raisons : Blocage du cardan, pas de d'interpolation, pas de vérification si la matrice est orthogonale...
C'est pourquoi il faut passer par les quaternions : lien wiki
le calcul à réaliser est négligeable.
Il ne faut pas oublier qu'un moteur 3D c'est un moteur graphique, et physique. Il y a donc une marge de calculs à réserver derrière pour gérer le jeu.
Citer : Posté le 31/08/2015 10:47 | #
Ce n'est pas vraiment ce qui prend du temps de calcul de faire tourner le repère de la camera, par contre faire tourner tous les points par rapport à ce repère, c'est à ce niveau là qu'il faut optimiser !
Mais puisque l'opération se fait comme ceci :
→ Calcul de la matrice de transformation
→ Calcule des produits de la matrice de transformation par les matrices de points
Le produit matriciel est à complexité constante quelle que soit la complexité de la matrice de transformation, qui ne sera composée que de valeurs au final !
Si tu considères deux rotations "style FPS", c'est à dire une rotations autour de la verticale et une de haut en bas, alors tu oublies la 3ème rotation, au niveau des calculs la matrice de rotation est BEAUCOUP plus légère !
Dès que tu considères la 3ème rotation, la matrice devient plus lourde : lien
Le lien est... surprenant.
Et comme je l'ai dit, la matrice est plus lourde à calculer mais ce calcul reste, je pense, bien peu comparé à la transformation de tous les points.
Et en plus on utilise les angles d'Euler... Sans rentrer dans les détails (on en avait un peu parlé par MP ) ce n'est pas du tout optimal à cause d'un tas de raisons : Blocage du cardan, pas de d'interpolation, pas de vérification si la matrice est orthogonale...
Ça reste des broutilles à gérer, à mon avis...
C'est pourquoi il faut passer par les quaternions
Faut que je me penche dessus, jusque-là j'utilisais des matrices à trois dimensions...
le calcul à réaliser est négligeable.
Pour afficher des traits surement, même si c'est pour afficher 30 traits, on est d'accord, ça ne sert pas à grand chose, il faut cacher les arrêtes aussi.
Attention, je disais que c'était le calcul de la matrice qui était négligeable par rapport aux calculs effectués pour transformer les points et afficher les lignes/textures !
Il ne faut pas oublier qu'un moteur 3D c'est un moteur graphique, et physique. Il y a donc une marge de calculs à réserver derrière pour gérer le jeu.
Ouais, c'est assez lourd... bon, après on a l'overclock mais c'est pas terrible.
Citer : Posté le 31/08/2015 11:27 | #
Et comme je l'ai dit, la matrice est plus lourde à calculer mais ce calcul reste, je pense, bien peu comparé à la transformation de tous les points.
Le produit matriciel est à complexité constante quelle que soit la complexité de la matrice de transformation, qui ne sera composée que de valeurs au final !
Je suis d'accord. Calculer les valeurs de la matrice n'est pas très long, ce qui est long c'est de calculer "les produits de la matrice de transformation par les matrices de points". Parce que en négligant un angle, par exemple le roll (lien) tu rajoutes beaucoup de 0 et de 1, si tu écris ton calcul matriciel en prennant en compte cette simplification, tu diminues le nombres de calculs.
Ça reste des broutilles à gérer, à mon avis...
Attention, je disais que c'était le calcul de la matrice qui était négligeable par rapport aux calculs effectués pour transformer les points et afficher les lignes/textures !
après on a l'overclock mais c'est pas terrible.
Citer : Posté le 31/08/2015 11:32 | #
Je suis d'accord. Calculer les valeurs de la matrice n'est pas très long, ce qui est long c'est de calculer "les produits de la matrice de transformation par les matrices de points". Parce que en négligant un angle, par exemple le roll (lien) tu rajoutes beaucoup de 0 et de 1, si tu écris ton calcul matriciel en prennant en compte cette simplification, tu diminues le nombres de calculs.
C'est bien ce que je me disais, tu optimises à cet endroit-là...
A ton avis... Je parle en connaissance de cause, j'ai fait beaucoup de recherches dessus cet été Dans l'industrie du jeu et de l'animation ils utilisent les quaternions. Après on les utilise en intermédiaires, ils servent "en arrière plan" pour les calculs, les matrices restent l'outil principal.
Ah mais je sais pour les quaternions ! En particulier les matrices utilisées ont 4 dimensions, facile de voir pourquoi !
après on a l'overclock mais c'est pas terrible.
Ouais, après si le programme est déjà optimisé au maximum, et que l'optimiser plus sacrifiait la lisibilité/maintenabilité/etc., je préfèrerais encore overclocker. De toute façon soit cet overclock serait léger, soit il faudrait en déduire que faire de la 3D sur ces machines était une cause à moitié perdue dès le début.
Citer : Posté le 31/08/2015 11:58 | #
Pour chaque jeu il faudrait supprimer des éléments et en optimiser d'autres. Par exemple ne pas mettre de textures et n'autoriser que certaines rotations de la caméra.
C'est bien ce que je me disais, tu optimises à cet endroit-là...
C'est ce que je disais, pour un jeu qui ne neccessite pas de mouvement de camera type "roll", il y a moyen d'optimiser de façon non négligeable les calculs, si tu as gagnes 20% de fps, on ne pas faire un moteur générique si il doit prendre en compte cette simplification.
Il reste à savoir à combien de FPS tourne le moteur de Dark Storm
Citer : Posté le 31/08/2015 12:28 | #
C'est ce que je disais, pour un jeu qui ne neccessite pas de mouvement de camera type "roll", il y a moyen d'optimiser de façon non négligeable les calculs, si tu as gagnes 20% de fps, on ne pas faire un moteur générique si il doit prendre en compte cette simplification.
Mais si, on ajoute un flag de config et on change de fonction de multiplication.