Non riesco a “trovare lopzione bone mirror.
Quando ho usato Blender circa due anni fa lopzione mirror era nascosta in i pannelli rig / oggetti, ma ora non vedo opzioni ovvie.
Come posso eseguire il mirroring delle ossa in 2.7+?
Risposta
Entra in modalità di modifica quindi premi T per aprire il pannello degli strumenti. sotto le opzioni, troverai una casella di controllo che dice X-Axis Mirror . Seleziona it.
Questa opzione rispecchierà le azioni eseguite sulle ossa lungo lasse X. Per impostare un rig, semplicemente dai alle ossa un suffisso sul lato sinistro o destro (ad es. .R / .L, _R / _L o _right / _left…) e assicurati che il resto dei nomi corrisponda. poiché non vengono rispecchiati.
Commenti
- È fantastico. Non ho mai nemmeno notato quella piccola scheda. Lui ' s jus Non è ' nascondersi silenziosamente! TY
- Le schede mi causano dolore infinito … Dovrebbero risolvere i problemi di usabilità … 🙁 non è mai successo.
Risposta
Blender 2.79b
Ho appena scoperto che se esegui il mirroring con lopzione X-Axis nella cassetta degli attrezzi, devi nominare ciascun osso manualmente per entrambi i lati. Se stai manipolando un umano, un personaggio umanoide o un animale, il modo migliore è NON selezionare lopzione Asse x ma seguire i passaggi seguenti:
- Modalità Modifica, seleziona tutte le ossa da specchiare su un lato (braccio, gamba, dita della mano )
- Assicurati che il nome di ogni osso da specchiare termini con .L che significa SINISTRA (ad esempio: mano.L). Questo è vitale!
- Assicurati che il cursore sia centrato (Shift + C).
- Anche la mesh deve essere centrata in modo che il cursore sia posizionato alla base di essa
- Premi W e seleziona Simmetrizza (la duplicazione è automatica)
- Le tue ossa sono ora specchiate e i nomi sono automatici aggiornato automaticamente con lestensione .R (che sta per right).
Hai finito!
Commenti
- Oppure (nella v2.79) puoi usare W > Symmetrize, che non tutto sopra in una volta.
- Quando provo lopzione Simmetrizza, sembra duplicarsi insieme allasse Y e non allasse X. Allinizio ho pensato che ciò potesse essere dovuto al fatto che il mio rig non era ' t orientato correttamente con la parte anteriore del personaggio rivolta lungo lasse Y (come prima era rivolta verso il basso sullasse X), ma anche dopo aver ruotato tutto, simmetrizza la dimensione opposta a quella che desidero. Qualche idea?
Risposta
. ..devi nominare manualmente ciascun osso per entrambi i lati …
Sì, può essere un grosso problema,
se si scopre che hai importato un personaggio G2f da DAZ,
tramite .fbx o Collada, e, in Blender,
scopri che larmatura DAZ non è stata impeccabile.
Nel mio caso, trovo che ho bisogno di aggiustare le ossa delle dita, cosa che,
dopo abbastanza diligenza, posso ottenere, diciamo, sulla mano sinistra;
ma poi, voglio che il computer ripeta tutto ciò messa a punto
sulla mano destra, automaticamente.
Se provo le opzioni standard di Blender, non succede nulla, perché
larmatura DAZ per G2f (idem V4) segue la convenzione secondo cui
i nomi delle ossa sinistra e destra usano un prefisso di l o r.
Correzione: V4 ha seguito tale convenzione; le figure di Genesis 1,2,3
utilizzano un prefisso “Left” e “Right” come mostrato da DAZ Studio;
tuttavia, il processo di trasferimento tramite Collada o .fbx ,
fa in modo che, dal lato di Blender, quello che vedi sia il prefisso l o r,
e idem per i gruppi di vertici associati.
Ovviamente, per simmetrizzare,
non vuoi davvero rinominare decine di ossa,
e poi essere obbligato a rinominarle di nuovo,
in modo che i loro nomi abbina i gruppi di vertici!
Occasione per rispolverare un po di 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")
Risposta
grazie mille per lo script, mi ha aiutato molto 🙂 Ho apportato alcune modifiche: per poter utilizzare qualsiasi parte predefinita del nome per spaziare la parte sinistra e destra: nel mio esempio: Sto usando “LT” e “RT” (non è mia scelta però)
ecco lo script modificato:
# # 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")
Spero sarebbe di qualche aiuto 🙂