Je ne trouve pas loption de miroir dos.
Quand jai utilisé Blender il y a environ deux ans, loption de miroir était cachée dans les panneaux rig / object, mais maintenant je ne vois aucune option évidente.
Comment puis-je refléter des os dans 2.7+?
Réponse
Entrez en mode édition puis appuyez sur T pour ouvrir le panneau des outils. sous options, vous trouverez une case à cocher indiquant X-Axis Mirror . Cochez
Cette option reflétera les actions effectuées sur les os le long de laxe X. Afin de configurer un rig, donnez simplement aux os un suffixe gauche ou droit (par exemple .R / .L, _R / _L ou _right / _left…) et assurez-vous que le reste des noms correspondent. Les os centrés nont pas besoin de suffixe, car ils ne sont pas mis en miroir.
Commentaires
- Cest génial. Je nai même jamais remarqué ce petit onglet. Il ‘ s jus t sorte de se cacher tranquillement nest pas ‘ t il! TY
- Les onglets ne me causent aucune fin de chagrin … Ils sont censés résoudre les problèmes dutilisabilité … : (ça nest jamais arrivé.
Réponse
Blender 2.79b
Je viens de découvrir que si vous effectuez un miroir avec loption Axe X dans la boîte à outils, vous devez nommer chaque os manuellement pour les deux côtés. Si vous truquez un humain, un personnage humanoïde ou un animal, le meilleur moyen est de NE PAS cocher loption Axe des X mais de suivre les étapes ci-dessous:
- Mode Édition, sélectionnez tous les os à refléter dun côté (bras, jambe, doigts de la main )
- Assurez-vous que chaque nom dos à refléter se termine par .L qui signifie GAUCHE (par exemple: hand.L). Cest vital!
- Assurez-vous que le curseur est centré (Shift + C).
- Votre maillage doit également être centré pour que le curseur soit placé à sa base
- Appuyez sur W et sélectionnez Symétrie (la duplication est automatique)
- Vos os sont maintenant reflétés et les noms automatiquement mis à jour avec lextension .R (qui signifie à droite).
Vous avez terminé!
Commentaires
- Ou (dans la v2.79) vous pouvez utiliser W > Symmetrize, cela fait tout ci-dessus à la fois.
- Quand jessaye loption Symmetrize, il semble se dupliquer le long de laxe Y, et non de laxe X. Au début, je pensais que cela pouvait être dû au fait que ma plate-forme nétait ‘ t orientée correctement avec lavant du personnage tourné le long de laxe Y (car il était auparavant orienté vers le bas de laxe X), mais même après avoir tout tourné, il symétrise toujours la dimension opposée à celle que je veux. Des idées?
Réponse
. ..vous devez nommer chaque os manuellement pour les deux côtés …
Oui, cela peut être un gros problème,
sil savère que vous avez importé un personnage G2f depuis DAZ,
via .fbx ou Collada, et, dans Blender,
vous découvrez que larmature DAZ nest pas parfaite.
Dans mon cas, je trouve que jai besoin dajuster les os des doigts, ce que,
après assez de diligence, je peux réaliser sur, disons, la main gauche;
mais ensuite, je veux que lordinateur répète tout cela réglage fin
sur la main droite, automatiquement.
Si jessaye les options standard de Blender, rien ne se passe, car
larmature DAZ pour G2f (idem V4) suit la convention que
les noms des os gauche et droit utilisent un préfixe de l ou r.
Correction: V4 a suivi cette convention; les chiffres Genesis 1,2,3
utilisent le préfixe «Gauche» et «Droite» comme indiqué par DAZ Studio;
cependant, le processus de transfert, via Collada ou via .fbx ,
fait en sorte que, du côté de Blender, ce que vous voyez soit le préfixe l ou r,
et idem pour les groupes de sommets associés.
Bien sûr, par souci de symétrisation,
vous ne voulez vraiment pas renommer des dizaines dos,
et ensuite être obligé de les renommer à nouveau,
pour que leurs noms correspond aux groupes de sommets!
Occasion de dépoussiérer certains Python:
# # Given: selected armature, with left/right bone names starting with l,r # (as is the case of DAZ Victoria 4 and Genesis2) or L,R # (Blender assumes they end in .L,.R) # # Does: symmetrizes armature, by copying coordinates of head,tail of each left EditBone # to corresponding right EditBone, but with x-axis mirrored, and copies roll with opposite sign. # # Author, Tom Telos, presents this in June 2017 to the Public Domain, as experimental code, no warranties. # import bpy #, bmesh , math , mathutils Arm = bpy.context.scene.objects.active if (Arm.type != "ARMATURE") : raise RuntimeError("Please select your armature; quit().") bpy.ops.object.mode_set(mode="EDIT") #"EDIT_ARMATURE" not available, implicit. #print( "Armature name: " , Arm.name , "\n" ) lNames = [] rNames = [] for EdBone in Arm.data.edit_bones : NamePrx = EdBone.name[0] if (NamePrx == "l" or NamePrx == "L") : lNames.append(EdBone.name) if (NamePrx == "r" or NamePrx == "R") : rNames.append(EdBone.name) #print( lNames , rNames , "\n" ) NamePairs = [] for iNamePair in range( len(lNames) ) : lName = lNames[ iNamePair ] rR = "r" if (lName[0] == "l") else "R" rName = rR + lName[1:] if rName in rNames : NamePairs.append([ lName , rName ]) #print( NamePairs , "\n" ) for NamePair in NamePairs : lName = NamePair[0] rName = NamePair[1] Arm.data.edit_bones[rName].head = Arm.data.edit_bones[lName].head Arm.data.edit_bones[rName].head[0] *= -1 Arm.data.edit_bones[rName].tail = Arm.data.edit_bones[lName].tail Arm.data.edit_bones[rName].tail[0] *= -1 Arm.data.edit_bones[rName].roll = - Arm.data.edit_bones[lName].roll # bpy.ops.object.mode_set(mode="OBJECT")
Réponse
merci beaucoup pour le script, cela ma beaucoup aidé 🙂 Jy ai fait quelques ajustements: pour pouvoir utiliser nimporte quelle partie prédéfinie du nom pour espacer la partie gauche et droite: dans mon exemple: Jutilise « LT » et « RT » (pas mon choix cependant)
voici le script modifié:
# # Given: selected armature, with left/right bone names starting with l,r # (as is the case of DAZ Victoria 4 and Genesis2) or L,R # (Blender assumes they end in .L,.R) # # Does: symmetrizes armature, by copying coordinates of head,tail of each left EditBone # to corresponding right EditBone, but with x-axis mirrored, and copies roll with opposite sign. # # Author, Tom Telos, presents this in June 2017 to the Public Domain, as experimental code, no warranties. # # Updated by Fouad jeniani October 2018: # to: support any predefined Left Right text anywhere in the bone name # for now user has to enter manually the names in scripts # import bpy #, bmesh , math , mathutils Arm = bpy.context.scene.objects.active if (Arm.type != "ARMATURE") : raise RuntimeError("Please select your armature; quit().") bpy.ops.object.mode_set(mode="EDIT") #"EDIT_ARMATURE" not available, implicit. print( "Armature name: " , Arm.name , "\n" ) lNames = [] rNames = [] for EdBone in Arm.data.edit_bones : if EdBone.name.find("LT") != -1 : lNames.append(EdBone.name) if EdBone.name.find("RT") != -1 : rNames.append(EdBone.name) print( lNames , rNames , "\n" ) NamePairs = [] for iNamePair in range( len(lNames) ) : lName = lNames[ iNamePair ] rR = "RT" rName = lName.replace("LT","RT") if rName in rNames : NamePairs.append([ lName , rName ]) print( NamePairs , "\n" ) for NamePair in NamePairs : lName = NamePair[0] rName = NamePair[1] Arm.data.edit_bones[rName].head = Arm.data.edit_bones[lName].head Arm.data.edit_bones[rName].head[0] *= -1 Arm.data.edit_bones[rName].tail = Arm.data.edit_bones[lName].tail Arm.data.edit_bones[rName].tail[0] *= -1 Arm.data.edit_bones[rName].roll = - Arm.data.edit_bones[lName].roll # bpy.ops.object.mode_set(mode="OBJECT")
Jespère ce serait utile 🙂