(1) 2 »


Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1574
Bonsoir tout le monde,

Je constates que dans la version que j'utilise, plus les bones d'armatures sont nombreux et plus cela prends des ressources mémoires quand on les animes.

Je me suis dis que, peut-être, aurai-t-on optimisé cela dans les nouvelles versions ? Du coup, j'ai été éplucher les notes des différentes versions et j'ai trouvé ceci:

Citation :

Multi-Threaded Animations

Skeletal mesh and shape key animations are now multi-threaded in the Blender Game Engine. The animations are threaded on a per-object basis, which means scenes with multiple animated objects will benefit more than scenes with one complex animation. Regular object animations are not currently threaded.

et

The changes in IK library, using Eigen library now, and in Moto library using float as default instead of double, give a perfomance increase of 2-2.5x in complex .blends.


Qu'est-ce que vous comprenez quand vous lisez ça ?

Contribution le : 02/07/2019 20:19
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
29/12/2011 00:49
Post(s): 977
Ca veut dire je pense, que les skeletal meshs (mesh+armature) et les shapes keys bénificient du multithread. Donc il peut y avoir plusieurs taches/processus en même temps. Ca fait que sur des scènes avec plusieurs animations de ce type il y a un gain de performances.
J'ai des doutes sur la phrase "regular object animation[...]". Ca semble vouloir dire que les animations standard ne sont pas en multithread.
La suite indique le type de variable utilisée pour les calculs d'IKs, de double à float, suite à l'utilisation des libs Eigen et Moto.

Contribution le : 03/07/2019 16:10
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2278
A noter que les calculs en double utilisent plus de mémoire (RAM et VRAM) mais aussi sont plus lents que des calculs en float sur GPU. Comme expliqué sur Eleks, "consumer accelerators are optimized for single precision because double is not required in computer games, primary software they were designed for."

Ici des exemples de performance entre des calculs en simple précision (float) et double précision (double).
https://labs.eleks.com/wp-content/uploads/2012/11/5.2.IndFLOP512x512.png

Les CPU (Intel/AMD notamment) ne sont pas vraiment affectés en terme de vitesse de calcul puisque dans les deux cas, ils sont en général traités sur le même nombre d'octets.
https://www.cdrinfo.com/Sections/Articles/Sources/I/Intel%20Core%20i7-8700K%20and%20Core%20i5-8400%20benchmarks/images/Sandra_Processor_Arithmetic.jpg

Contribution le : 03/07/2019 16:34
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1574
Donc, si j'ai plusieurs personnages non-joueurs qui utilisent la même animation "marche", j'aurai moins de process animation consommé mais au détriment de plus de mémoire ?

Et donc, si j'en ai 2 qui sont au repos et 2 autres en train de marcher, il y aura deux multithread ?

L'IK, c'est bien pour la contrainte IK ? Ou cela englobe l'animation en elle-même ?

Contribution le : 03/07/2019 18:51
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2278
Tel que je comprends la note, en particulier le "per-object basis", je dirais que même si plusieurs meshes partagent une même animation, ils seront traités par un thread différent. Sinon, ils auraient dit que le multithreading se ferait par animation.

Multithreader par animation ne me semble pas faire sens. Même s'ils partagent l'animation, ils ne sont pas nécessairement synchronisés sur la même frame. A moins que ce soit des militaires ?
Donc ça implique, pour chaque personnage, des calculs différents pour ensuite positionner les vertices au bon endroit.

Comme c'est par objet, a priori, je dirais que si 2 PNJs sont en animation "repos" et 2 PNJs en animation "marche", il y a 4 threads. J'ignore comment c'est implémenté par contre mais je suppose qu'ils utilisent un thread pour plusieurs objets. S'il y a 1000 objets animés, le CPU ne peut lancer 1000 threads en même temps !


Ceci étant, le multithreading demande plus de mémoire car il y a des données spécifiques à chaque thread. Ça dépend de la tâche à exécuter bien sûr, ça peut être une petite consommation supplémentaire ou bien utiliser nettement plus de mémoire. Ici, ce n'est pas impossible qu'il faille une quantité non négligeable en plus s'il y a beaucoup d'objets animés dans la scène (keyshape ou skeletal).

En règle générale, on a de toute façon souvent le cas de figure où on optimise soit les performances soit la mémoire. Par exemple, précalculer des valeurs demande plus de RAM mais rend les calculs plus rapides. Mais comme la mémoire tant à être de plus en plus abondante sur des machines qui ont entre 4Go et 16Go, ça pose moins de problème.


Pour la partie IK, je n'en ai pas la moindre idée. Ils parlent d'une bibliothèque donc ça peut toucher l'animation en inverse kinematic globalement.

Contribution le : 03/07/2019 21:19
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1574
Ah, donc, ce qui compte, c'est le nombre de faces d'un objet et non le nombre d'os ???

Parce que, ils expliquent que cela concerne les os mais ils ne parlent pas des shapekeys dans la doc.

Si l'on devait animer un personnage via les shapekeys, j'aurai une augmentation du process animation ?

De toute façon, ça ne me coûte rien de tester en pratique et voir ce que ça donne d'une version à une autre...

Contribution le : 04/07/2019 08:21
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2278
Les deux comptent.

Animer un mesh de 3 millions de points, c'est pas aussi rapide qu'un mesh lowpoly conçu pour du temps réel. Même si avec les GPU actuels, le nombre de polygones augmente progressivement.
D'ailleurs, tu as sans doute remarqué les options pour les détails de géométrie dans les jeux vidéo. De la version très lowpoly à un modèle très détaillé.
Plus il y a de vertices, plus le GPU aura de boulot pour les afficher mais aussi les animer.

Mais aussi, plus il y a de bones, plus ça va être gourmand en mémoire/calculs.

