(1) 2 »


Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1615
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): 981
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): 2372
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): 1615
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): 2372
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): 1615
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): 2372
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): 1615
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): 2372
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): 1615
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
[WIP] et travaux terminés [WIP] Tutoriel vidéo et création de mon prochain court métrage 3 186 Aujourd'hui 02:29:55
Meltingman2 
Questions & Réponses Je bloque sur la modélisation de ce verre! Avez-vous une solution? 7 161 Hier 21:33:52
titisteph 
Questions & Réponses [non résolu] cloth: déformation bizzarre au rendu 3 56 Hier 09:21:18
Arielboid 
Questions & Réponses les cheveux longueur 1 41 06/08 19:53:18
Rimpotche 
Questions & Réponses ADDON MB - Lab 0 45 06/08 15:29:23
GI-jo13 
Questions & Réponses [résolu] en sculpt mode 5 157 04/08 18:21:10
prometheusx 
Questions & Réponses [résolu] Array circulaire 2 131 04/08 15:22:46
Redstar 
[WIP] et travaux terminés [WIP] Teeny Tiny - Story    [1][2][3]...[5] 40 3912 04/08 07:18:00
Bibi09 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Première version disponible !    [1][2][3]...[58] 576 98050 03/08 11:11:32
Hook 
Questions & Réponses Addon pour textures procedurales 2 133 02/08 20:11:35
Crocodile_13 
Questions & Réponses avis animation marche :)    [1][2][3][4] 34 673 02/08 20:03:14
prometheusx 
[WIP] et travaux terminés [terminé] court métrage 2020    [1][2] 13 849 02/08 15:28:29
flahaut 
Questions & Réponses [résolu] Générique, sous-titres etc 3 139 02/08 09:18:02
Corpia 
Questions & Réponses [résolu] Scène prend la couleur du fond    [1][2] 11 268 02/08 08:20:32
Arielboid 
Questions & Réponses [non résolu] Problele d'addon 0 108 02/08 01:52:30
nayther 
Questions & Réponses Addon pour textures procedurales 1 100 01/08 12:22:52
moonboots 
Questions & Réponses hair densité sélection de polys 9 237 30/07 23:18:21
lenogre 
Questions & Réponses [résolu] graph editor et location key frame 7 198 30/07 16:41:18
math_ 
Questions & Réponses les graphs editor :/ 4 183 30/07 11:19:07
prometheusx 
Le coin des geeks pc bas prix    [1][2][3][4] 38 1857 28/07 21:14:56
Bibi09 

Qui est en ligne
52 utilisateur(s) en ligne (dont 38 sur Forums)

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


plus...
Nouveaux membres
StephaineF 8/8/2020
GloriaEarl 8/8/2020
MarcusBaug 8/8/2020
MargretMil 8/8/2020
JewelHumph 8/8/2020
ClintonMcf 8/8/2020
AlejandraM 8/8/2020
MichalQ247 8/8/2020
VirgilWirt 8/8/2020
LidiaMadis 8/8/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
(continuer) - Aou 8
anniversaire Cem47
Aou 13
Anniversaire Siskas
Sep 8
Anniversaire de ang
plus 267 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