Connexion
Menu Principal
Recherche
Menu secondaire
Image Aléatoire
lezard.jpg
Publicité
Formation Blender ElephormBlender 3d Elephorm


     




(1) 2 »


Renseignements sur les bugs corrigés des versions
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1373
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 20: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 00:49
Post(s): 970
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 16: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 18:10
De Sideula
Post(s): 1993
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 16: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 15:30
De Belgique
Post(s): 1373
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 18: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 18:10
De Sideula
Post(s): 1993
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 21: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 15:30
De Belgique
Post(s): 1373
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 08: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 18:10
De Sideula
Post(s): 1993
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 20: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 15:30
De Belgique
Post(s): 1373
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 09: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 18:10
De Sideula
Post(s): 1993
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 15: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 15:30
De Belgique
Post(s): 1373
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 09: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 Comportement 2.8    [1][2] 12 376 Aujourd'hui 14:28:25
Rimpotche 
Questions & Réponses [résolu] Problème de Sculpt 2 80 Aujourd'hui 05:31:23
MHB29 
Questions & Réponses [résolu] Epaisseur non constante avec Solidify - Murs 2 88 Hier 14:36:42
HarDrive 
Questions & Réponses [non résolu] Array : duplication circulaire 2 76 Hier 06:04:40
blendinfos 
Questions & Réponses [non résolu] Conseil pour une topologie 3 84 15/09 18:05:18
blendinfos 
Questions & Réponses Blender lumière 1 62 15/09 17:42:17
moonboots 
Questions & Réponses preferences utilisateur ne s'ouvrent plus 0 89 14/09 15:39:23
masje 
Questions & Réponses [résolu] Problème avec la symétrie    [1][2] 12 287 14/09 10:30:13
GFC 
Questions & Réponses Tableau d'objets déformés aléatoirement 3 99 14/09 10:11:10
WinZs 
Questions & Réponses galère d'importation SVG 5 193 14/09 08:42:16
Guppy88 
Questions & Réponses Utiliser Blend4Web? 1 75 14/09 07:07:16
WinZs 
Questions & Réponses Animation bvh 1 82 13/09 15:49:35
busanga 
Questions & Réponses riggin 2 110 13/09 11:14:08
debutant 
The Blender Clan 'tchat Demande de renseignements sur les caméras 360° 4 188 12/09 10:50:42
Laorz 
Questions & Réponses [résolu] UN TRACKING PLUS FONCTIONNEL 8 272 11/09 20:53:48
WinZs 
Questions & Réponses [non résolu] Papier translucide 4 416 11/09 09:29:35
zeromeetsinfinity 
Questions & Réponses changer le sens des normales 1 692 25/02/2017 19:40
Melodicpinpon 
Questions & Réponses Selection d'images pour le VSE 1 140 10/09 23:33:25
WinZs 
Questions & Réponses Mouvement de robe 8 179 10/09 21:05:08
Destruc18 
Questions & Réponses Je n'arrive pas à skinner mon pied... (débutant) 8 271 10/09 18:19:05
Aelendys 

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

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


plus...
Nouveaux membres
MarcusDero 17/9/2019
StaceyBask 17/9/2019
MarcelI12 17/9/2019
OlaAlcorn7 17/9/2019
SusieP6306 17/9/2019
Dessie0606 17/9/2019
Josh169457 17/9/2019
Jonas9766 17/9/2019
RickeyHkc2 17/9/2019
LeannaClaf 17/9/2019
Dernier Ajout
Forky-3D-ToyStory BC.png

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