Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful, but
- # WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- # General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
- bl_info = {
- "name" : "Auto Rig",
- "author" : "Jambo",
- "description" : "",
- "blender" : (2, 80, 0),
- "version" : (0, 0, 1),
- "location" : "",
- "warning" : "",
- "category" : "Generic"
- }
- import bpy
- import os
- from bpy.props import BoolProperty
- from bpy.types import PropertyGroup, Panel, Scene
- addon_dirc =os .path .dirname (os .path .realpath (__file__ ))
- class AutoRigPanel(bpy.types.Panel):
- bl_label = "AutoRig"
- bl_idname = "AutoRig"
- bl_space_type = 'VIEW_3D'
- bl_region_type = 'UI'
- bl_category = 'AutoRig'
- def draw(self, context):
- layout = self.layout
- row = layout.row()
- row.operator('epic.rig', text = "Rig Selected Minifigure")
- class AutoRig(bpy.types.Operator):
- bl_idname = "epic.rig"
- bl_label = "Rig Selected Minifigure"
- def execute(self, context):
- selected_objects = bpy.context.selected_objects
- loct = bpy.context.selected_objects[0]
- for mat in selected_objects:
- if "3815" in mat.data.name:
- loct = mat
- path = addon_dirc + "/Append.blend/Collection/"
- object_name = "Collection"
- bpy.ops.wm.append(filename = object_name, directory = path)
- hey = bpy.data.objects
- b = hey['Rig']
- #b.location = loct.location
- collections = bpy.data.collections
- h = collections['BoneShapes']
- h.hide_viewport = True
- for fig in selected_objects:
- mbe = False
- if "3817" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['LeftLeg']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- if "20926" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['LeftLeg']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- if "3816" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['RightLeg']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- if "20932" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['RightLeg']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- if "3815" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['Torso']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- if "3814" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.context.object.data.layers[17] = True
- bpy.context.object.data.layers[18] = True
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['torso pivot R']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['Torso pivot L']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['torso pivot R']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.context.object.data.layers[17] = False
- bpy.context.object.data.layers[18] = False
- bpy.ops.object.posemode_toggle()
- if "3820" in fig.data.name:
- M = 100000
- shortestDist = M
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['Left Hand']
- b.data.bones.active = b.data.bones['Right Hand']
- here = bpy.context.selected_pose_bones
- bpy.ops.object.posemode_toggle()
- for iicap in here:
- obj = iicap.id_data
- matrix_final = obj.matrix_world @ iicap.matrix
- loc = matrix_final.translation.xyz
- sohere = (loc - fig.location).length
- if sohere < shortestDist:
- shortestDist = sohere
- omg = iicap.name
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones[omg]
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- mbe = True
- if "3819" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['Left Arm']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- if "16001" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['Left Arm']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- if "3818" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['Right Arm']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- if "16000" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['Right Arm']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- bpy.ops.object.posemode_toggle()
- if "3626" in fig.data.name:
- mbe = True
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- bpy.ops.pose.select_all(action='DESELECT')
- bpy.ops.object.posemode_toggle()
- bpy.ops.object.select_all(action='DESELECT')
- fig.select_set(True)
- b.select_set(True)
- bpy.context.view_layer.objects.active = b
- bpy.ops.object.posemode_toggle()
- b.data.bones.active = b.data.bones['Head']
- bpy.ops.object.parent_set(type='BONE', keep_transform=True)
- return {'FINISHED'}
- #REGISTRATION
- classes = [AutoRigPanel, AutoRig]
- def register():
- for cls in classes:
- bpy.utils.register_class(cls)
- def unregister():
- for cls in classes:
- bpy.utils.unregister_class(cls)
- if __name__ == "__main__":
- register()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement