Manuel du Modding pour Armed Assault
Accueil du site > Tutoriels > Un Personnage de A à Z > 3. Pondération

3. Pondération

lundi 14 janvier 2008, par lodu


Le poids des vertices, le choc des polygones

Nous voici donc devant un probléme : nous avons modélisé un personnage, du casque aux rangers ; nous avons, dans cet ordre, nommées les différentes sélections qui le compose, en se référant, par exemple, au modèle de soldat US fourni par BIS ; nous avons déployée la maille, via l’UVEditor.

Mais... il manque quelque chose pour approcher la perfection. Il nous manque, en fait, un peu de pondération sur les parties du modèle appelées à se déformer sous l’effet des différentes animations.

Autrement dit, dans un langage un peu plus clair, un « poids » est attribué aux sélections, toutes les sélections, du modéle. Ce poids, d’une valeur comprise entre 1 et 100, est rentré manuellement dans la fenêtre dédiée, justement appelée « weight ».

Fenétre que l’on ouvre dans un menu contextuel qui apparaît quand on clique droit sur une sélection. Ici je suis en train d’ouvrir celle affectée à la sélection « LeftArm ». Le principe est le suivant : les valeurs se rapprochant du 1 sont destinées à assouplir, arrondir (carrément), les différents polygones qui seront déformés par l’anime, tandis que celles qui s’en éloignent, pour aller vers le chiffre 100, produiront des maillages « durs », cassants, à angles droits.

Quand on fait un essai sur un cilyndre segmenté en plusieurs parties, chacune d’entre elle ayant été nommée en tant que sélection : 01, 02, 03, dans mon exemple, on s’aperçoit, avant attribution des valeurs de poids, qu’elles sont toutes par défaut au chiffre 100.

De plus, la couleur des vertices sélectionnés est uniformément rouge. Si, comme sur l’autre image, je sélectionne la partie 02 et que je rentre des valeurs faibles dants toutes les sélections présentes dans la fenêtre, je me rends compte que ces valeurs font baisser l’intensité, ou changent la couleur des vertices affectés : ils deviennent bleus. Il faut visualiser cet effet comme étant un changement d’état de l’objet, l’expression d’une élasticité du modéle, qui se traduira, ingame, par une déformation harmonieuse, si tant est que nous ayons envie de lui affecter une animation. (on va se dire que c’est un tentacule de pieuvre).

Pour rentrer les valeurs, il faut double cliquer sur le champ ou l’icône de pourcentage à gauche de la fenêtre, puis cliquer une fois sur l’icône pour valider la valeur.

Quand on resélectionne la partie transformée, par l’intermédiaire de la fenétre des sélections, on découvre donc ce beau bleu.

Attention, be careful, vnimanié : quand on a produit un tel résultat, il ne faut surtout pas rajouter d’autres polygones à la sélection en entourant tous les polygones avec la souris dans l’espace 3d, sinon l’on perd toutes les informations de poids : en clair, toutes les valeurs se remettent à 100.

Au besoin, il vaut mieux cliquer sur la sélection, puis englober, avec la souris, les vertices supplémentaires, avant que de faire « redefine » pour l’ensemble.

Il faudra quand même mettre des valeurs pour les nouveaux polygones, mais on pourra se baser sur les valeurs conservées de la partie adjacente.

Avant que d’aller plus loin, venons en aux sélections. Donc, sur notre modéle, il faut donc implémenter celles çi, en s’inspirant du modèle de soldat US fourni par BIS.

On copie le premier lod ; sans les proxys ; dans la fenêtre du premier lod de notre modéle, et dans la foulée, sans le déselectionner, on le déplace de quelques carreaux dans la profondeur Z. Ensuite, on s’inspire des sélections du modèle de BIS, (une à une), pour définir les notres aussi fidélement que possible, par rapport au modèle dont nous disposons à l’arriére, comme sur l’autre screen. Bien entendu, nous sommes dans le domaine de l’approximation et du « feeling » et certaines constantes doivent être respectées pour éviter de facheuses déformations : les polygones et vertices des articulations ne doivent pas être trop changées dans leur conception originelles ; les autres parties, quand à elles, peuvent subir des transformations profondes de structures et de formes, pour arriver au résultat souhaité, mais il est bon de savoir que l’on risque alors des déformations mal fichues pendant la lecture des animations.

Prenons mon Chernanien en tenue hiver : pour simuler l’aspect coton fourré de l’uniforme, j’ai du arrondir et grossir la silhouette du personnage, pour qu’en comparaison avec un modèle habillé pour un climat plus tempéré, la différence et l’impression d’enmitouflage saute aux yeux.

Un des problémes constatés, consiste en une mauvaise déformation des sélections dont le nom se termine par « _roll », qui correspondent, je pense, à l’ effet recherché par les devs, de donner une impression de flottement des vêtements autour des menbres des persos, lorsqu’ils se meuvent.

Ces problémes, inhérents aux animations réalisées sur des modéles bien précis et bien pondérés, peuvent être résolus soit en réduisant la superficie de ces sélections, soit, au contraire en l’augmentant ou en la répartissant différement sur le perso.

Une astuce pour se faciliter la vie : importer une animation dans l ’espace 3d et se servir de la possibilité de la visionner frame aprés frame, pour trouver les endroits précis des sélections qui posent probléme et les modifier donc en conséquence. Pour ce faire, il faut ouvrir la fenêtre d’animation : Comme indiqué sur les trois screens ci dessus, il faut aller chercher l’anim, (du dossier « anims », dans le dossier addons du jeu, préalablement « dépébéoisé ») en faisant un clic droit dans la fénêtre Animations et en cliquant sur « From Matrices », tout en bas, et en allant donc à la pêche à l’anim, en cherchant le chemin adéquat. Celle çi se déroule dans la fenêtre en autant de « frames » qui la compose.

La premiére, avec une valeur de 0,500000, correspond à la pose statique du modéle, bras tendus sur les cotés. Si l’on clique sur la valeur de la deuxiéme frame, on s ’aperçoit alors que l’animation commence et que le modèle est « hissé », en conséquence au niveau du sol virtuel. La plante des pieds est en contact précisément là ou le vertice du lod « land contact », joue son rôle de repére.

Toutes ces opérations ont été effectuées AVANT la pondération, et seront aussi à revoir, peaufiner aprés la mise en place des poids, toujours sur le même premier lod.

Tout bien réfléchi, on peut également envisager de ne régler les sélections, qu’une fois les poids attribués, et ce pour éviter une redite, du temps perdu, etc.

En ce domaine, comme en bien d’autres, c’est chacun sa façon de faire : je vous donne des indications sur mon débroussaillage, pas une recette figée, ni dogmatique...

Pour en terminer avec les frames de l’animation, je vous décrit ma méthode.

Je m’aperçois donc que ma sélection « LeftUpLeg », par exemple, me pose un probléme dans le dos du personnage avec un vertice trop déplacé vers l’extérieur et qui donne l’impression qu’une fléche le transperce:figure 1. Pour y remédier, on se met en sélection de vertice, comme indiqué sur le petit screen au dessus, puis on presse simultanément les touches « ctrl et shift », en bas à gauche du clavier, et l’on entoure en traçant un cercle invisible avec le bouton gauche de la souris, le vertice que l’on veut ainsi déselctionner, comme sur la figure 2.

Nos modifications doivent être enregistrées, mais pas n’importe comment : pour le moment je n’ai pas d’autre méthode que de copier l’ensemble du lod, PREALABLEMENT remis en position statique neutre,(figure 3) en cliquant sur la premiére frame 0,500000, puis en fermant la petite fenêtre d’animation et dans la foulée on rouvre le modèle déjà présent à l’écran en ignorant superbement les mises en garde du programme qui claironne à qui veut bien lire que l’on va perdre les modifications effectuées si l’on n’enregistre pas notre travail. Justement, on ne veut pas enregistrer et donc on rouvre aussitôt le même modèle dont on efface tout le premier lod et dont on colle l’équivalent modifié que l’on a pris soin, comme précédement expliqué, de mettre en réserve dans le presse papier.

Pourquoi procéder ainsi ? Tout simplement parce que la fenêtre animation, même désactivée, via le menu de bulldozer,(RTMpreview/Clear RTM), continue gaillardement à travailler pour son propre compte et à nous mettre le bazar ; si vous ne voyez pas ce que je veux dire, essayez donc de faire un « save as » tout bête et vous allez comprendre votre douleur quand vous rouvrirez le modéle...

Il faut également savoir que nos modifications ne sont vraiment visibles qu’une fois l’animation et le modèle « rechargés ».

Si vous essayez de voir de nouveau le perso dans la frame malgracieuse qui vous a tapée dans l’oeil, tout de suite après avoir neutralisé le ou les vertices qui vous posaient problème, vous n’allez absolument rien voir, sinon ce qui vous chagrinait auparavant. Moralité : rechargez et le perso et l’animation... (Me tapez pas dessus : ce n’est pas moi le concepteur du programme).

Une fois nos sélections fidèlement appliquées, nous allons faire en sorte de les pondérer.

Tout d’abord, on peut remarquer que l’on pourrait très bien envisager de définir nos valeurs du perso, tout seuls comme des grands. Il suffirait pour cela de s’inspirer du fonctionnement de nos vraies articulations, et remplir les champs de « weight » de manière logique, mais tout de même empirique et approximative.

Pourquoi s’embêter, puisque l’on dispose du modèle de BIS... Pour ce faire, et pour vous épargner les détails du comment j’ai fait avec deux instances d’O2PE, (je cause, je cause), j’ai préparé un tableau, dont je vais vous expliquer le fonctionnement.

Ce tableau est à lire, et à utiliser de la manière suivante. On ouvre la fenêtre « weight » de la première sélection de notre modèle tout neuf et on remplace TOUTES les valeurs trouvées sur les autres sélections, en plus de celle que nous avons ouverte, (LeftArm, sur cet exemple), par celles correspondantes trouvées dans le tableau. La première colonne, à gauche, correspond aux noms des sélections que l’on trouvera, au fur et à mesure de notre progression dans la fenêtre « weight », et dont nous changerons donc les valeurs, en plus de celle choisie au départ.

Dans notre exemple de « LeftArm », nous trouvons, en plus de LeftArm, les sélections LeftForeArm, Spine2, Spine3,etc, dont nous changeons les valeurs, toutes à 100, par celles du tableau ci dessous, en cherchant les intersections entre « LA » et les noms entiers de la première colonne.

Évidement, les blancs correspondent à rien, aucune valeur. ( certaines sélections, se terminant par injury et d’autres, ne jouent aucun rôle dans les déformations : il n’y a donc pas besoin de changer leur valeur).

Les colonnes suivantes, représentent ces mêmes sélections, mais uniquement désignées par leur lettres en capitales d’imprimerie. Elles correspondent aux sélections de O2PE, dont on ouvrira les fenêtres « weight » respectives, dans cet ordre de progression.

On continue donc par la sélection suivante,(colonne « LAR »), dont on ouvre la fenêtre « weight », et dont on change les valeurs de toutes les sélections trouvées en plus de « LAR », par les valeurs trouvées sur le tableau, etc, etc, jusqu’à la fin du tableau et donc de toutes les sélections animables, composants un modèle de personnage.

JPG - 228.2 ko

Nota Que d’autres sélections, dans la fenêtre « weight », apparaissent en plus de celle que nous avons choisie, et soient affectées par des changements de valeurs, est tout à fait logique, dans la mesure ou ces sélections adjacentes reçoivent sur leurs vertices, une partie du poids attribué.

Dans d’autres logiciels, plus professionnels,des outils dédiés sont disponibles pour effectuer cette opération de pondération, ou de déterminer des zones d’influences, dont les effets ressemblent à un dégradé entre deux ou trois couleurs, qui permettent à l’opérateur de visualiser la « force » ou la souplesse du peignage effectué sur les vertices.

Dans O2, le dégradé est présent à faible dose, du rouge au bleu, mais le principe est sensiblement le même.

La méthode, à première vue, apparaît fastidieuse, mais, à défaut d’en avoir trouvé une plus simple et plus rapide, c’est pour l’instant le seul moyen que je connais pour arriver à peindre ces pondérations sur un perso créé de toute pièce.

Le gain, car il y en a quand même un, consiste, une fois cette action effectuée, ainsi que celle du placage des coordonnées UV par le biais de l’UVEditor, sur le premier lod du modèle, à dupliquer ce perso et à le copier dans le deuxième lod, puis à le dégrader pour l’alléger en polygones, en prenant soin de réajuster le maillage UV dans son editor attitré.

Une fois ce nouveau lod implémenté, on recommence sur un troisième, sur un quatrième... six lod de distance en tout, en divisant par deux,(approximativement) les polys à chaque opération. Le résultat sera un modèle quasi fini dont TOUS les lods auront conservés les coordonnées de pondération et de texture, d’une manière quasi parfaite. Donc gain de temps appréciable quand même.


Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | SPIP