Pour aller plus loin dans la technique (je sais pas ton degré de connaissances), derrière, il y a des matrices pour bouger les vertices associés à chaque frame. Si ton armature a 5 bones et l'animation se fait sur 20 frames, tu as 5x20 matrices de 4x4 floats. Elle pèse donc 6.4ko en mémoire (5x20 x 4x4 x 4 octets).
Et ce n'est que pour une petite animation !

Il y a d'autres données encore qui rentrent en compte mais tu vois l'idée. Si ça t'intéresse de voir ce qui compose une animation skeletal : https://www.khronos.org/opengl/wiki/Skeletal_Animation

:)

Contribution le : 04/07/2019 20:02
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1574
D'accord, je comprends mieux.

Niveau technique, j'ai un peu du mal mais je comprends les grandes lignes


Bref, j'ai fais un test: je travaille sur la version 2.70, j'ai placé 14 personnages non joueur identique, dont chacun contient une armature de 69 bones (soit 966, au total) + l'armature du joueur (donc 1000 bones environs).

J'ai fais de même, mais avec la version 2.72b (le multithread a été implémenté dans la 2.71).


Résultat, 1er test sur un terrain très minimaliste:

Je tourne à 16,7 fps environ, en consommant 59 % et 35,24 ms d’exécution du process animation pour la 2.70, tandis que sur la 2.72, j'en suis à 49,7 fps pour 63 % et 12,67 ms d’exécution.

J'ai fais un 2e test mais cette fois en condition réelle: j'en déduis que le process animation reste saturé mais le multithread fait son travail, ce qui permet de garder une fluidité dans le gameplay.


Donc, en supposant que l'on ferai un jeu avec beaucoup d'armatures (avec peu d'os) du genre "total war" ou "dynasty warrior", en faisant gaffe certes d'optimiser sois-même, on peut stabiliser le gameplay.

Contribution le : 05/07/2019 09:03
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2278
Oui, les résultats que tu obtiens avec les deux versions sont cohérents. La surconsommation de mémoire n'est pas énorme (4%, ça fait 160Mo pour 4Go de mémoire), ce qui est plutôt normal.

Après, il y a des techniques assez touchy pour animer un grand nombre de personnages à moindre coût. Mais ça va un peu loin et je ne saurais pas les expliquer.

Contribution le : 05/07/2019 15:40
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1574
Merci d'avoir partagé tes informations, ça me permet de mieux comprendre encore plus le BGE

Mais dis-moi, je vois que tu codes un moteur de jeu ! Tu fais ça pour le fun ou tu vise un but précis ?

Contribution le : 06/07/2019 09:23
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 »




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Moteurs de rendu rendu Povray sous Blender 2.6 + trace de log 7 12035 Aujourd'hui 00:25:30
MauriceRaybaud 
Questions & Réponses [non résolu] Personnage et CAT5 - VRCHAT 0 19 Hier 22:31:10
Muffet 
Questions & Réponses Conseils pour modéliser un corps 4 117 Hier 17:48:43
moonboots 
Questions & Réponses Problème avec le nodes Color Ramp 3 93 Hier 17:22:54
JaAlVir657 
Python & Plugins [non résolu] obtenir un résultat fixe suite au déplacement souris 0 28 Hier 16:09:22
Redstar 
[WIP] et travaux terminés Les fonds de mes rendus 3 75 Hier 00:42:18
Bibi09 
Questions & Réponses Comment dupliquer une face autour d'un axe? 1 45 26/05 19:05:12
moonboots 
Python & Plugins Comment renommer "Key" ? (le chef des shapekeys)    [1][2] 14 314 26/05 17:58:54
Rimpotche 
Questions & Réponses Comment faire une boucle infinie (animation) 9 121 26/05 13:00:46
3dlone 
Moteur de jeu GameBlender et alternatives hARMful engine    [1][2][3]...[7] 64 6056 26/05 01:54:45
Bibi09 
Moteur de jeu GameBlender et alternatives [WIP] Jeu "Iron Man Collapsing"    [1][2][3] 27 8762 26/05 01:39:39
Bibi09 
Questions & Réponses [non résolu] Problème d'importation de svg 4 166 25/05 22:07:43
Joknox 
Questions & Réponses Disparition des Mesh.. 2 59 25/05 19:09:09
Loan20 
Questions & Réponses Animation NLA probleme origine 8 143 25/05 16:45:50
prometheusx 
Questions & Réponses alleger le poid de mon modele 5 91 25/05 16:39:51
Rimpotche 
Questions & Réponses Ajouter un raccourcis a un addon. 0 44 25/05 13:35:40
pierre-y 
Python & Plugins Pouvoir choisir l'outil actif avec python 1 77 25/05 13:20:16
pierre-y 
Questions & Réponses Exporter en FBX sur un ordi Japonais 1 130 25/05 13:01:33
tsurubaso 
Mes premières images sous Blender (débutants) Kame-House    [1][2] 15 558 25/05 08:17:56
Huildecoude 
Questions & Réponses transparence image as plane 3 139 24/05 21:48:30
ansic 

Qui est en ligne
74 utilisateur(s) en ligne (dont 32 sur Forums)

Membre(s): 0
Invité(s): 74


plus...
Nouveaux membres
StellaH958 28/5/2020
JIOTiffiny 28/5/2020
WilliamsBa 28/5/2020
EugenioWar 28/5/2020
Williams42 28/5/2020
ReginaldBo 28/5/2020
ChangGulle 28/5/2020
TerrieAyer 28/5/2020
PattyNiels 28/5/2020
FedericoCa 28/5/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Jui 30
Anniv des Jedi :-D
Jui 11
BUG de Lyon
Jui 23
Anniv du BlenderClan !
plus 270 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2020 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445