Hoe een bot spiegelen?

Ik kan “de botspiegeloptie niet vinden.

Toen ik Blender ongeveer twee jaar geleden gebruikte, was de spiegeloptie weggestopt in de rig / object-panelen, maar nu zie ik geen voor de hand liggende opties.

Hoe kan ik botten spiegelen in 2.7+?

Antwoord

Ga naar de bewerkingsmodus en druk op T om het paneel Tools te openen. onder opties vindt u een selectievakje met de tekst X-Axis Mirror . it.

voer hier de afbeeldingsbeschrijving in

Deze optie spiegelt acties die zijn uitgevoerd op botten over de X-as. Om in te stellen een rig, geef de botten gewoon een linker of rechter achtervoegsel (bijv. .R / .L, _R / _L of _right / _left …) en zorg ervoor dat de rest van de namen overeenkomt. Botten die gecentreerd zijn, hebben geen achtervoegsel nodig, omdat ze niet worden gespiegeld.

Gif

Reacties

  • Dat is geweldig. Ik heb dat kleine tabblad niet eens opgemerkt. Hij ' s jus Een soort van stilletjes verstoppen is niet ' t hij! TY
  • De tabbladen bezorgen me eindeloos veel verdriet … Ze zouden bruikbaarheidsproblemen moeten oplossen … 🙁 het is nooit gebeurd.

Antwoord

Blender 2.79b

Ik heb net ontdekt dat als je spiegelt met de x-as-optie in de gereedschapskist, je elk bot handmatig moet benoemen voor beide kanten. Als je een mens, een mensachtig personage of een dier, is de beste manier om NIET de x-as-optie aan te vinken, maar de onderstaande stappen te volgen:

  1. Bewerkingsmodus, selecteer alle botten om aan één kant te spiegelen (arm, been, handvingers )
  2. Zorg ervoor dat elke botnaam die moet worden gespiegeld eindigt op .L, wat LINKS betekent (bijvoorbeeld: hand.L). Dit is essentieel!
  3. Zorg ervoor dat de cursor gecentreerd is (Shift + C).
  4. Je mesh moet ook gecentreerd zijn zodat de cursor er onderaan staat
  5. Druk op W en selecteer Symmetrie (duplicatie is automatisch)
  6. Je botten worden nu gespiegeld en de namen automatisch matically bijgewerkt met extensie .R (wat staat voor rechts).

Je bent klaar!

Reacties

  • Of (in v2.79) je kunt W > Symmetrize gebruiken, dat doet allemaal tegelijk.
  • Als ik de Symmetrize-optie probeer, lijkt het te dupliceren samen met de Y-as en niet met de X-as. In eerste instantie dacht ik dat dit zou kunnen zijn omdat mijn rig niet ' t correct was georiënteerd met de voorkant van het personage naar de Y-as gericht (zoals voorheen naar de X-as was gericht), maar zelfs nadat alles is gedraaid, symmetrisch nog steeds in de tegenovergestelde dimensie van degene die ik wil. Enig idee?

Antwoord

. ..je moet elke bone voor beide kanten handmatig een naam geven …

Ja, dat kan een groot probleem zijn,
als blijkt dat je een G2f-personage hebt geïmporteerd uit DAZ,
via .fbx of Collada, en, in Blender,
je ontdekt dat het DAZ-armatuur niet foutloos is overgekomen.
In mijn geval vind ik dat ik de vingerbeenderen moet aanpassen,
die ik, na voldoende ijver, kan bereiken op bijvoorbeeld de linkerhand;
maar dan wil ik dat de computer dat allemaal herhaalt automatisch afstemmen
aan de rechterkant.

Als ik de standaard Blender-opties probeer, gebeurt er niets,
de DAZ-armatuur voor G2f (idem V4) volgt de conventie dat
de namen van linker- en rechterbeenderen een prefix van l of r.

Correctie: V4 volgde die conventie; de Genesis 1,2,3-figuren
gebruiken het voorvoegsel “Links” en “Rechts”, zoals weergegeven door DAZ Studio;
echter het overdrachtsproces via Collada of via .fbx ,
maakt het zo dat, van de Blender-kant, wat je ziet het voorvoegsel l of r is,
en idem voor de bijbehorende vertexgroepen.

Natuurlijk, omwille van de symmetrie,
wil je echt geen scores van botten hernoemen,
en dan verplicht zijn om ze opnieuw te hernoemen,
zodat hun namen match de vertex groepen!

Gelegenheid om wat Python af te stoffen:

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

Antwoord

Heel erg bedankt voor het script, het heeft me enorm geholpen 🙂 Ik heb er een paar aanpassingen aan gedaan: om elk vooraf gedefinieerd deel van de naam te kunnen gebruiken om het linker- en rechtergedeelte uit elkaar te houden: in mijn voorbeeld: Ik gebruik “LT” en “RT” (niet mijn keuze echter)

hier is het aangepaste script:

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

Ik hoop het zou van enige hulp zijn 🙂

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *