Come rispecchiare un osso?

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.

inserisci qui la descrizione dellimmagine

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.

Gif

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:

  1. Modalità Modifica, seleziona tutte le ossa da specchiare su un lato (braccio, gamba, dita della mano )
  2. Assicurati che il nome di ogni osso da specchiare termini con .L che significa SINISTRA (ad esempio: mano.L). Questo è vitale!
  3. Assicurati che il cursore sia centrato (Shift + C).
  4. Anche la mesh deve essere centrata in modo che il cursore sia posizionato alla base di essa
  5. Premi W e seleziona Simmetrizza (la duplicazione è automatica)
  6. 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 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *