(1) 2 »


Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 16:30
De Belgique
Post(s): 1416
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 21:19:18
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
29/12/2011 01:49
Post(s): 971
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 17:10:27
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
23/02/2006 19:10
De Sideula
Post(s): 2016
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 17:34:09
_________________
Développement en cours du hARMful Engine
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 16:30
De Belgique
Post(s): 1416
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 19:51:26
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
23/02/2006 19:10
De Sideula
Post(s): 2016
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 22:19:34
_________________
Développement en cours du hARMful Engine
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 16:30
De Belgique
Post(s): 1416
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 09:21:01
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
23/02/2006 19:10
De Sideula
Post(s): 2016
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 21:02:12
_________________
Développement en cours du hARMful Engine
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 16:30
De Belgique
Post(s): 1416
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 10:03:07
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
23/02/2006 19:10
De Sideula
Post(s): 2016
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 16:40:16
_________________
Développement en cours du hARMful Engine
Créer un fichier PDF de la contribution Imprimer


Re: Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 16:30
De Belgique
Post(s): 1416
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 10:23:11
_________________
Mon projet jeu vidéo
Mes tutos
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
Questions & Réponses Coup de main: Conversion depuis ZBrush 0 12 Aujourd'hui 00:14:08
Melodicpinpon 
Moteur de jeu GameBlender et alternatives [résolu] Programmer un archer à cheval    [1][2][3][4] 33 906 Hier 14:25:27
Redstar 
Questions & Réponses Trace bizzarre sur un objet 6 90 Hier 14:10:05
moonboots 
Python & Plugins [WIP] Tracer une courbe et obtenir son équation 7 93 Hier 11:51:13
busanga 
Questions & Réponses Besoin d'aide simulation de vent sur des plantes (système particules) 0 81 14/11 17:50:55
B3nD 
Questions & Réponses Contrainte en édition 1 70 14/11 13:57:05
naeco 
Questions & Réponses Impossible de faire un bevel regulier 8 210 14/11 09:43:47
busanga 
Questions & Réponses [non résolu] Des conseils ? 5 174 13/11 22:21:41
tokoji 
Questions & Réponses La video n'est pas lu dans l'editeur node 0 48 13/11 20:06:12
masje 
Questions & Réponses Question sur IvyGen 3 212 13/11 16:20:13
Muad 
Questions & Réponses Déplacement d'un personnage riggé sur courbe de Bézier 3 80 13/11 13:45:28
Rimpotche 
Questions & Réponses Choisir Rendu sur la carte graphique de l'ordinateur 4 158 13/11 11:13:26
masje 
Questions & Réponses Extrusion régulière sur plusieurs angles ?    [1][2] 12 256 12/11 15:37:27
Fracoris 
[WIP] et travaux terminés [WIP] Bataille Navale // Animation 3d    [1][2][3] 24 1967 11/11 22:02:15
Bibi09 
[WIP] et travaux terminés Teeny Tiny - Story 1 147 11/11 21:42:22
Bibi09 
Questions & Réponses des rayures bizzard ? 3 97 11/11 20:52:08
Eleonor-e 
Mes premières images sous Blender (débutants) Les trucs à Élé 6 216 11/11 18:53:11
Eleonor-e 
Questions & Réponses [non résolu] Impossible d'effectuer un boolean sur sculpt 3 112 11/11 15:04:53
busanga 
Questions & Réponses Longueur d'une courbe de béziers ? 3 231 11/11 01:23:27
Eleonor-e 
Questions & Réponses Viewer node ne fonctionne pas 1 118 11/11 01:21:41
Eleonor-e 

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

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


plus...
Nouveaux membres
KristalJ67 16/11/2019
AntjeShule 16/11/2019
GenaRapp25 16/11/2019
RusselBear 16/11/2019
EVRKevin7 16/11/2019
MaiEncarna 16/11/2019
ThedaHowey 16/11/2019
RoyceNowla 16/11/2019
MarianHutt 16/11/2019
LeroyWalko 16/11/2019
Dernier Ajout
2019-11-05 01.JPG

Evènements à venir
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 11
BUG de Lyon
plus 278 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2019 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445