Hur speglar man ett ben?

Jag kan inte hitta alternativet för benspeglar.

När jag använde Blender för ungefär två år sedan gömdes spegeln i riggen / objektpanelerna, men nu ser jag inga uppenbara alternativ.

Hur kan jag spegla ben i 2.7+?

Svar

Gå in i redigeringsläge och tryck sedan på T för att öppna verktygspanelen. under alternativ hittar du en kryssruta som säger X-Axis Mirror . det.

ange bildbeskrivning här

Det här alternativet speglar åtgärder som utförs på ben över X-axeln. För att ställa in en rigg, ge bara benen ett suffix till vänster eller höger (t.ex. R / .L, _R / _L eller _right / _ vänster …) och se till att resten av namnen matchar. Ben som är centrerade behöver inte ett suffix, eftersom de inte speglas.

Gif

Kommentarer

  • Det är fantastiskt. Jag märkte aldrig den lilla fliken. Han ' s jus t slags gömning tyst är inte ' t han! TY
  • Flikarna orsakar mig inget slut på sorg … De ska lösa användbarhetsproblem … 🙁 det hände aldrig.

Svar

Blender 2.79b

Jag har just upptäckt att om du speglar med x-Axis-alternativet i verktygslådan, måste du namnge varje ben manuellt för båda sidor. Om du riggar en människa, en humanoid karaktär eller ett djur, det bästa sättet är INTE att kontrollera x-Axis-alternativet men följ stegen nedan:

  1. Edit Mode, välj alla ben som ska speglas på ena sidan (arm, ben, handfingrar )
  2. Se till att varje bennamn som ska speglas slutar med .L vilket betyder VÄNSTER (t.ex. hand.L). Detta är viktigt!
  3. Se till att markören är centrerad (Skift + C).
  4. Ditt nät måste också vara centrerat så att markören placeras vid basen
  5. Tryck på W och välj Symmetrize (duplicering är automatisk)
  6. Dina ben speglas nu och namnen blir automatiska matiskt uppdaterad med extension .R (som står för rätt).

Du är klar!

Kommentarer

  • Eller (i v2.79) kan du använda W > Symmetrize, det gör allt ovan på en gång.
  • När jag försöker alternativet Symmetrize verkar det duplicera tillsammans med Y-axeln och inte X-axeln. Först trodde jag att detta kan bero på att min rigg inte ' inte var riktad med framsidan av karaktären vänd längs Y-axeln (eftersom den tidigare var vänd nedåt X-axeln), men även efter att ha roterat allt, symmetriiserar det fortfarande den motsatta dimensionen till den jag vill ha. Några idéer?

Svar

. ..du måste namnge varje ben manuellt för båda sidor …

Ja, det kan vara en stor besvär,
om det visar sig att du importerade en G2f-karaktär från DAZ,
via .fbx eller Collada, och i Blender,
upptäcker du att DAZ-ankaret inte kom över felfritt.
I mitt fall tycker jag att jag måste justera fingerbenen, som jag, efter tillräckligt noggrannhet, kan uppnå på, säg, vänster hand;
men då vill jag att datorn ska upprepa allt det finjustera
automatiskt till höger.

Om jag prövar standardblenderalternativen händer ingenting, för
DAZ-ankaret för G2f (ditto V4) följer konventionen att
namnen på vänster och höger ben använder en prefix för l eller r.

Korrigering: V4 följde den konventionen; Genesis 1,2,3-figurerna
använder ett prefix av ”Vänster” och ”Höger” som visas av DAZ Studio;
dock överföringsprocessen, via Collada eller via .fbx ,
gör det så att från Blender-sidan är det du ser prefix l eller r,
och ditto för associerade vertexgrupper.

Naturligtvis, för symmetriseringens skull,
vill du verkligen inte byta namn på poäng av ben,
och sedan vara skyldig att byta namn på dem igen,
så att deras namn matcha toppgrupperna!

Tillfälle att damma av lite 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") 

Svar

tack så mycket för skriptet, det hjälpte mig mycket 🙂 Jag gjorde några justeringar av det: att kunna använda någon fördefinierad del av namnet för att spacifiera vänster och höger del: i mitt exempel: Jag använder ”LT” och ”RT” (dock inte mitt val)

här är det modifierade skriptet:

# # 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") 

Jag hoppas det skulle vara till hjälp 🙂

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *