motion inspector
Modélisation biomécanique
Calcul cinématique sur un segment 12
Création de liaisons inter-segmentaires 18
Création des liaisons articulaires 21
Dans ce chapitre nous allons aborder les premiers éléments pour construire un modèle biomécanique permettant de calculer des grandeurs cinématiques, cinétiques et dynamique.
Construction d’un modèle simple.
Affichage du modèle en 3D.
Calcul de grandeurs cinématiques.
Calcul de grandeurs cinétiques.
Calcul de dynamique inverse
Le modèle que nous allons construire est un modèle de pendule simple dont les données cinématiques sont contenues dans le fichier « Pendule.c3d » du répertoire « Modélisation_1 ».
Pour construire le modèle, commencez par charger les données (Fichier/Ouvrir).
Un modèle est en fait une description des caractéristiques physiques du solide (taille, masse, moment d’inertie etc.).
Dans cet exemple, le pendule est composé d’un seul segment (un cylindre). Les marqueurs 1 et 2 correspondent respectivement aux deux extrémités du cylindre, le troisième marqueur étant à la périphérie.
La première étape consiste donc à calculer, pour chaque segment du modèle ces six coordonnées, trois positions (X, Y, Z) et trois rotations (, , ).
Pour calculer ces coordonnées, il est nécessaire de disposer d’au moins trois marqueurs non colinéaires par segment. Ces marqueurs doivent être positionnés de la façon suivante:
Les marqueurs un (P1) et deux (P2) sont sur l'axe longitudinal du segment et définissent la longueur de celui-ci.
Le marqueur trois (P3) est situé dans un autre plan et détermine l'axe OX (ou OY) du segment.
Ainsi, il est possible de calculer un repère orthonormé lié au segment :
Les orientations sont ensuite calculées ainsi que la matrice de transformation:
Cette figure représente une situation
typique ou les marqueurs 1 et 2 sont à chaque extrémité
du segment, le marqueur 3 étant à l’extérieur.
Cette
situation ne représente pas le cas idéal. Normalement
les marqueurs 1 et 2 devraient se trouver sur l’axe Z. Dans cet
exemple, il serait nécessaire de recalculer la position de
deux marqueurs virtuels se trouvant sur cet axe (cf. chapitre sur le
calcul des centres articulaires).
Avant de construire le modèle proprement dit, il faut définir les paramètres généraux de celui-ci. Les paramètres généraux du modèle correspondent au type de modèle (Libre ou modèle biomécanique déjà existant, masse totale du sujet, etc.). Tous ces paramètres sont localisés dans le panneau « Modèle » et peuvent être modifiés à tout moment.
Pour débuter la modélisation, choisissez l’option Nouveau Modèle du menu Modèle. Une boite de dialogue vous invite à choisir un type de modèle :
Modèle libre : ce modèle correspond à un modèle biomécanique où vous devez définir tous les paramètres de masse, d’inertie, ce centre de masse de chaque segment.
Le modèle de Winter est un modèle régressif simple, initialement en 2D, permettant d’évaluer les paramètres corporels en fonction du poids du sujet.
Le modèle de Chandler peut être considéré comme un modèle très similaire au modèle de Winter. C’est donc aussi un modèle régressif basé sur le poids total du sujet pour la détermination des paramètres corporels.
Segment |
Poids (Newton) |
Centre de
masse |
Tête |
0.032 PC + 18.70 |
66.3 |
Tronc |
0.532 PC – 6.93 |
52.2 |
Bras |
0.022 PC + 4.76 |
50.7 |
Avant Bras |
0.013 PC +2.41 |
41.7 |
Main |
0.005 PC + 0.75 |
51.5 |
Cuisse |
0.127 PC – 14.82 |
39.8 |
Jambe |
0.044 PC – 1.75 |
41.3 |
Pied |
0.009 PC + 2.48 |
40.0 |
Le modèle d’Hanavan est
un modèle géométrique, c'est-à-dire que
les paramètres segmentaires (poids, inerties, centre de
masse) sont définis par la forme (volume) du segment. Ce
modèle défini ainsi des primitives de forme pour
chaque segment. Il est ainsi possible de calculer le volume d’une
forme géométrique simple. En connaissant la masse
volumique du corps, il est alors possible de calculer la masse, les
moments d’inertie ainsi que la position du centre de masse de
tous les segments.
Ce modèle peut être plus précis
que les modèles régressifs mais nécessite de
connaitre les dimensions de tous les segments (ainsi que le poids du
corps).
Repère |
Mesure (m) |
Point |
Longueur de la main |
0.170 |
P1 |
Longueur du poignet aux doigts |
0.090 |
P2 |
Longueur de l'avant bras |
0.230 |
P3 |
Longueur du bras |
0.240 |
P4 |
Longueur du coude à l'acromion |
0.280 |
P5 |
Longueur du pied |
0.240 |
P6 |
Longueur de la jambe |
0.390 |
P7 |
Longueur de la cuisse |
0.370 |
P8 |
Longueur de la tête |
0.210 |
P9 |
Longueur du haut du tronc |
0.220 |
P10 |
Longueur du xyphion à l'acromion |
0.220 |
P11 |
Longueur du tronc central |
0.230 |
P12 |
Longueur du bas du tronc |
0.100 |
P13 |
Circonférence du poing |
0.235 |
P14 |
Circonférence du poingnet |
0.165 |
P15 |
Circonférence de l'avant bras |
0.225 |
P16 |
Circonférence du coude |
0.255 |
P17 |
Circonférence du bras |
0.295 |
P18 |
Circonférence du pied |
0.230 |
P19 |
Circonférence du coup de pied |
0.250 |
P20 |
Circonférence au niveau des orteils |
0.210 |
P21 |
Circonférence de la cheville |
0.255 |
P22 |
Circonférence de la jambe |
0.410 |
P23 |
Circonférence du genou |
0.400 |
P24 |
Circonférence du haut de la cuisse |
0.655 |
P25 |
Circonférence de la tête |
0.535 |
P26 |
Circonférence de la poitrine |
0.960 |
P27 |
Circonférence niveau xyphion |
0.960 |
P28 |
Circonférence de la taille au niveau du nombril |
0.870 |
P29 |
Circonférence au niveau des fesses |
1.090 |
P30 |
Largeur de la main |
0.090 |
P31 |
Largeur du poignet |
0.070 |
P32 |
Largeur du pied |
0.120 |
P33 |
Largeur des orteils |
0.100 |
P34 |
Profondeur de la hanche |
0.220 |
P35 |
Largeur du tronc au niveau de la poitrine |
0.350 |
P36 |
Largeur du tronc au niveau du xyphion |
0.300 |
P37 |
Largeur de la taille au niveau du nombril |
0.280 |
P38 |
Largeur du fessier au niveau du coccyx |
0.360 |
P39 |
Longueur xyphion - menton |
0.300 |
P40 |
Masse (Kg) |
67.000 |
|
Il est possible de différentier les
mesure du coté droit et gauche. Dans ce cas, toutes les
mesures sont doublées. En choisissant ce type de modèle,
il est nécessaire de fournir un fichier (Texte ou Excel)
contenant toutes les mesures selon le format ci-dessus.
Pour notre exemple, nous allons utiliser un modèle libre. Il sera donc nécessaire de fixer tous les paramètres segmentaires.
Une fois validé le type de modèle,
le panneau « Modèle » est alors affiché.
Celui-ci comporte deux fenêtres.
La première fenêtre donne la structure hiérarchique du modèle.
Lors de la création, le modèle ne porte pas de nom (celui-ci sera donné lors de l’enregistrement). Le nombre de segment est égale à zéro.
La seconde fenêtre donne accès à l’ensemble des paramètres du modèle.
Type de modèle (cf. ci-dessus)
Valeur non valide. Toutes les données égales à cette valeur ne seront pas utilisées dans les calculs du modèle.
Diviseur MKSA. Le modèle calcul l’ensemble des valeurs de sortie dans le système d’unité MKSA. Ainsi si les données en entrée sont des millimètres (cas des fichiers C3D), le diviseur est 1000.
Seuil de force. Cette valeur indique, dans le cas de l’utilisation de données en provenance de plateformes de forces, le seuil minimal de force. Les valeurs inférieures à ce seuil sont considérées comme nulles.
Fréquence de coupure. Cette valeur indique la fréquence de coupure utilisée pour le filtrage des données. Si cette fréquence est égale à la fréquence d’échantillonnage, aucun filtrage ne sera effectué.
Utiliser le nom du marqueur. En cochant cette option, le modèle prend en compte le nom des marqueurs et non pas son numéro. Il est ainsi possible d’appliquer ce même modèle à des fichiers différents, mais possédant les mêmes noms de marqueurs.
Spline. Cette option permet de recalculer éventuellement les données manquantes en utilisant un algorithme de type Cubic ou Quintic Spline.
Dérivée simple. La modélisation dynamique inverse nécessite de calculer des dérivées successives. Les algorithmes utilisés nécessitent un nombre de données importantes pour limiter les erreurs (effet de bords). Cependant, si le nombre de données (nombre d’images) est faible, le calcul de cette dérivée ne sera pas possible. Dans ce cas, il est préférable d’utiliser des algorithmes plus simples (mais plus imprécis) pour calculer les vitesses et les accélérations.
Moyennage. Le calcul des dérivées successives génèrent des données souvent bruitées. Il est parfois nécessaire d’utiliser un filtre « moyenneur » pour éliminer ce bruit de calcul.
Inverser la force de réaction. Normalement, dans un fichier C3D, les informations relatives à une plateforme de forces font références aux forces et moments de réaction. Dans certains cas, les données recueillis correspondent à la force appliquée (et non pas la réaction). Il est donc nécessaire d’inverser les forces et les moments.
Masse totale. Cette valeur (en kilogramme) doit correspondre à la masse totale du sujet (et éventuellement des ses accessoires).
Degré. Cette option permet de calculer l’ensemble des valeurs relatives aux rotations en degré (ou en radian si non coché).
Notation
angulaire. Les calculs d’angle en 3D ne peuvent pas
s’exprimer directement dans les axes généraux.
En effet, il n’est pas possible de projeter les angles sans
générer des erreurs importantes. Il existe cependant
plusieurs façons de représenter les angles en 3D :
angles d’Euler (12 séquences différentes), Angle
et axe, Quaternion.
En sélectionnant le type de notation,
tous les calculs angulaires seront effectués avec cette
notation.
Tester les marqueurs. Cette option permet de tester la validité des marqueurs avant le calcul du modèle. Si un marqueur est non valide, le modèle (pour le segment comportant ce marqueur) ne sera pas effectué.
Tester les centres de masse. Cette option, similaire à l’option précédente, indique de calculer les centres de masse des segments si seulement l’ensemble des marqueurs sont valides.
Une fenêtre accessoire donne les informations sur les propriétés d’affichage du modèle.
Cette étape va permettre de définir le segment. Il est nécessaire de sélectionner en premier l’axe longitudinal du segment (deux marqueurs) puis l’axe secondaire (un marqueur).
Sélectionner, dans l’ordre le point 2 (Point_2), puis le point 1 (Point_1) et enfin le point 3 (Point_3).
Une
fois cette sélection faite, valider la commande du Menu
« Modèle/Nouveau Segment).
Un
nouveau segment est alors créé (avec des paramètres
par défaut). Le panneau modèle comporte maintenant un
segment.
En sélectionnant ce premier segment [1], il est alors possible de modifier l’ensemble des paramètres du segment.
Le premier ensemble de paramètre rassemble la définition du segment :
Les
trois premières lignes définissent les marqueurs
constituant le segment.
La masse relative est une valeur entre 0
et 1 (de la masse totale)
CG correspond à la position
relative du Centre de masse en fonction de la longueur du segment
(distance P1P2).
Ixx, Iyy et Izz correspondent aux moments
d’inertie du segment.
L’axe principal défini l’axe
entre P1 et P2.
L’axe latéral correspond à
l’axe défini entre P1-P2 et P3.
La deuxième série de
paramètres concerne les paramètres d’affichage du
segment :
Le nom de celui-ci ,
La visualisation du
segment, des forces et des moments, sa taille, couleur, forme
etc.
Tous ces paramètres sont modifiables
Pour
notre exemple, le segment représente 100% de la masse totale
(valeur de masse relative = 1), Ixx et Iyy sont égales à
0.289 et Izz = 0.707. Le type de forme sélectionnée est
un cylindre.
Une
fois les paramètres fixés, il est possible de calculer
(et actualiser) le modèle par la commande du Menu
« Modèle/Exécuter le modèle en
cours ». Une fois le modèle calculé,
les icônes des segments seront modifiés.
Pour
terminer le modèle, il ne reste plus qu’à
l’enregistrer par la commande du menu « Modèle/Enregistrer
le modèle en cours ».
Lorsque le segment est sélectionné,
l’icône des graphiques
donne accès à un ensemble de calcul cinématique
(position, vitesse et accélération) ainsi qu’à
des calculs cinétiques et dynamique (Energies, forces et
moments).
Les
graphiques ainsi générés sont du même type
que les graphiques ceux la cinématique d’un marqueur
(cf. Partie 1). Une fenêtre graphique est alors crée
pour chaque calcul.
Ces données cinématiques et dynamiques (angulaires par exemple) sont dépendantes des paramètres du modèle.
Au cours de cette partie, nous allons introduire les premiers éléments pour une modélisation de plusieurs segments articulés.
La modélisation consiste en une réduction de la complexité. Dans le cas présent, un segment corporel est considéré comme un solide indéformable. Ceci est une approximation nous permettant d’utiliser les lois de la mécanique classique.
Les lois de la mécanique newtonienne sont appliquées à ces solides :
C’est ce principe de la dynamique qui va
permettre de calculer toutes les grandeurs dynamiques à partir
de la connaissance de la cinématique du segment et du modèle
anthropométrique associé. En effet, si on examine la
première équation, la somme des forces externes est
déterminée par la masse du segment (données
anthropométriques) et l’accélération de
son centre de masse (données cinématiques).
Ce même
raisonnement peut s’appliquer pour la deuxième équation.
La somme des moments externes est totalement déterminée
par la matrice d’inertie (données anthropométriques)
et les vitesses angulaires (données cinématiques).
Il
est alors possible de modéliser un segment sous la forme
suivante :
.
Ce segment, dont on a déterminé la cinématique du centre de masse (CM), possède de façon générique un torseur à son extrémité distale (Fd, Md) et un torseur à son extrémité proximale (Fp, Mp). Ces torseurs peuvent posséder une valeur quelconque (même nulle). L’importance de ces torseurs apparaît lors de la considération de la liaison entre plusieurs segments.
Liaison entre deux segments
Si on considère deux segments S1 et S2 liés par un point L :
Le
point de liaison pour le segment 1 est P1 (extrémité
proximale de S1) le point de liaison pour le segment 2 est D2
(extrémité distale de S2). Ces deux points sont
géométriquement confondus en un point L (sur la figure
ils sont disjoints pour plus de clarté).
O
S2
En effet :
S1
Ainsi, si on connaît en début de chaîne segmentaire le torseur externe distal (par mesure directe par exemple), il devient alors possible de calculer le torseur proximal du segment, donc le torseur distal du segment suivant. De proche en proche, on calcul toute la chaîne articulaire.
Cette méthode de dynamique inverse est souvent appelée méthode du segment libre, car aucune hypothèse n’est faite sur la « qualité » de la liaison.
Dans un premier temps, nous allons montrer comment réaliser très rapidement un modèle mécanique nous permettant de calculer seulement les grandeurs cinématiques.
Ensuite, en incluant les informations sur les masses et les inerties, nous serons capables de calculer des grandeurs cinétiques et énergétiques.
Tout d’abord, fermer tous les fichiers ouverts dans Motion Inspector.
Ouvrer maintenant le fichier « pendule-1.c3d ». Ce fichier est un fichier de données 3D, de 1000 images (fréquence 500 Hz). Les mouvements ne se déroulent que dans un seul plan. De plus, toutes les articulations (un seul d.d.l.) possèdent un axe de rotation parallèle. Le fichier « pendule-2.c3d » correspond à ce même pendule mais avec plus de degrés de liberté.
Ce fichier possède 7 points définissant 3 segments :
Segment 1 : Point_1 Point_2 et Point_3
Segment 2 : Point_2 Point_4 et Point_5
Segment 3 : Point_4 Point_ 6 et Point_7
Etape 0 : Nouveau Modèle (modèle libre)
La masse totale est de 4.19 + 2*2.36 = 8.91 Kg
Le coefficient MKSA est égal à 1000 (fichier C3D)
Les paramètres mécaniques du modèle sont les suivant :
Objet |
Masse(Kg) |
Masse relative |
Ixx et Iyy |
Izz |
Sphère |
4.19 |
0.470 |
0.0168 |
0.0168 |
Cylindre |
2.36 |
0.264 |
0.0191 |
0.00295 |
Sélectionnez les marqueurs 1, 2 et 3 (dans cet ordre) et dans le menu Modèle, validez l’option « Nouveau Segment ».
Ce
premier segment étant la sphère, fixer les différents
paramètres pour ce segment.
Recommencez cette
opération pour les deux autres segments :
Segment deux : Sélectionnez les points, dans l’ordre 2, 4 et 5 et ajoutez au modèle. Le type de forme est un cylindre pour ce segment.
Segment trois : Sélectionnez les points, dans l’ordre 4, 6 et 7, puis ajoutez ce segment au modèle.
Une fois ce modèle terminé, calculez le modèle (« Modèle/Exécuter le modèle en cours ».) puis enregistrez le (un modèle existe déjà pour ce fichier « pendule_1.bm4 »).
Une fois le modèle calculé, il est alors possible d’effectuer des calculs cinématiques et dynamiques (cf. ci-dessus). Ce modèle comporte plusieurs segments. Il devient alors possible de faire des calculs inter-segmentaires.
Ces calculs de cinématiques inter-segmentaires permettent de calculer des positions, vitesses et accélérations relatives (linéaire et angulaire). Il est nécessaire de sélectionner deux segments.
Le
premier segment est le segment mobile, le deuxième doit être
le segment fixe. Ainsi en sélectionnant en premier le
cylindre du bas, puis le deuxième cylindre, le menu des
graphiques affiche les calculs suivant :
Nous allons compléter ce modèle en ajoutant des liaisons mécaniques entre chaque segment. Ces liaisons vont permettre de calculer les efforts (forces et moments) qui seront transmis d’un segment à l’autre.
Le principe de propagation des efforts (cf. ci-dessus) détermine le mode de création des liaisons. La création doit suivre un ordre disto-proximal :
La première liaison doit être à l’extrémité du segment distal (dans notre modèle c’est le point 1 de la sphère).
La deuxième liaison, entre la sphère et le cylindre 1, correspond au point 2
La troisième liaison, entre cylindre 1 et cylindre 2, correspond au point 4
Enfin une dernière liaison est nécessaire pour fermer cette chaine cinématique.
Création
de la première liaison
Sélectionner
la sphère, puis le marqueur « Point_1 ».
Si
les segments masquent les marqueurs et donc rendent difficile la
sélection, il est possible de rendre ces segments transparent
(propriétés des segments). Les marqueurs deviennent
alors visibles et facilement sélectionnables.
Une fois cette sélection effectuée, validez la création de la première liaison dans le menu « Modèle/Créer la première articulation ».
La
liste du modèle s’enrichie maintenant d’une liste
d’articulation.
Le symbole de l’articulation est de couleur rouge lorsque le modèle à été modifié et nécessite d’être recalculé.
Pour créer une liaison entre deux segments (dans notre cas, la sphère et le premier cylindre), il est nécessaire de sélection en premier le segment distal (la sphère), puis le segment proximal et enfin la point de liaison (le marqueur 2).
Une
fois cette sélection faite, valider la commande du menu
« Modèle/Nouvelle articulation ».
Renouveler cette opération entre le cylindre 1 et le cylindre 2.
Il
ne reste plus qu’à « fermer » la
chaine cinématique pour terminer ce modèle
multi-segmentaire. Sélection le dernier segment (proximal) et
le marqueur le plus proximal (point 6) et valider la commande du menu
« Modèle/Dernière articulation ».
Le modèle est maintenant terminé et peut être recalculé. Ce modèle complet est déjà enregistré « pendule_2 .bm4 ».
Une
fois le modèle total calculé, il est alors possible
d’afficher des données cinématiques (position,
vitesse et accélération) et dynamiques (forces et
moments) pour chaque articulation.
Sélectionnez, par exemple la dernière articulation (articulation proximale). Le menu graphique vous permet maintenant d’afficher différentes courbes.
Il est aussi possible d’afficher les forces et les moments sur l’animation 3D.
La dernière étape de ce chapitre consiste à réaliser un modèle complet du membre inférieur en ajoutant des données en provenance de la plateforme de force. Ces données permettront de calculer les efforts au niveau des différentes articulations (cheville, genou et hanche).
Les données initiales (C3D) se trouvent dans le fichier « marche.c3d » du répertoire « modélisation_2 ». Ces données possèdent une particularité. Les marqueurs du talon (gauche et droit) ne sont pas valides et la modélisation du pied va donc poser un problème. Nous allons voir comment il est possible de remédier à ce problème.
Le modèle anthropométrique associé est un modèle de « Chandler ». Créer un nouveau modèle, la masse totale étant de 65 kg.
La démarche de modélisation est la suivante :
Premier
segment : pied droit. Comme nous l’avons
déjà évoqué, il n’est pas possible
de sélectionner trois marqueurs pour le pied. En effet le
marqueur du talon (RHEE) n’est pas un marqueur valide.
Ce segment sera donc modélisé avec seulement deux
marqueurs : RTOE et RANK. Dans ces conditions, le
calcul des rotations autour de l’axe longitudinal ne sera pas
possible. Sélectionnez ces deux marqueurs et ajouter un
segment correspondant au pied.
Jambe droite. Sélectionnez les trois marqueurs RANK-RKNE et RTIB. Ajouter un segment de type jambe (shank)
Cuisse droite. Sélectionnez les trois marqueurs RKNE-RASI et RTHI et ajoutez un segment de type cuisse.
Pied gauche. Procédez de la même façon que pour la pied droit avec les marqueurs LTOE et LANK
Jambe gauche : LANK-LKNE et LTIB. Ajouter un segment de type jambe (shank)
Cuisse
gauche : LKNE-LASI et LTHI et ajoutez un
segment de type cuisse.
Recalculer le modèle final.
Il reste maintenant à créer les liaisons entre les segments. Le fichier de données comporte, en plus des données cinématiques, des données en provenance de deux plateformes de forces. Au cours de cet essai, le sujet pose le pied droit sur la plateforme 2 et le pied gauche sur la plateforme 1. Le numéro de chaque plateforme est affiché lors de la phase de modélisation. Il est ainsi aisé de déterminer la plateforme utilisée.
Contact
du pied. La première liaison va symboliser le contact du pied
droit sur la plateforme 2. Sélectionnez le marqueur RTOE
et le segment correspondant au pied droit et créez une
articulation. Il est maintenant possible de sélectionner la
plateforme dans les propriétés de l’articulation.
Dans
le champ « plateforme de forces »,
sélectionnez la plateforme 2 pour établir une liaison
entre le point le plus distal (RTOE) du segment et la plateforme de
forces. Les données de cette plateforme seront utilisées
pour calculer les moments et les forces distales de ce premier
segment.
Dans le cas où une plateforme de forces n’est
pas directement enregistrée dans le fichier C3D, il est
possible d’utiliser des données analogiques pour
fournir ces mêmes informations. Le champ « contact »
permet ainsi de spécifier les données de forces, de
moment ainsi que du point d’application de la force (Xp et
Yp).
Articulation de la cheville : Sélectionnez le pied, la jambe ainsi que le marqueur RANK et créer une articulation.
Articulation
du genou : Sélectionnez la jambe et la cuisse ainsi que
le marqueur RKNE et créer une articulation.
Articulation
de la hanche : Sélectionnez la cuisse et le marqueur
RASI et créez l’articulation terminale.
Recalculer le modèle final.
Il est possible de changer la forme des segments corporels et ainsi leur donner une forme « plus réaliste ». Par défaut, lors de la construction d’un segment, la forme adoptée est une forme de type « os ». Les propriétés du segment permettent de modifier cette forme par défaut.
Des
formes simples sont proposées (sphère, cylindre et
boite). Il est cependant possible d’associer un segment à
une forme quelconque. Cette forme, matérialisée par un
fichier (OBJ ou 3DS) peut être sélectionnée. Ce
fichier forme doit se trouver dans le même répertoire
que le fichier de données C3D.
En sélectionnant « forme », une boite de dialogue se sélection des fichiers vous permet de choisir le fichier. Dans notre exemple, un fichier « GolemBones.obj » rassemble une collection de formes correspondant aux différents segments corporels. Choisissez ce fichier et sélectionnez la forme (le segment) désirée dans la boite de sélection.
Pour notre exemple, nous allons choisir l’objet « RightFoot » pour symboliser le pied droit.
Il
reste maintenant à orienter correctement la forme importée.
En effet, les objets enregistrés dans les fichiers OBJ ou 3DS
peuvent être dessinés dans un repère très
différent du repère de calcul de notre modèle.
Il convient donc de modifier la position et/ou l’orientation de
la forme pour qu’elle s’adapte à la représentation
de notre modèle.
Cette illustration montre très clairement que le pied est mal orienté (le calcanéum se trouve à la face supérieure). En première approximation si est nécessaire d’effectuer une rotation de 180 degrés autour de l’axe longitudinal.
Ces modifications de position et d’orientation sont directement accessible dans les propriétés 3D du segments.
Les champs PosX, PosY et PosZ définissent les déplacement de la forme importée par rapport au repère du segment.
Les
champs Rx, Ry et Rz définissent les trois angles (en degré)
d’Euler permettant l’orientation de la forme dans le
repère du segment.
Il est possible d’entrer directement la valeur dans le champ ou de modifier cette valeur en utilisant les flèches (haut et bas) situées à l’extremité du champ.
De même, il est possible de modifier la taille du segment (dans le cas de formes importées, seule la taille Z est considérée).
Ainsi en modifiant la taille, la position et l’orientation, il est possible d’avoir une représentation plus réaliste du modèle.
Taille
Z = 0.3
PosX = 0.03
Pos Z = 0.05
Rz = 180
Vous pouvez procéder de la même façon pour tous les autres segments.
Le modèle est ainsi complet. Il existe cependant un problème quant à la détermination des centres articulaires. De façon générale, les centres articulaires doivent être calculés à partir des positions des marqueurs et il est souvent, sinon toujours, erroné d’utiliser directement la position d’un marqueur pour définir les axe des segments.
Motion Inspector possède un langage de script et des bibliothèques associées permettant de calculer des centres articulaires et même des modèles complets.
Les données correspondant aux marqueurs sont en fait localisées sur la partie externe du segment corporel. Pour déterminer l’axe longitudinal du segment il est donc nécessaire de recalculer de nouveaux « marqueurs virtuels ».
Cas 1 : il existe 4 marqueurs par segment. Ces quatre marqueurs sont disposés symétriquement par rapport au diamètre du segment (points rouges). Il est donc facile de calculer le milieu de deux marqueurs (points verts).
Cette
situation se retrouve, par exemple, pour le membre supérieur.
Le bras est composé de 4 marqueurs : EpauleD1, EpauleD2,
CoudeD1, CoudeD2.
Pour créer un nouveau marqueur, une seule ligne de script 3DVL est nécessaire.
mkMilieu("EpauleD1", "EpauleD2", "RSJC");
mkMilieu("coudeD1", "coudeD2", "REJC");
Ces deux lignes de script montrent comment créer deux marqueurs RSJC et REJC. Ces deux marqueurs seront assimilés, pour cet exemple, aux centres articulaires.
Ce segment possède maintenant 6 marqueurs. Le solide est alors complètement défini par au moins trois marqueurs (les deux points verts, plus un des points rouges définissant l’axe latéral).
Cas
2 : il existe deux marqueurs sur le segment. Ces deux
marqueurs sont disposés sur la face externe du segment. C’est
le cas pour la jambe droite et la cuisse droite.
Il est donc nécessaire de connaître une information supplémentaire : le diamètre (ou le rayon) de chaque extrémité du segment.
La première étape consiste à calculer un repère local au segment. Ce repère local peut être déterminé à partir d’autres marqueurs déjà existants. Par exemple, pour la cuisse, le repère local est construit à partir de "genouD", "epineILLD", "gdTrocD"
Une fois ce repère construit, il suffit de calculer un déplacement (en coordonnées locales : dx, dy, dz) du marqueur existant selon un axe latéral. Cette procédure de calcul d’une position en coordonnées locales « devrait » être effectuée sur des données sans mouvement (fichier statique). Cependant, si l’on ne dispose pas de telles données, le calcul de la position locale sera effectué sur le début du fichier.
Une fois la position estimée en coordonnées locales, il ne reste plus qu’à calculer la position du nouveau marqueur, en coordonnées globales, sur l’ensemble du fichier.
Toutes ces opérations sont réalisées par une seule ligne de code 3DVL :
jntMarkerOffset(debut, fin, "genouD", "epineILLD", "gdTrocD", "RKJC", -ds, 0.0, 0.0);
Le détail du calcul peut être consulté dans le fichier bibliothèque « joints.3dh » situé dans le répertoire « include » du répertoire programme.
Cas 3 : c’est le cas symétrique du cas 2. Les deux marqueurs sont situés sur la partie interne du segment.
jntMarkerOffset(debut, fin, "genouG", "epineILLG", "gdTrocG", "LKJC", ds, 0.0, 0.0);
Cas 4 : La position de l’articulation de la hanche ne peut pas être estimée par cette méthode. En effet, le trochanter ne se trouve pas au même niveau que l’articulation (hauteur et position latérale). Une autre méthode est alors utilisée1. Cette méthode permet d’estimer la position du centre articulaire de la hanche en utilisant des repères anatomiques situés sur le bassin. Une ligne de script permet de calculer cette position :
jntHipCenters("epineILLD", "epineILLG");
Ces différents cas se retrouvent dans notre exemple. En général, il est possible de définir une procédure standardisée permettant de recalculer l’ensemble des marqueurs virtuels et centres articulaires. Il suffit, par exemple, de disposer d’un script 3DVL s’appliquant à un ensemble de marqueurs disposés toujours de la même façon (aux mêmes repères anatomiques) et dont les noms sont aussi standardisés. Cette procédure, souvent appelée « Marker Set » vous permettra d’automatiser la procédure de modélisation (cf. fichier dans le répertoire « Modélisation\Marker Set » pour un exemple).
Dans notre script, le modèle est reconstruit étape par étape :
Procedure MainModel()
// Cette procédure calcule un modèle général avec un marker set classique
// afin de recalculer les positions des marqueurs pour le modèle complet.
//
Foot(); // Pied TOE->HEE(z)-AJC(y)
Shank(); // Jambe : AJC->KJC(z)-ANK(y)
// Cuisse : KJC->HIP(z)-KNEE(y)
Pelvis(); // Pelvis : RASI->LASI(y)-SACR(z)
// Abdomen : MHIP->LTHO(z)-HIP(y)
// Thorax LTHO->UTHO(z)-SHO(y)
Shoulders(); // Epaule
Head(); // Tête : MSHO->MHEAD(z)-LFHD(y)
Arms(); // Bras Humerus : SJC->EJC(z)-ELB(y)
// Avant bras : EJC->WRI(z)-FRA(y)
end;
En résumé, il est donc nécessaire de calculer de façon aussi précise que possible les axes des segments ainsi que les centres articulaires. Ces calculs dépendent de la localisation initiale des marqueurs et du type de mouvement que l’on enregistre. Ainsi, il est souvent nécessaire de disposer d’un « marker set » et d’un script associé en fonction de la situation expérimentale.
1 cf. Alexander et al. « A comparison of the accuracy of several hip center location prediction methods ». J. Biomechanics, 23, 6, 617-621.