- Site Map >
- Modding and Creation >
- Sims 3 Creation >
- Miscellaneous >
- [TUTORIAL] Enabling Symmetry for TS3 Rigs in Blender with a Script
- Site Map >
- Modding and Creation >
- Sims 3 Creation >
- Miscellaneous >
- [TUTORIAL] Enabling Symmetry for TS3 Rigs in Blender with a Script
Replies: 0 (Who?), Viewed: 602 times.
#1
19th Dec 2023 at 7:22 AM
![Old](/static/images/buttons/buttons-rro/images/statusicon/post_old.gif)
Posts: 212
Thanks: 526 in 6 Posts
[TUTORIAL] Enabling Symmetry for TS3 Rigs in Blender with a Script
Symmetry functions in Blender don't work on TS3 rigs as bone names are not in a format that Blender can detect. So I've written a script to rename the bones.99% guaranteed to slightly reduce your risk of having a stroke while weight painting or posing.
How to use: Select the Scripting workspace and create a new Text in the Text Editor window. Paste the script. Select the armature. Click "Run Script"(Play icon).
![Reporter](http://static.modthesims2.com/images/smilies/reporter.gif)
The script to rename bones to Blender convention:
Code:
import bpy def rename_bones(): dict = { 'b__L_Bicep__': 'Bicep.L', 'b__R_Bicep__': 'Bicep.R', 'b__L_breast__': 'Breast.L', 'b__R_breast__': 'Breast.R', 'b__L_Calf__': 'Calf.L', 'b__R_Calf__': 'Calf.R', 'b__L_Calf__Compress__': 'CalfCompress.L', 'b__R_Calf__Compress__': 'CalfCompress.R', 'b__L_Clavicle__': 'Clavicle.L', 'b__R_Clavicle__': 'Clavicle.R', 'b__L_Foot__': 'Foot.L', 'b__R_Foot__': 'Foot.R', 'b__L_Forearm__': 'Forearm.L', 'b__R_Forearm__': 'Forearm.R', 'b__L_Hand__': 'Hand.L', 'b__R_Hand__': 'Hand.R', 'b__L_Index0__': 'FingerIndex0.L', 'b__R_Index0__': 'FingerIndex0.R', 'b__L_Index1__': 'FingerIndex1.L', 'b__R_Index1__': 'FingerIndex1.R', 'b__L_Index2__': 'FingerIndex2.L', 'b__R_Index2__': 'FingerIndex2.R', 'b__L_Mid0__': 'FingerMid0.L', 'b__R_Mid0__': 'FingerMid0.R', 'b__L_Mid1__': 'FingerMid1.L', 'b__R_Mid1__': 'FingerMid1.R', 'b__L_Mid2__': 'FingerMid2.L', 'b__R_Mid2__': 'FingerMid2.R', 'b__L_Pinky0__': 'FingerPinky0.L', 'b__R_Pinky0__': 'FingerPinky0.R', 'b__L_Pinky1__': 'FingerPinky1.L', 'b__R_Pinky1__': 'FingerPinky1.R', 'b__L_Pinky2__': 'FingerPinky2.L', 'b__R_Pinky2__': 'FingerPinky2.R', 'b__L_Ring0__': 'FingerRing0.L', 'b__R_Ring0__': 'FingerRing0.R', 'b__L_Ring1__': 'FingerRing1.L', 'b__R_Ring1__': 'FingerRing1.R', 'b__L_Ring2__': 'FingerRing2.L', 'b__R_Ring2__': 'FingerRing2.R', 'b__L_ShoulderTwist__': 'ShoulderTwist.L', 'b__R_ShoulderTwist__': 'ShoulderTwist.R', 'b__L_Thigh__': 'Thigh.L', 'b__R_Thigh__': 'Thigh.R', 'b__L_Thigh__Compress__': 'ThighCompress.L', 'b__R_Thigh__Compress__': 'ThighCompress.R', 'b__L_ThighTwist__': 'ThighTwist.L', 'b__R_ThighTwist__': 'ThighTwist.R', 'b__L_Thumb0__': 'FingerThumb0.L', 'b__R_Thumb0__': 'FingerThumb0.R', 'b__L_Thumb1__': 'FingerThumb1.L', 'b__R_Thumb1__': 'FingerThumb1.R', 'b__L_Thumb2__': 'FingerThumb2.L', 'b__R_Thumb2__': 'FingerThumb2.R', 'b__L_Toe__': 'Toe.L', 'b__R_Toe__': 'Toe.R', 'b__L_Wrist__': 'Wrist.L', 'b__R_Wrist__': 'Wrist.R', 'b__LeftCheek__': 'Cheek.L', 'b__RightCheek__': 'Cheek.R', 'b__LeftEar__': 'Ear.L', 'b__RightEar__': 'Ear.R', 'b__LeftEye_mod__': 'EyeMod.L', 'b__RightEye_mod__': 'EyeMod.R', 'b__LeftEyeArea__': 'EyeArea.L', 'b__RightEyeArea__': 'EyeArea.R', 'b__LeftInBrow__': 'BrowInner.L', 'b__RightInBrow__': 'BrowInner.R', 'b__LeftLoLid__': 'EyelidLow.L', 'b__RightLoLid__': 'EyelidLow.R', 'b__LeftLoLip__': 'LipLower.L', 'b__RightLoLip__': 'LipLower.R', 'b__LeftMidBrow__': 'BrowMid.L', 'b__RightMidBrow__': 'BrowMid.R', 'b__LeftMouth__': 'Mouth.L', 'b__RightMouth__': 'Mouth.R', 'b__LeftNostril__': 'Nostril.L', 'b__RightNostril__': 'Nostril.R', 'b__LeftOutBrow__': 'BrowOuter.L', 'b__RightOutBrow__': 'BrowOuter.R', 'b__LeftSquint__': 'Squint.L', 'b__RightSquint__': 'Squint.R', 'b__LeftUpLid__': 'EyelidUp.L', 'b__RightUpLid__': 'EyelidUp.R', 'b__LeftUpLip__': 'LipUpper.L', 'b__RightUpLip__': 'LipUpper.R', 'b__L_Toe_slot': 'Toe_slot.L', 'b__L_PantsLeg_slot': 'PantsLeg_slot.L', 'b__L_Ankle_slot': 'Ankle_slot.L', 'b__L_backCalfTarget_slot': 'CalfBackTarget_slot.L', 'b__L_inCalfTarget_slot': 'CalfInTarget_slot.L', 'b__L_frontCalfTarget_slot': 'CalfFrontTarget_slot.L', 'b__L_outCalfTarget_slot': 'CalfOutTarget_slot.L', 'b__L_KneeTarget_slot': 'KneeTarget_slot.L', 'b__L_backThighTarget_slot': 'ThighBackTarget_slot.L', 'b__L_ThighFrontTarget_slot': 'ThighFrontTarget_slot.L', 'b__L_outThighTarget_slot': 'ThighOutTarget_slot.L', 'b__L_upThighTarget_slot': 'ThighUpTarget_slot.L', 'b__L_upBackThighTarget_slot': 'ThighUpBackTarget_slot.L', 'L_legExportPole': 'legExportPole.L', 'b__L_ThighUntwist__': 'ThighUntwist.L', 'b__L_ThighTwisted__': 'ThighTwisted.L', 'b__L_HipTarget_slot': 'HipTarget_slot.L', 'b__LeftEye__': 'Eye.L', 'b__L_Earring_slot': 'Earring_slot.L', 'b__L_UpperArm__': 'ArmUpper.L', 'b__L_UpperArmTarget_slot': 'ArmUpperTarget_slot.L', 'b__L_Bracelet_slot': 'Bracelet_slot.L', 'b__L_ForearmTarget_slot': 'ForearmTarget_slot.L', 'b__L_Ring_slot': 'FingerRing_slot.L', 'b__L_Hand_slot': 'Hand_slot.L', 'b__L_inForearmTarget_slot': 'ForearmInTarget_slot.L', 'b__L_inShortSleeve_slot': 'inShortSleeve_slot.L', 'b__L_outShortSleeve_slot': 'outShortSleeve_slot.L', 'b__L_ShoulderTarget_slot': 'ShoulderTarget_slot.L', 'L_armExportPole': 'armExportPole.L', 'b__L_BackShoulderTarget_slot': 'ShoulderBackTarget_slot.L', 'b__L_FrontShoulderTarget_slot': 'ShoulderFrontTarget_slot.L', 'b__L_shoulderbladeTarget_slot': 'ShoulderBladeTarget_slot.L', 'b__L_chestTarget_slot': 'ChestTarget_slot.L', 'b__L_armpitTarget_slot': 'ArmpitTarget_slot.L', 'b__L_BackTarget_slot': 'BackTarget_slot.L', 'b__L_sideBackTorsoTarget_slot': 'TorsoSideBackTarget_slot.L', 'b__L_sideFrontTorsoTarget_slot': 'TorsoSideFrontTarget_slot.L', 'b__L_frontTorsoTarget_slot': 'TorsoFrontTarget_slot.L', 'b__L_carry_slot': 'carry_slot.L', 'b__L_breastTarget_slot': 'BreastTarget_slot.L', 'b__L_lowBackTarget_slot': 'BackLowTarget_slot.L', 'b__L_backBellyTarget_slot': 'BellyBackTarget_slot.L', 'b__L_BellyTarget_slot': 'BellyTarget_slot.L', 'b__L_frontBellyTarget_slot': 'BellyFrontTarget_slot.L', 'b__L_ThighTarget_slot': 'ThighTarget_slot.L', 'L_slotOffset': 'slotOffset.L', 'L_footOffset': 'FootOffset.L', 'L_footWorld': 'FootWorld.L', 'L_slotInfo': 'slotInfo.L', 'L_Info1': 'Info01.L', 'L_Info2': 'Info02.L', 'L_Info3': 'Info03.L', 'L_Info4': 'Info04.L', 'L_Info5': 'Info05.L', 'L_Info6': 'Info06.L', 'L_Info7': 'Info07.L', 'L_Info8': 'Info08.L', 'L_Info9': 'Info09.L', 'L_Info10': 'Info10.L', 'L_footInfo': 'FootInfo.L', 'L_footInfo1': 'FootInfo1.L', 'L_footInfo2': 'FootInfo2.L', 'b__R_Toe_slot': 'Toe_slot.R', 'b__R_PantsLeg_slot': 'PantsLeg_slot.R', 'b__R_Ankle_slot': 'Ankle_slot.R', 'b__R_backCalfTarget_slot': 'CalfBackTarget_slot.R', 'b__R_inCalfTarget_slot': 'CalfInTarget_slot.R', 'b__R_frontCalfTarget_slot': 'CalfFrontTarget_slot.R', 'b__R_outCalfTarget_slot': 'CalfOutTarget_slot.R', 'b__R_KneeTarget_slot': 'KneeTarget_slot.R', 'b__R_backThighTarget_slot': 'ThighBackTarget_slot.R', 'b__R_ThighFrontTarget_slot': 'ThighFrontTarget_slot.R', 'b__R_outThighTarget_slot': 'ThighOutTarget_slot.R', 'b__R_upThighTarget_slot': 'ThighUpTarget_slot.R', 'b__R_upBackThighTarget_slot': 'ThighUpBackTarget_slot.R', 'R_legExportPole': 'legExportPole.R', 'b__R_ThighUntwist__': 'ThighUntwist.R', 'b__R_ThighTwisted__': 'ThighTwisted.R', 'b__R_HipTarget_slot': 'HipTarget_slot.R', 'b__RightEye__': 'Eye.R', 'b__R_Earring_slot': 'Earring_slot.R', 'b__R_UpperArm__': 'ArmUpper.R', 'b__R_UpperArmTarget_slot': 'ArmUpperTarget_slot.R', 'b__R_Bracelet_slot': 'Bracelet_slot.R', 'b__R_ForearmTarget_slot': 'ForearmTarget_slot.R', 'b__R_Ring_slot': 'FingerRing_slot.R', 'b__R_Hand_slot': 'Hand_slot.R', 'b__R_inForearmTarget_slot': 'ForearmInTarget_slot.R', 'b__R_inShortSleeve_slot': 'inShortSleeve_slot.R', 'b__R_outShortSleeve_slot': 'outShortSleeve_slot.R', 'b__R_ShoulderTarget_slot': 'ShoulderTarget_slot.R', 'R_armExportPole': 'armExportPole.R', 'b__R_BackShoulderTarget_slot': 'ShoulderBackTarget_slot.R', 'b__R_FrontShoulderTarget_slot': 'ShoulderFrontTarget_slot.R', 'b__R_shoulderbladeTarget_slot': 'ShoulderBladeTarget_slot.R', 'b__R_chestTarget_slot': 'ChestTarget_slot.R', 'b__R_armpitTarget_slot': 'ArmpitTarget_slot.R', 'b__R_BackTarget_slot': 'BackTarget_slot.R', 'b__R_sideBackTorsoTarget_slot': 'TorsoSideBackTarget_slot.R', 'b__R_sideFrontTorsoTarget_slot': 'TorsoSideFrontTarget_slot.R', 'b__R_frontTorsoTarget_slot': 'TorsoFrontTarget_slot.R', 'b__R_carry_slot': 'carry_slot.R', 'b__R_breastTarget_slot': 'BreastTarget_slot.R', 'b__R_lowBackTarget_slot': 'BackLowTarget_slot.R', 'b__R_backBellyTarget_slot': 'BellyBackTarget_slot.R', 'b__R_BellyTarget_slot': 'BellyTarget_slot.R', 'b__R_frontBellyTarget_slot': 'BellyFrontTarget_slot.R', 'b__R_ThighTarget_slot': 'ThighTarget_slot.R', 'R_slotOffset': 'slotOffset.R', 'R_footOffset': 'FootOffset.R', 'R_footWorld': 'FootWorld.R', 'R_slotInfo': 'slotInfo.R', 'R_Info1': 'Info01.R', 'R_Info2': 'Info02.R', 'R_Info3': 'Info03.R', 'R_Info4': 'Info04.R', 'R_Info5': 'Info05.R', 'R_Info6': 'Info06.R', 'R_Info7': 'Info07.R', 'R_Info8': 'Info08.R', 'R_Info9': 'Info09.R', 'R_Info10': 'Info10.R', 'R_footInfo': 'FootInfo.R', 'R_footInfo1': 'FootInfo1.R', 'R_footInfo2': 'FootInfo2.R' } for b in bpy.context.object.data.bones: if b.name in dict.keys(): b.name = dict[b.name] rename_bones()
Use this script to revert the names to originals before exporting your geoms:
Code:
import bpy def revert_bones(): dict = { 'b__L_Bicep__': 'Bicep.L', 'b__R_Bicep__': 'Bicep.R', 'b__L_breast__': 'Breast.L', 'b__R_breast__': 'Breast.R', 'b__L_Calf__': 'Calf.L', 'b__R_Calf__': 'Calf.R', 'b__L_Calf__Compress__': 'CalfCompress.L', 'b__R_Calf__Compress__': 'CalfCompress.R', 'b__L_Clavicle__': 'Clavicle.L', 'b__R_Clavicle__': 'Clavicle.R', 'b__L_Foot__': 'Foot.L', 'b__R_Foot__': 'Foot.R', 'b__L_Forearm__': 'Forearm.L', 'b__R_Forearm__': 'Forearm.R', 'b__L_Hand__': 'Hand.L', 'b__R_Hand__': 'Hand.R', 'b__L_Index0__': 'FingerIndex0.L', 'b__R_Index0__': 'FingerIndex0.R', 'b__L_Index1__': 'FingerIndex1.L', 'b__R_Index1__': 'FingerIndex1.R', 'b__L_Index2__': 'FingerIndex2.L', 'b__R_Index2__': 'FingerIndex2.R', 'b__L_Mid0__': 'FingerMid0.L', 'b__R_Mid0__': 'FingerMid0.R', 'b__L_Mid1__': 'FingerMid1.L', 'b__R_Mid1__': 'FingerMid1.R', 'b__L_Mid2__': 'FingerMid2.L', 'b__R_Mid2__': 'FingerMid2.R', 'b__L_Pinky0__': 'FingerPinky0.L', 'b__R_Pinky0__': 'FingerPinky0.R', 'b__L_Pinky1__': 'FingerPinky1.L', 'b__R_Pinky1__': 'FingerPinky1.R', 'b__L_Pinky2__': 'FingerPinky2.L', 'b__R_Pinky2__': 'FingerPinky2.R', 'b__L_Ring0__': 'FingerRing0.L', 'b__R_Ring0__': 'FingerRing0.R', 'b__L_Ring1__': 'FingerRing1.L', 'b__R_Ring1__': 'FingerRing1.R', 'b__L_Ring2__': 'FingerRing2.L', 'b__R_Ring2__': 'FingerRing2.R', 'b__L_ShoulderTwist__': 'ShoulderTwist.L', 'b__R_ShoulderTwist__': 'ShoulderTwist.R', 'b__L_Thigh__': 'Thigh.L', 'b__R_Thigh__': 'Thigh.R', 'b__L_Thigh__Compress__': 'ThighCompress.L', 'b__R_Thigh__Compress__': 'ThighCompress.R', 'b__L_ThighTwist__': 'ThighTwist.L', 'b__R_ThighTwist__': 'ThighTwist.R', 'b__L_Thumb0__': 'FingerThumb0.L', 'b__R_Thumb0__': 'FingerThumb0.R', 'b__L_Thumb1__': 'FingerThumb1.L', 'b__R_Thumb1__': 'FingerThumb1.R', 'b__L_Thumb2__': 'FingerThumb2.L', 'b__R_Thumb2__': 'FingerThumb2.R', 'b__L_Toe__': 'Toe.L', 'b__R_Toe__': 'Toe.R', 'b__L_Wrist__': 'Wrist.L', 'b__R_Wrist__': 'Wrist.R', 'b__LeftCheek__': 'Cheek.L', 'b__RightCheek__': 'Cheek.R', 'b__LeftEar__': 'Ear.L', 'b__RightEar__': 'Ear.R', 'b__LeftEye_mod__': 'EyeMod.L', 'b__RightEye_mod__': 'EyeMod.R', 'b__LeftEyeArea__': 'EyeArea.L', 'b__RightEyeArea__': 'EyeArea.R', 'b__LeftInBrow__': 'BrowInner.L', 'b__RightInBrow__': 'BrowInner.R', 'b__LeftLoLid__': 'EyelidLow.L', 'b__RightLoLid__': 'EyelidLow.R', 'b__LeftLoLip__': 'LipLower.L', 'b__RightLoLip__': 'LipLower.R', 'b__LeftMidBrow__': 'BrowMid.L', 'b__RightMidBrow__': 'BrowMid.R', 'b__LeftMouth__': 'Mouth.L', 'b__RightMouth__': 'Mouth.R', 'b__LeftNostril__': 'Nostril.L', 'b__RightNostril__': 'Nostril.R', 'b__LeftOutBrow__': 'BrowOuter.L', 'b__RightOutBrow__': 'BrowOuter.R', 'b__LeftSquint__': 'Squint.L', 'b__RightSquint__': 'Squint.R', 'b__LeftUpLid__': 'EyelidUp.L', 'b__RightUpLid__': 'EyelidUp.R', 'b__LeftUpLip__': 'LipUpper.L', 'b__RightUpLip__': 'LipUpper.R', 'b__L_Toe_slot': 'Toe_slot.L', 'b__L_PantsLeg_slot': 'PantsLeg_slot.L', 'b__L_Ankle_slot': 'Ankle_slot.L', 'b__L_backCalfTarget_slot': 'CalfBackTarget_slot.L', 'b__L_inCalfTarget_slot': 'CalfInTarget_slot.L', 'b__L_frontCalfTarget_slot': 'CalfFrontTarget_slot.L', 'b__L_outCalfTarget_slot': 'CalfOutTarget_slot.L', 'b__L_KneeTarget_slot': 'KneeTarget_slot.L', 'b__L_backThighTarget_slot': 'ThighBackTarget_slot.L', 'b__L_ThighFrontTarget_slot': 'ThighFrontTarget_slot.L', 'b__L_outThighTarget_slot': 'ThighOutTarget_slot.L', 'b__L_upThighTarget_slot': 'ThighUpTarget_slot.L', 'b__L_upBackThighTarget_slot': 'ThighUpBackTarget_slot.L', 'L_legExportPole': 'legExportPole.L', 'b__L_ThighUntwist__': 'ThighUntwist.L', 'b__L_ThighTwisted__': 'ThighTwisted.L', 'b__L_HipTarget_slot': 'HipTarget_slot.L', 'b__LeftEye__': 'Eye.L', 'b__L_Earring_slot': 'Earring_slot.L', 'b__L_UpperArm__': 'ArmUpper.L', 'b__L_UpperArmTarget_slot': 'ArmUpperTarget_slot.L', 'b__L_Bracelet_slot': 'Bracelet_slot.L', 'b__L_ForearmTarget_slot': 'ForearmTarget_slot.L', 'b__L_Ring_slot': 'FingerRing_slot.L', 'b__L_Hand_slot': 'Hand_slot.L', 'b__L_inForearmTarget_slot': 'ForearmInTarget_slot.L', 'b__L_inShortSleeve_slot': 'inShortSleeve_slot.L', 'b__L_outShortSleeve_slot': 'outShortSleeve_slot.L', 'b__L_ShoulderTarget_slot': 'ShoulderTarget_slot.L', 'L_armExportPole': 'armExportPole.L', 'b__L_BackShoulderTarget_slot': 'ShoulderBackTarget_slot.L', 'b__L_FrontShoulderTarget_slot': 'ShoulderFrontTarget_slot.L', 'b__L_shoulderbladeTarget_slot': 'ShoulderBladeTarget_slot.L', 'b__L_chestTarget_slot': 'ChestTarget_slot.L', 'b__L_armpitTarget_slot': 'ArmpitTarget_slot.L', 'b__L_BackTarget_slot': 'BackTarget_slot.L', 'b__L_sideBackTorsoTarget_slot': 'TorsoSideBackTarget_slot.L', 'b__L_sideFrontTorsoTarget_slot': 'TorsoSideFrontTarget_slot.L', 'b__L_frontTorsoTarget_slot': 'TorsoFrontTarget_slot.L', 'b__L_carry_slot': 'carry_slot.L', 'b__L_breastTarget_slot': 'BreastTarget_slot.L', 'b__L_lowBackTarget_slot': 'BackLowTarget_slot.L', 'b__L_backBellyTarget_slot': 'BellyBackTarget_slot.L', 'b__L_BellyTarget_slot': 'BellyTarget_slot.L', 'b__L_frontBellyTarget_slot': 'BellyFrontTarget_slot.L', 'b__L_ThighTarget_slot': 'ThighTarget_slot.L', 'L_slotOffset': 'slotOffset.L', 'L_footOffset': 'FootOffset.L', 'L_footWorld': 'FootWorld.L', 'L_slotInfo': 'slotInfo.L', 'L_Info1': 'Info01.L', 'L_Info2': 'Info02.L', 'L_Info3': 'Info03.L', 'L_Info4': 'Info04.L', 'L_Info5': 'Info05.L', 'L_Info6': 'Info06.L', 'L_Info7': 'Info07.L', 'L_Info8': 'Info08.L', 'L_Info9': 'Info09.L', 'L_Info10': 'Info10.L', 'L_footInfo': 'FootInfo.L', 'L_footInfo1': 'FootInfo1.L', 'L_footInfo2': 'FootInfo2.L', 'b__R_Toe_slot': 'Toe_slot.R', 'b__R_PantsLeg_slot': 'PantsLeg_slot.R', 'b__R_Ankle_slot': 'Ankle_slot.R', 'b__R_backCalfTarget_slot': 'CalfBackTarget_slot.R', 'b__R_inCalfTarget_slot': 'CalfInTarget_slot.R', 'b__R_frontCalfTarget_slot': 'CalfFrontTarget_slot.R', 'b__R_outCalfTarget_slot': 'CalfOutTarget_slot.R', 'b__R_KneeTarget_slot': 'KneeTarget_slot.R', 'b__R_backThighTarget_slot': 'ThighBackTarget_slot.R', 'b__R_ThighFrontTarget_slot': 'ThighFrontTarget_slot.R', 'b__R_outThighTarget_slot': 'ThighOutTarget_slot.R', 'b__R_upThighTarget_slot': 'ThighUpTarget_slot.R', 'b__R_upBackThighTarget_slot': 'ThighUpBackTarget_slot.R', 'R_legExportPole': 'legExportPole.R', 'b__R_ThighUntwist__': 'ThighUntwist.R', 'b__R_ThighTwisted__': 'ThighTwisted.R', 'b__R_HipTarget_slot': 'HipTarget_slot.R', 'b__RightEye__': 'Eye.R', 'b__R_Earring_slot': 'Earring_slot.R', 'b__R_UpperArm__': 'ArmUpper.R', 'b__R_UpperArmTarget_slot': 'ArmUpperTarget_slot.R', 'b__R_Bracelet_slot': 'Bracelet_slot.R', 'b__R_ForearmTarget_slot': 'ForearmTarget_slot.R', 'b__R_Ring_slot': 'FingerRing_slot.R', 'b__R_Hand_slot': 'Hand_slot.R', 'b__R_inForearmTarget_slot': 'ForearmInTarget_slot.R', 'b__R_inShortSleeve_slot': 'inShortSleeve_slot.R', 'b__R_outShortSleeve_slot': 'outShortSleeve_slot.R', 'b__R_ShoulderTarget_slot': 'ShoulderTarget_slot.R', 'R_armExportPole': 'armExportPole.R', 'b__R_BackShoulderTarget_slot': 'ShoulderBackTarget_slot.R', 'b__R_FrontShoulderTarget_slot': 'ShoulderFrontTarget_slot.R', 'b__R_shoulderbladeTarget_slot': 'ShoulderBladeTarget_slot.R', 'b__R_chestTarget_slot': 'ChestTarget_slot.R', 'b__R_armpitTarget_slot': 'ArmpitTarget_slot.R', 'b__R_BackTarget_slot': 'BackTarget_slot.R', 'b__R_sideBackTorsoTarget_slot': 'TorsoSideBackTarget_slot.R', 'b__R_sideFrontTorsoTarget_slot': 'TorsoSideFrontTarget_slot.R', 'b__R_frontTorsoTarget_slot': 'TorsoFrontTarget_slot.R', 'b__R_carry_slot': 'carry_slot.R', 'b__R_breastTarget_slot': 'BreastTarget_slot.R', 'b__R_lowBackTarget_slot': 'BackLowTarget_slot.R', 'b__R_backBellyTarget_slot': 'BellyBackTarget_slot.R', 'b__R_BellyTarget_slot': 'BellyTarget_slot.R', 'b__R_frontBellyTarget_slot': 'BellyFrontTarget_slot.R', 'b__R_ThighTarget_slot': 'ThighTarget_slot.R', 'R_slotOffset': 'slotOffset.R', 'R_footOffset': 'FootOffset.R', 'R_footWorld': 'FootWorld.R', 'R_slotInfo': 'slotInfo.R', 'R_Info1': 'Info01.R', 'R_Info2': 'Info02.R', 'R_Info3': 'Info03.R', 'R_Info4': 'Info04.R', 'R_Info5': 'Info05.R', 'R_Info6': 'Info06.R', 'R_Info7': 'Info07.R', 'R_Info8': 'Info08.R', 'R_Info9': 'Info09.R', 'R_Info10': 'Info10.R', 'R_footInfo': 'FootInfo.R', 'R_footInfo1': 'FootInfo1.R', 'R_footInfo2': 'FootInfo2.R' } revDict = {v: k for k, v in dict.items()} for b in bpy.context.object.data.bones: if b.name in revDict.keys(): b.name = revDict[b.name] revert_bones()
![Duck](http://static.modthesims2.com/images/smilies/duckie.gif)
![Duck](http://static.modthesims2.com/images/smilies/duckie.gif)
Credits: Base code is from here and here. Yes, I only wrote the dictionary.
Who Posted
|