Changeset View
Changeset View
Standalone View
Standalone View
rigify/rigs/limbs/simple_tentacle.py
| import bpy | import bpy | ||||
| from ...utils import copy_bone | from ...utils import copy_bone | ||||
| from ...utils import strip_org, make_deformer_name, connected_children_names | from ...utils import strip_org, make_deformer_name, connected_children_names | ||||
| from ...utils import make_mechanism_name, put_bone, create_sphere_widget | from ...utils import make_mechanism_name, put_bone, create_sphere_widget | ||||
| from ...utils import create_widget, create_circle_widget | from ...utils import create_widget, create_circle_widget | ||||
| from ...utils import MetarigError | from ...utils import MetarigError | ||||
| from ...utils import ControlLayersOption | |||||
| from rna_prop_ui import rna_idprop_ui_prop_get | from rna_prop_ui import rna_idprop_ui_prop_get | ||||
| class Rig: | class Rig: | ||||
| def __init__(self, obj, bone_name, params): | def __init__(self, obj, bone_name, params): | ||||
| self.obj = obj | self.obj = obj | ||||
| self.org_bones = [bone_name] + connected_children_names(obj, bone_name) | self.org_bones = [bone_name] + connected_children_names(obj, bone_name) | ||||
| self.params = params | self.params = params | ||||
| self.copy_rotation_axes = params.copy_rotation_axes | self.copy_rotation_axes = params.copy_rotation_axes | ||||
| if params.tweak_extra_layers: | |||||
| self.tweak_layers = list(params.tweak_layers) | |||||
| else: | |||||
| self.tweak_layers = None | |||||
| if len(self.org_bones) <= 1: | if len(self.org_bones) <= 1: | ||||
| raise MetarigError( | raise MetarigError( | ||||
| "RIGIFY ERROR: invalid rig structure on bone: %s" % (strip_org(bone_name)) | "RIGIFY ERROR: invalid rig structure on bone: %s" % (strip_org(bone_name)) | ||||
| ) | ) | ||||
| def make_controls(self): | def make_controls(self): | ||||
| bpy.ops.object.mode_set(mode ='EDIT') | bpy.ops.object.mode_set(mode ='EDIT') | ||||
| ▲ Show 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | def make_tweaks(self): | ||||
| if tweak_chain.index( tweak ) != len( tweak_chain ) - 1: | if tweak_chain.index( tweak ) != len( tweak_chain ) - 1: | ||||
| tweak_pb.lock_rotation = (True, False, True) | tweak_pb.lock_rotation = (True, False, True) | ||||
| tweak_pb.lock_scale = (False, True, False) | tweak_pb.lock_scale = (False, True, False) | ||||
| else: | else: | ||||
| tweak_pb.lock_rotation_w = True | tweak_pb.lock_rotation_w = True | ||||
| tweak_pb.lock_rotation = (True, True, True) | tweak_pb.lock_rotation = (True, True, True) | ||||
| tweak_pb.lock_scale = (True, True, True) | tweak_pb.lock_scale = (True, True, True) | ||||
| # Set up tweak bone layers | ControlLayersOption.TWEAK.assign(self.params, self.obj.pose.bones, tweak_chain) | ||||
| if self.tweak_layers: | |||||
| tweak_pb.bone.layers = self.tweak_layers | |||||
| return tweak_chain | return tweak_chain | ||||
| def make_deform(self): | def make_deform(self): | ||||
| bpy.ops.object.mode_set(mode ='EDIT') | bpy.ops.object.mode_set(mode ='EDIT') | ||||
| org_bones = self.org_bones | org_bones = self.org_bones | ||||
| ▲ Show 20 Lines • Show All 112 Lines • ▼ Show 20 Lines | def add_parameters(params): | ||||
| """ | """ | ||||
| params.copy_rotation_axes = bpy.props.BoolVectorProperty( | params.copy_rotation_axes = bpy.props.BoolVectorProperty( | ||||
| size=3, | size=3, | ||||
| description="Automation axes", | description="Automation axes", | ||||
| default=tuple([i == 0 for i in range(0, 3)]) | default=tuple([i == 0 for i in range(0, 3)]) | ||||
| ) | ) | ||||
| # Setting up extra tweak layers | # Setting up extra tweak layers | ||||
| params.tweak_extra_layers = bpy.props.BoolProperty( | ControlLayersOption.TWEAK.add_parameters(params) | ||||
| name = "tweak_extra_layers", | |||||
| default = True, | |||||
| description = "" | |||||
| ) | |||||
| params.tweak_layers = bpy.props.BoolVectorProperty( | |||||
| size = 32, | |||||
| description = "Layers for the tweak controls to be on", | |||||
| default = tuple( [ i == 1 for i in range(0, 32) ] ) | |||||
| ) | |||||
| def parameters_ui(layout, params): | def parameters_ui(layout, params): | ||||
| """ Create the ui for the rig parameters. | """ Create the ui for the rig parameters. | ||||
| """ | """ | ||||
| r = layout.row() | r = layout.row() | ||||
| col = r.column(align=True) | col = r.column(align=True) | ||||
| row = col.row(align=True) | row = col.row(align=True) | ||||
| for i, axis in enumerate(['x', 'y', 'z']): | for i, axis in enumerate(['x', 'y', 'z']): | ||||
| row.prop(params, "copy_rotation_axes", index=i, toggle=True, text=axis) | row.prop(params, "copy_rotation_axes", index=i, toggle=True, text=axis) | ||||
| r = layout.row() | ControlLayersOption.TWEAK.parameters_ui(layout, params) | ||||
| r.prop(params, "tweak_extra_layers") | |||||
| r.active = params.tweak_extra_layers | |||||
| col = r.column(align=True) | |||||
| row = col.row(align=True) | |||||
| bone_layers = bpy.context.active_pose_bone.bone.layers[:] | |||||
| for i in range(8): # Layers 0-7 | |||||
| icon = "NONE" | |||||
| if bone_layers[i]: | |||||
| icon = "LAYER_ACTIVE" | |||||
| row.prop(params, "tweak_layers", index=i, toggle=True, text="", icon=icon) | |||||
| row = col.row(align=True) | |||||
| for i in range(16, 24): # Layers 16-23 | |||||
| icon = "NONE" | |||||
| if bone_layers[i]: | |||||
| icon = "LAYER_ACTIVE" | |||||
| row.prop(params, "tweak_layers", index=i, toggle=True, text="", icon=icon) | |||||
| col = r.column(align=True) | |||||
| row = col.row(align=True) | |||||
| for i in range(8, 16): # Layers 8-15 | |||||
| icon = "NONE" | |||||
| if bone_layers[i]: | |||||
| icon = "LAYER_ACTIVE" | |||||
| row.prop(params, "tweak_layers", index=i, toggle=True, text="", icon=icon) | |||||
| row = col.row(align=True) | |||||
| for i in range( 24, 32 ): # Layers 24-31 | |||||
| icon = "NONE" | |||||
| if bone_layers[i]: | |||||
| icon = "LAYER_ACTIVE" | |||||
| row.prop(params, "tweak_layers", index=i, toggle=True, text="", icon=icon) | |||||
| def create_sample(obj): | def create_sample(obj): | ||||
| # generated by rigify.utils.write_metarig | # generated by rigify.utils.write_metarig | ||||
| bpy.ops.object.mode_set(mode='EDIT') | bpy.ops.object.mode_set(mode='EDIT') | ||||
| arm = obj.data | arm = obj.data | ||||
| bones = {} | bones = {} | ||||
| ▲ Show 20 Lines • Show All 58 Lines • Show Last 20 Lines | |||||