Fix for referencing invalid data
[blender-addons.git] / rigify / rigs / pitchipoy / super_face.py
blob9ed711c354702dc9f3404d73a728ab7fc523bfd4
1 import bpy, re
2 from mathutils import Vector
3 from ...utils import copy_bone, flip_bone
4 from ...utils import org, strip_org, make_deformer_name, connected_children_names, make_mechanism_name
5 from ...utils import create_circle_widget, create_sphere_widget, create_widget, create_cube_widget
6 from ...utils import MetarigError
7 from rna_prop_ui import rna_idprop_ui_prop_get
8 from .super_widgets import create_face_widget, create_eye_widget, create_eyes_widget, create_ear_widget, create_jaw_widget, create_teeth_widget
11 script = """
12 all_controls = [%s]
13 jaw_ctrl_name = '%s'
14 eyes_ctrl_name = '%s'
16 if is_selected(all_controls):
17 layout.prop(pose_bones[jaw_ctrl_name], '["%s"]', slider=True)
18 layout.prop(pose_bones[eyes_ctrl_name], '["%s"]', slider=True)
19 """
20 class Rig:
22 def __init__(self, obj, bone_name, params):
23 self.obj = obj
25 b = self.obj.data.bones
27 children = [
28 "nose", "lip.T.L", "lip.B.L", "jaw", "ear.L", "ear.R", "lip.T.R",
29 "lip.B.R", "brow.B.L", "lid.T.L", "brow.B.R", "lid.T.R",
30 "forehead.L", "forehead.R", "forehead.L.001", "forehead.R.001",
31 "forehead.L.002", "forehead.R.002", "eye.L", "eye.R", "cheek.T.L",
32 "cheek.T.R", "teeth.T", "teeth.B", "tongue", "temple.L",
33 "temple.R"
36 #create_pose_lib( self.obj )
38 children = [ org(b) for b in children ]
39 grand_children = []
41 for child in children:
42 grand_children += connected_children_names( self.obj, child )
44 self.org_bones = [bone_name] + children + grand_children
45 self.face_length = obj.data.edit_bones[ self.org_bones[0] ].length
46 self.params = params
48 if params.primary_layers_extra:
49 self.primary_layers = list(params.primary_layers)
50 else:
51 self.primary_layers = None
53 if params.secondary_layers_extra:
54 self.secondary_layers = list(params.secondary_layers)
55 else:
56 self.secondary_layers = None
58 def symmetrical_split( self, bones ):
60 # RE pattern match right or left parts
61 # match the letter "L" (or "R"), followed by an optional dot (".")
62 # and 0 or more digits at the end of the the string
63 left_pattern = 'L\.?\d*$'
64 right_pattern = 'R\.?\d*$'
66 left = sorted( [ name for name in bones if re.search( left_pattern, name ) ] )
67 right = sorted( [ name for name in bones if re.search( right_pattern, name ) ] )
69 return left, right
71 def create_deformation( self ):
72 org_bones = self.org_bones
74 bpy.ops.object.mode_set(mode ='EDIT')
75 eb = self.obj.data.edit_bones
77 def_bones = []
78 for org in org_bones:
79 if 'face' in org or 'teeth' in org or 'eye' in org:
80 continue
82 def_name = make_deformer_name( strip_org( org ) )
83 def_name = copy_bone( self.obj, org, def_name )
84 def_bones.append( def_name )
86 eb[def_name].use_connect = False
87 eb[def_name].parent = None
89 brow_top_names = [ bone for bone in def_bones if 'brow.T' in bone ]
90 forehead_names = [ bone for bone in def_bones if 'forehead' in bone ]
92 brow_left, brow_right = self.symmetrical_split( brow_top_names )
93 forehead_left, forehead_right = self.symmetrical_split( forehead_names )
95 brow_left = brow_left[1:]
96 brow_right = brow_right[1:]
97 brow_left.reverse()
98 brow_right.reverse()
100 for browL, browR, foreheadL, foreheadR in zip(
101 brow_left, brow_right, forehead_left, forehead_right ):
103 eb[foreheadL].tail = eb[browL].head
104 eb[foreheadR].tail = eb[browR].head
106 return { 'all' : def_bones }
109 def create_ctrl( self, bones ):
110 org_bones = self.org_bones
112 ## create control bones
113 bpy.ops.object.mode_set(mode ='EDIT')
114 eb = self.obj.data.edit_bones
116 # eyes ctrls
117 eyeL_e = eb[ bones['eyes'][0] ]
118 eyeR_e = eb[ bones['eyes'][1] ]
120 distance = ( eyeL_e.head - eyeR_e.head ) * 3
121 distance = distance.cross( (0, 0, 1) )
122 eye_length = eyeL_e.length
124 eyeL_ctrl_name = strip_org( bones['eyes'][0] )
125 eyeR_ctrl_name = strip_org( bones['eyes'][1] )
127 eyeL_ctrl_name = copy_bone( self.obj, bones['eyes'][0], eyeL_ctrl_name )
128 eyeR_ctrl_name = copy_bone( self.obj, bones['eyes'][1], eyeR_ctrl_name )
129 eyes_ctrl_name = copy_bone( self.obj, bones['eyes'][0], 'eyes' )
131 eyeL_ctrl_e = eb[ eyeL_ctrl_name ]
132 eyeR_ctrl_e = eb[ eyeR_ctrl_name ]
133 eyes_ctrl_e = eb[ 'eyes' ]
135 eyeL_ctrl_e.head += distance
136 eyeR_ctrl_e.head += distance
137 eyes_ctrl_e.head[:] = ( eyeL_ctrl_e.head + eyeR_ctrl_e.head ) / 2
139 for bone in [ eyeL_ctrl_e, eyeR_ctrl_e, eyes_ctrl_e ]:
140 bone.tail[:] = bone.head + Vector( [ 0, 0, eye_length * 0.75 ] )
142 ## Widget for transforming the both eyes
143 eye_master_names = []
144 for bone in bones['eyes']:
145 eye_master = copy_bone(
146 self.obj,
147 bone,
148 'master_' + strip_org(bone)
151 eye_master_names.append( eye_master )
153 ## turbo: adding a master nose for transforming the whole nose
154 master_nose = copy_bone(self.obj, 'ORG-nose.004', 'nose_master')
155 eb[master_nose].tail[:] = \
156 eb[master_nose].head + Vector([0, self.face_length / -4, 0])
158 # ears ctrls
159 earL_name = strip_org( bones['ears'][0] )
160 earR_name = strip_org( bones['ears'][1] )
162 earL_ctrl_name = copy_bone( self.obj, org( bones['ears'][0] ), earL_name )
163 earR_ctrl_name = copy_bone( self.obj, org( bones['ears'][1] ), earR_name )
165 # jaw ctrl
166 jaw_ctrl_name = strip_org( bones['jaw'][2] ) + '_master'
167 jaw_ctrl_name = copy_bone( self.obj, bones['jaw'][2], jaw_ctrl_name )
169 jawL_org_e = eb[ bones['jaw'][0] ]
170 jawR_org_e = eb[ bones['jaw'][1] ]
171 jaw_org_e = eb[ bones['jaw'][2] ]
173 eb[ jaw_ctrl_name ].head[:] = ( jawL_org_e.head + jawR_org_e.head ) / 2
175 # teeth ctrls
176 teethT_name = strip_org( bones['teeth'][0] )
177 teethB_name = strip_org( bones['teeth'][1] )
179 teethT_ctrl_name = copy_bone( self.obj, org( bones['teeth'][0] ), teethT_name )
180 teethB_ctrl_name = copy_bone( self.obj, org( bones['teeth'][1] ), teethB_name )
182 # tongue ctrl
183 tongue_org = bones['tongue'].pop()
184 tongue_name = strip_org( tongue_org ) + '_master'
186 tongue_ctrl_name = copy_bone( self.obj, tongue_org, tongue_name )
188 flip_bone( self.obj, tongue_ctrl_name )
190 ## Assign widgets
191 bpy.ops.object.mode_set(mode ='OBJECT')
193 # Assign each eye widgets
194 create_eye_widget( self.obj, eyeL_ctrl_name )
195 create_eye_widget( self.obj, eyeR_ctrl_name )
197 # Assign eyes widgets
198 create_eyes_widget( self.obj, eyes_ctrl_name )
200 # Assign each eye_master widgets
201 for master in eye_master_names:
202 create_square_widget(self.obj, master)
204 # Assign nose_master widget
205 create_square_widget( self.obj, master_nose, size = 1 )
207 # Assign ears widget
208 create_ear_widget( self.obj, earL_ctrl_name )
209 create_ear_widget( self.obj, earR_ctrl_name )
211 # Assign jaw widget
212 create_jaw_widget( self.obj, jaw_ctrl_name )
214 # Assign teeth widget
215 create_teeth_widget( self.obj, teethT_ctrl_name )
216 create_teeth_widget( self.obj, teethB_ctrl_name )
218 # Assign tongue widget ( using the jaw widget )
219 create_jaw_widget( self.obj, tongue_ctrl_name )
221 return {
222 'eyes' : [
223 eyeL_ctrl_name,
224 eyeR_ctrl_name,
225 eyes_ctrl_name,
226 ] + eye_master_names,
227 'ears' : [ earL_ctrl_name, earR_ctrl_name ],
228 'jaw' : [ jaw_ctrl_name ],
229 'teeth' : [ teethT_ctrl_name, teethB_ctrl_name ],
230 'tongue' : [ tongue_ctrl_name ],
231 'nose' : [ master_nose ]
235 def create_tweak( self, bones, uniques, tails ):
236 org_bones = self.org_bones
238 ## create tweak bones
239 bpy.ops.object.mode_set(mode ='EDIT')
240 eb = self.obj.data.edit_bones
242 tweaks = []
244 for bone in bones + list( uniques.keys() ):
246 tweak_name = strip_org( bone )
248 # pick name for unique bone from the uniques dictionary
249 if bone in list( uniques.keys() ):
250 tweak_name = uniques[bone]
252 tweak_name = copy_bone( self.obj, bone, tweak_name )
253 eb[ tweak_name ].use_connect = False
254 eb[ tweak_name ].parent = None
256 tweaks.append( tweak_name )
258 eb[ tweak_name ].tail[:] = \
259 eb[ tweak_name ].head + Vector(( 0, 0, self.face_length / 7 ))
261 # create tail bone
262 if bone in tails:
263 if 'lip.T.L.001' in bone:
264 tweak_name = copy_bone( self.obj, bone, 'lips.L' )
265 elif 'lip.T.R.001' in bone:
266 tweak_name = copy_bone( self.obj, bone, 'lips.R' )
267 else:
268 tweak_name = copy_bone( self.obj, bone, tweak_name )
270 eb[ tweak_name ].use_connect = False
271 eb[ tweak_name ].parent = None
273 eb[ tweak_name ].head = eb[ bone ].tail
274 eb[ tweak_name ].tail[:] = \
275 eb[ tweak_name ].head + Vector(( 0, 0, self.face_length / 7 ))
277 tweaks.append( tweak_name )
279 bpy.ops.object.mode_set(mode ='OBJECT')
280 pb = self.obj.pose.bones
282 primary_tweaks = [
283 "lid.B.L.002", "lid.T.L.002", "lid.B.R.002", "lid.T.R.002",
284 "chin", "brow.T.L.001", "brow.T.L.002", "brow.T.L.003",
285 "brow.T.R.001", "brow.T.R.002", "brow.T.R.003", "lip.B",
286 "lip.B.L.001", "lip.B.R.001", "cheek.B.L.001", "cheek.B.R.001",
287 "lips.L", "lips.R", "lip.T.L.001", "lip.T.R.001", "lip.T",
288 "nose.002", "nose.L.001", "nose.R.001"
291 for bone in tweaks:
292 if bone in primary_tweaks:
293 if self.primary_layers:
294 pb[bone].bone.layers = self.primary_layers
295 create_face_widget( self.obj, bone, size = 1.5 )
296 else:
297 if self.secondary_layers:
298 pb[bone].bone.layers = self.secondary_layers
299 create_face_widget( self.obj, bone )
301 return { 'all' : tweaks }
304 def all_controls( self ):
305 org_bones = self.org_bones
307 org_tongue_bones = sorted([ bone for bone in org_bones if 'tongue' in bone ])
309 org_to_ctrls = {
310 'eyes' : [ 'eye.L', 'eye.R' ],
311 'ears' : [ 'ear.L', 'ear.R' ],
312 'jaw' : [ 'jaw.L', 'jaw.R', 'jaw' ],
313 'teeth' : [ 'teeth.T', 'teeth.B' ],
314 'tongue' : [ org_tongue_bones[0] ]
317 tweak_unique = { 'lip.T.L' : 'lip.T',
318 'lip.B.L' : 'lip.B' }
320 org_to_ctrls = { key : [ org( bone ) for bone in org_to_ctrls[key] ] for key in org_to_ctrls.keys() }
321 tweak_unique = { org( key ) : tweak_unique[key] for key in tweak_unique.keys() }
323 tweak_exceptions = [] # bones not used to create tweaks
324 tweak_exceptions += [ bone for bone in org_bones if 'forehead' in bone or 'temple' in bone ]
326 tweak_tail = [ 'brow.B.L.003', 'brow.B.R.003', 'nose.004', 'chin.001' ]
327 tweak_tail += [ 'lip.T.L.001', 'lip.T.R.001', 'tongue.002' ]
329 tweak_exceptions += [ 'lip.T.R', 'lip.B.R', 'ear.L.001', 'ear.R.001' ] + list(tweak_unique.keys())
330 tweak_exceptions += [ 'face', 'cheek.T.L', 'cheek.T.R', 'cheek.B.L', 'cheek.B.R' ]
331 tweak_exceptions += [ 'ear.L', 'ear.R', 'eye.L', 'eye.R' ]
333 tweak_exceptions += org_to_ctrls.keys()
334 tweak_exceptions += org_to_ctrls['teeth']
336 tweak_exceptions.pop( tweak_exceptions.index('tongue') )
337 tweak_exceptions.pop( tweak_exceptions.index('jaw') )
339 tweak_exceptions = [ org( bone ) for bone in tweak_exceptions ]
340 tweak_tail = [ org( bone ) for bone in tweak_tail ]
342 org_to_tweak = sorted( [ bone for bone in org_bones if bone not in tweak_exceptions ] )
344 ctrls = self.create_ctrl( org_to_ctrls )
345 tweaks = self.create_tweak( org_to_tweak, tweak_unique, tweak_tail )
347 return { 'ctrls' : ctrls, 'tweaks' : tweaks }, tweak_unique
349 def create_mch( self, jaw_ctrl, tongue_ctrl ):
350 org_bones = self.org_bones
351 bpy.ops.object.mode_set(mode ='EDIT')
352 eb = self.obj.data.edit_bones
354 # Create eyes mch bones
355 eyes = [ bone for bone in org_bones if 'eye' in bone ]
357 mch_bones = { strip_org( eye ) : [] for eye in eyes }
359 for eye in eyes:
360 mch_name = make_mechanism_name( strip_org( eye ) )
361 mch_name = copy_bone( self.obj, eye, mch_name )
362 eb[ mch_name ].use_connect = False
363 eb[ mch_name ].parent = None
365 mch_bones[ strip_org( eye ) ].append( mch_name )
367 mch_name = copy_bone( self.obj, eye, mch_name )
368 eb[ mch_name ].use_connect = False
369 eb[ mch_name ].parent = None
371 mch_bones[ strip_org( eye ) ].append( mch_name )
373 eb[ mch_name ].head[:] = eb[ mch_name ].tail
374 eb[ mch_name ].tail[:] = eb[ mch_name ].head + Vector( ( 0, 0, 0.005 ) )
376 # Create the eyes' parent mch
377 face = [ bone for bone in org_bones if 'face' in bone ].pop()
379 mch_name = 'eyes_parent'
380 mch_name = make_mechanism_name( mch_name )
381 mch_name = copy_bone( self.obj, face, mch_name )
382 eb[ mch_name ].use_connect = False
383 eb[ mch_name ].parent = None
385 eb[ mch_name ].length /= 4
387 mch_bones['eyes_parent'] = [ mch_name ]
389 # Create the lids' mch bones
390 all_lids = [ bone for bone in org_bones if 'lid' in bone ]
391 lids_L, lids_R = self.symmetrical_split( all_lids )
393 all_lids = [ lids_L, lids_R ]
395 mch_bones['lids'] = []
397 for i in range( 2 ):
398 for bone in all_lids[i]:
399 mch_name = make_mechanism_name( strip_org( bone ) )
400 mch_name = copy_bone( self.obj, eyes[i], mch_name )
402 eb[ mch_name ].use_connect = False
403 eb[ mch_name ].parent = None
405 eb[ mch_name ].tail[:] = eb[ bone ].head
407 mch_bones['lids'].append( mch_name )
409 mch_bones['jaw'] = []
411 length_subtractor = eb[ jaw_ctrl ].length / 6
412 # Create the jaw mch bones
413 for i in range( 6 ):
414 if i == 0:
415 mch_name = make_mechanism_name( 'mouth_lock' )
416 else:
417 mch_name = make_mechanism_name( jaw_ctrl )
419 mch_name = copy_bone( self.obj, jaw_ctrl, mch_name )
421 eb[ mch_name ].use_connect = False
422 eb[ mch_name ].parent = None
424 eb[ mch_name ].length = eb[ jaw_ctrl ].length - length_subtractor * i
426 mch_bones['jaw'].append( mch_name )
428 # Tongue mch bones
430 mch_bones['tongue'] = []
432 # create mch bones for all tongue org_bones except the first one
433 for bone in sorted([ org for org in org_bones if 'tongue' in org ])[1:]:
434 mch_name = make_mechanism_name( strip_org( bone ) )
435 mch_name = copy_bone( self.obj, tongue_ctrl, mch_name )
437 eb[ mch_name ].use_connect = False
438 eb[ mch_name ].parent = None
440 mch_bones['tongue'].append( mch_name )
442 return mch_bones
444 def parent_bones( self, all_bones, tweak_unique ):
445 org_bones = self.org_bones
446 bpy.ops.object.mode_set(mode ='EDIT')
447 eb = self.obj.data.edit_bones
449 face_name = [ bone for bone in org_bones if 'face' in bone ].pop()
451 # Initially parenting all bones to the face org bone.
452 for category in list( all_bones.keys() ):
453 for area in list( all_bones[category] ):
454 for bone in all_bones[category][area]:
455 eb[ bone ].parent = eb[ face_name ]
457 ## Parenting all deformation bones and org bones
459 # Parent all the deformation bones that have respective tweaks
460 def_tweaks = [ bone for bone in all_bones['deform']['all'] if bone[4:] in all_bones['tweaks']['all'] ]
462 # Parent all org bones to the ORG-face
463 for bone in [ bone for bone in org_bones if 'face' not in bone ]:
464 eb[ bone ].parent = eb[ org('face') ]
466 for bone in def_tweaks:
467 # the def and the matching org bone are parented to their corresponding tweak,
468 # whose name is the same as that of the def bone, without the "DEF-" (first 4 chars)
469 eb[ bone ].parent = eb[ bone[4:] ]
470 eb[ org( bone[4:] ) ].parent = eb[ bone[4:] ]
472 # Parent ORG eyes to corresponding mch bones
473 for bone in [ bone for bone in org_bones if 'eye' in bone ]:
474 eb[ bone ].parent = eb[ make_mechanism_name( strip_org( bone ) ) ]
476 for lip_tweak in list( tweak_unique.values() ):
477 # find the def bones that match unique lip_tweaks by slicing [4:-2]
478 # example: 'lip.B' matches 'DEF-lip.B.R' and 'DEF-lip.B.L' if
479 # you cut off the "DEF-" [4:] and the ".L" or ".R" [:-2]
480 lip_defs = [ bone for bone in all_bones['deform']['all'] if bone[4:-2] == lip_tweak ]
482 for bone in lip_defs:
483 eb[bone].parent = eb[ lip_tweak ]
485 # parent cheek bones top respetive tweaks
486 lips = [ 'lips.L', 'lips.R' ]
487 brows = [ 'brow.T.L', 'brow.T.R' ]
488 cheekB_defs = [ 'DEF-cheek.B.L', 'DEF-cheek.B.R' ]
489 cheekT_defs = [ 'DEF-cheek.T.L', 'DEF-cheek.T.R' ]
491 for lip, brow, cheekB, cheekT in zip( lips, brows, cheekB_defs, cheekT_defs ):
492 eb[ cheekB ].parent = eb[ lip ]
493 eb[ cheekT ].parent = eb[ brow ]
495 # parent ear deform bones to their controls
496 ear_defs = [ 'DEF-ear.L', 'DEF-ear.L.001', 'DEF-ear.R', 'DEF-ear.R.001' ]
497 ear_ctrls = [ 'ear.L', 'ear.R' ]
499 eb[ 'DEF-jaw' ].parent = eb[ 'jaw' ] # Parent jaw def bone to jaw tweak
501 for ear_ctrl in ear_ctrls:
502 for ear_def in ear_defs:
503 if ear_ctrl in ear_def:
504 eb[ ear_def ].parent = eb[ ear_ctrl ]
506 # Parent eyelid deform bones (each lid def bone is parented to its respective MCH bone)
507 def_lids = [ bone for bone in all_bones['deform']['all'] if 'lid' in bone ]
509 for bone in def_lids:
510 mch = make_mechanism_name( bone[4:] )
511 eb[ bone ].parent = eb[ mch ]
513 ## Parenting all mch bones
515 eb[ 'MCH-eyes_parent' ].parent = None # eyes_parent will be parented to root
517 # parent all mch tongue bones to the jaw master control bone
518 for bone in all_bones['mch']['tongue']:
519 eb[ bone ].parent = eb[ all_bones['ctrls']['jaw'][0] ]
521 ## Parenting the control bones
523 # parent teeth.B and tongue master controls to the jaw master control bone
524 for bone in [ 'teeth.B', 'tongue_master' ]:
525 eb[ bone ].parent = eb[ all_bones['ctrls']['jaw'][0] ]
527 # eyes
528 eb[ 'eyes' ].parent = eb[ 'MCH-eyes_parent' ]
530 eyes = [
531 bone for bone in all_bones['ctrls']['eyes'] if 'eyes' not in bone
532 ][0:2]
534 for eye in eyes:
535 eb[ eye ].parent = eb[ 'eyes' ]
537 ## turbo: parent eye master bones to face
538 for eye_master in eyes[2:]:
539 eb[ eye_master ].parent = eb[ 'ORG-face' ]
541 # Parent brow.b, eyes mch and lid tweaks and mch bones to masters
542 tweaks = [
543 b for b in all_bones['tweaks']['all'] if 'lid' in b or 'brow.B' in b
545 mch = all_bones['mch']['lids'] + \
546 all_bones['mch']['eye.R'] + \
547 all_bones['mch']['eye.L']
549 everyone = tweaks + mch
551 left, right = self.symmetrical_split( everyone )
553 for l in left:
554 eb[ l ].parent = eb[ 'master_eye.L' ]
556 for r in right:
557 eb[ r ].parent = eb[ 'master_eye.R' ]
559 ## turbo: nose to mch jaw.004
560 eb[ all_bones['ctrls']['nose'].pop() ].parent = eb['MCH-jaw_master.004']
562 ## Parenting the tweak bones
564 # Jaw children (values) groups and their parents (keys)
565 groups = {
566 'jaw_master' : [
567 'jaw',
568 'jaw.R.001',
569 'jaw.L.001',
570 'chin.L',
571 'chin.R',
572 'chin',
573 'tongue.003'
575 'MCH-jaw_master' : [
576 'lip.B'
578 'MCH-jaw_master.001' : [
579 'lip.B.L.001',
580 'lip.B.R.001'
582 'MCH-jaw_master.002' : [
583 'lips.L',
584 'lips.R',
585 'cheek.B.L.001',
586 'cheek.B.R.001'
588 'MCH-jaw_master.003' : [
589 'lip.T',
590 'lip.T.L.001',
591 'lip.T.R.001'
593 'MCH-jaw_master.004' : [
594 'cheek.T.L.001',
595 'cheek.T.R.001'
597 'nose_master' : [
598 'nose.002',
599 'nose.004',
600 'nose.L.001',
601 'nose.R.001'
605 for parent in list( groups.keys() ):
606 for bone in groups[parent]:
607 eb[ bone ].parent = eb[ parent ]
609 # Remaining arbitrary relatioships for tweak bone parenting
610 eb[ 'chin.001' ].parent = eb[ 'chin' ]
611 eb[ 'chin.002' ].parent = eb[ 'lip.B' ]
612 eb[ 'nose.001' ].parent = eb[ 'nose.002' ]
613 eb[ 'nose.003' ].parent = eb[ 'nose.002' ]
614 eb[ 'nose.005' ].parent = eb[ 'lip.T' ]
615 eb[ 'tongue' ].parent = eb[ 'tongue_master' ]
616 eb[ 'tongue.001' ].parent = eb[ 'MCH-tongue.001' ]
617 eb[ 'tongue.002' ].parent = eb[ 'MCH-tongue.002' ]
619 for bone in [ 'ear.L.002', 'ear.L.003', 'ear.L.004' ]:
620 eb[ bone ].parent = eb[ 'ear.L' ]
621 eb[ bone.replace( '.L', '.R' ) ].parent = eb[ 'ear.R' ]
624 def make_constraits( self, constraint_type, bone, subtarget, influence = 1 ):
625 org_bones = self.org_bones
626 bpy.ops.object.mode_set(mode ='OBJECT')
627 pb = self.obj.pose.bones
629 owner_pb = pb[bone]
631 if constraint_type == 'def_tweak':
633 const = owner_pb.constraints.new( 'DAMPED_TRACK' )
634 const.target = self.obj
635 const.subtarget = subtarget
637 const = owner_pb.constraints.new( 'STRETCH_TO' )
638 const.target = self.obj
639 const.subtarget = subtarget
641 elif constraint_type == 'def_lids':
643 const = owner_pb.constraints.new( 'DAMPED_TRACK' )
644 const.target = self.obj
645 const.subtarget = subtarget
646 const.head_tail = 1.0
648 const = owner_pb.constraints.new( 'STRETCH_TO' )
649 const.target = self.obj
650 const.subtarget = subtarget
651 const.head_tail = 1.0
653 elif constraint_type == 'mch_eyes':
655 const = owner_pb.constraints.new( 'DAMPED_TRACK' )
656 const.target = self.obj
657 const.subtarget = subtarget
659 elif constraint_type == 'mch_eyes_lids_follow':
661 const = owner_pb.constraints.new( 'COPY_LOCATION' )
662 const.target = self.obj
663 const.subtarget = subtarget
664 const.head_tail = 1.0
666 elif constraint_type == 'mch_eyes_parent':
668 const = owner_pb.constraints.new( 'COPY_TRANSFORMS' )
669 const.target = self.obj
670 const.subtarget = subtarget
672 elif constraint_type == 'mch_jaw_master':
674 const = owner_pb.constraints.new( 'COPY_TRANSFORMS' )
675 const.target = self.obj
676 const.subtarget = subtarget
677 const.influence = influence
679 elif constraint_type == 'tweak_copyloc':
681 const = owner_pb.constraints.new( 'COPY_LOCATION' )
682 const.target = self.obj
683 const.subtarget = subtarget
684 const.influence = influence
685 const.use_offset = True
686 const.target_space = 'LOCAL'
687 const.owner_space = 'LOCAL'
689 elif constraint_type == 'tweak_copy_rot_scl':
691 const = owner_pb.constraints.new( 'COPY_ROTATION' )
692 const.target = self.obj
693 const.subtarget = subtarget
694 const.use_offset = True
695 const.target_space = 'LOCAL'
696 const.owner_space = 'LOCAL'
698 const = owner_pb.constraints.new( 'COPY_SCALE' )
699 const.target = self.obj
700 const.subtarget = subtarget
701 const.use_offset = True
702 const.target_space = 'LOCAL'
703 const.owner_space = 'LOCAL'
705 elif constraint_type == 'tweak_copyloc_inv':
707 const = owner_pb.constraints.new( 'COPY_LOCATION' )
708 const.target = self.obj
709 const.subtarget = subtarget
710 const.influence = influence
711 const.target_space = 'LOCAL'
712 const.owner_space = 'LOCAL'
713 const.use_offset = True
714 const.invert_x = True
715 const.invert_y = True
716 const.invert_z = True
718 elif constraint_type == 'mch_tongue_copy_trans':
720 const = owner_pb.constraints.new( 'COPY_TRANSFORMS' )
721 const.target = self.obj
722 const.subtarget = subtarget
723 const.influence = influence
726 def constraints( self, all_bones ):
727 ## Def bone constraints
729 def_specials = {
730 # 'bone' : 'target'
731 'DEF-jaw' : 'chin',
732 'DEF-chin.L' : 'lips.L',
733 'DEF-jaw.L.001' : 'chin.L',
734 'DEF-chin.R' : 'lips.R',
735 'DEF-jaw.R.001' : 'chin.R',
736 'DEF-brow.T.L.003' : 'nose',
737 'DEF-ear.L.003' : 'ear.L.004',
738 'DEF-ear.L.004' : 'ear.L',
739 'DEF-ear.R.003' : 'ear.R.004',
740 'DEF-ear.R.004' : 'ear.R',
741 'DEF-lip.B.L.001' : 'lips.L',
742 'DEF-lip.B.R.001' : 'lips.R',
743 'DEF-cheek.B.L.001' : 'brow.T.L',
744 'DEF-cheek.B.R.001' : 'brow.T.R',
745 'DEF-lip.T.L.001' : 'lips.L',
746 'DEF-lip.T.R.001' : 'lips.R',
747 'DEF-cheek.T.L.001' : 'nose.L',
748 'DEF-nose.L.001' : 'nose.002',
749 'DEF-cheek.T.R.001' : 'nose.R',
750 'DEF-nose.R.001' : 'nose.002',
751 'DEF-forehead.L' : 'brow.T.L.003',
752 'DEF-forehead.L.001' : 'brow.T.L.002',
753 'DEF-forehead.L.002' : 'brow.T.L.001',
754 'DEF-temple.L' : 'jaw.L',
755 'DEF-brow.T.R.003' : 'nose',
756 'DEF-forehead.R' : 'brow.T.R.003',
757 'DEF-forehead.R.001' : 'brow.T.R.002',
758 'DEF-forehead.R.002' : 'brow.T.R.001',
759 'DEF-temple.R' : 'jaw.R'
762 pattern = r'^DEF-(\w+\.?\w?\.?\w?)(\.?)(\d*?)(\d?)$'
764 for bone in [ bone for bone in all_bones['deform']['all'] if 'lid' not in bone ]:
765 if bone in list( def_specials.keys() ):
766 self.make_constraits('def_tweak', bone, def_specials[bone] )
767 else:
768 matches = re.match( pattern, bone ).groups()
769 if len( matches ) > 1 and matches[-1]:
770 num = int( matches[-1] ) + 1
771 str_list = list( matches )[:-1] + [ str( num ) ]
772 tweak = "".join( str_list )
773 else:
774 tweak = "".join( matches ) + ".001"
775 self.make_constraits('def_tweak', bone, tweak )
777 def_lids = sorted( [ bone for bone in all_bones['deform']['all'] if 'lid' in bone ] )
778 mch_lids = sorted( [ bone for bone in all_bones['mch']['lids'] ] )
780 def_lidsL, def_lidsR = self.symmetrical_split( def_lids )
781 mch_lidsL, mch_lidsR = self.symmetrical_split( mch_lids )
783 # Take the last mch_lid bone and place it at the end
784 mch_lidsL = mch_lidsL[1:] + [ mch_lidsL[0] ]
785 mch_lidsR = mch_lidsR[1:] + [ mch_lidsR[0] ]
787 for boneL, boneR, mchL, mchR in zip( def_lidsL, def_lidsR, mch_lidsL, mch_lidsR ):
788 self.make_constraits('def_lids', boneL, mchL )
789 self.make_constraits('def_lids', boneR, mchR )
791 ## MCH constraints
793 # mch lids constraints
794 for bone in all_bones['mch']['lids']:
795 tweak = bone[4:] # remove "MCH-" from bone name
796 self.make_constraits('mch_eyes', bone, tweak )
798 # mch eyes constraints
799 for bone in [ 'MCH-eye.L', 'MCH-eye.R' ]:
800 ctrl = bone[4:] # remove "MCH-" from bone name
801 self.make_constraits('mch_eyes', bone, ctrl )
803 for bone in [ 'MCH-eye.L.001', 'MCH-eye.R.001' ]:
804 target = bone[:-4] # remove number from the end of the name
805 self.make_constraits('mch_eyes_lids_follow', bone, target )
807 # mch eyes parent constraints
808 self.make_constraits('mch_eyes_parent', 'MCH-eyes_parent', 'ORG-face' )
810 ## Jaw constraints
812 # jaw master mch bones
813 self.make_constraits( 'mch_jaw_master', 'MCH-mouth_lock', 'jaw_master', 0.20 )
814 self.make_constraits( 'mch_jaw_master', 'MCH-jaw_master', 'jaw_master', 1.00 )
815 self.make_constraits( 'mch_jaw_master', 'MCH-jaw_master.001', 'jaw_master', 0.75 )
816 self.make_constraits( 'mch_jaw_master', 'MCH-jaw_master.002', 'jaw_master', 0.35 )
817 self.make_constraits( 'mch_jaw_master', 'MCH-jaw_master.003', 'jaw_master', 0.10 )
818 self.make_constraits( 'mch_jaw_master', 'MCH-jaw_master.004', 'jaw_master', 0.025 )
820 for bone in all_bones['mch']['jaw'][1:-1]:
821 self.make_constraits( 'mch_jaw_master', bone, 'MCH-mouth_lock' )
823 ## Tweak bones constraints
825 # copy location constraints for tweak bones of both sides
826 tweak_copyloc_L = {
827 'brow.T.L.002' : [ [ 'brow.T.L.001', 'brow.T.L.003' ], [ 0.5, 0.5 ] ],
828 'ear.L.003' : [ [ 'ear.L.004', 'ear.L.002' ], [ 0.5, 0.5 ] ],
829 'brow.B.L.001' : [ [ 'brow.B.L.002' ], [ 0.6 ] ],
830 'brow.B.L.003' : [ [ 'brow.B.L.002' ], [ 0.6 ] ],
831 'brow.B.L.002' : [ [ 'lid.T.L.001', ], [ 0.25 ] ],
832 'brow.B.L.002' : [ [ 'brow.T.L.002', ], [ 0.25 ] ],
833 'lid.T.L.001' : [ [ 'lid.T.L.002' ], [ 0.6 ] ],
834 'lid.T.L.003' : [ [ 'lid.T.L.002', ], [ 0.6 ] ],
835 'lid.T.L.002' : [ [ 'MCH-eye.L.001', ], [ 0.5 ] ],
836 'lid.B.L.001' : [ [ 'lid.B.L.002', ], [ 0.6 ] ],
837 'lid.B.L.003' : [ [ 'lid.B.L.002', ], [ 0.6 ] ],
838 'lid.B.L.002' : [ [ 'MCH-eye.L.001', 'cheek.T.L.001' ], [ 0.5, 0.1 ] ],
839 'cheek.T.L.001' : [ [ 'cheek.B.L.001', ], [ 0.5 ] ],
840 'nose.L' : [ [ 'nose.L.001', ], [ 0.25 ] ],
841 'nose.L.001' : [ [ 'lip.T.L.001', ], [ 0.2 ] ],
842 'cheek.B.L.001' : [ [ 'lips.L', ], [ 0.5 ] ],
843 'lip.T.L.001' : [ [ 'lips.L', 'lip.T' ], [ 0.25, 0.5 ] ],
844 'lip.B.L.001' : [ [ 'lips.L', 'lip.B' ], [ 0.25, 0.5 ] ]
847 for owner in list( tweak_copyloc_L.keys() ):
849 targets, influences = tweak_copyloc_L[owner]
850 for target, influence in zip( targets, influences ):
852 # Left side constraints
853 self.make_constraits( 'tweak_copyloc', owner, target, influence )
855 # create constraints for the right side too
856 ownerR = owner.replace( '.L', '.R' )
857 targetR = target.replace( '.L', '.R' )
858 self.make_constraits( 'tweak_copyloc', ownerR, targetR, influence )
860 # copy rotation & scale constraints for tweak bones of both sides
861 tweak_copy_rot_scl_L = {
862 'lip.T.L.001' : 'lip.T',
863 'lip.B.L.001' : 'lip.B'
866 for owner in list( tweak_copy_rot_scl_L.keys() ):
867 target = tweak_copy_rot_scl_L[owner]
868 influence = tweak_copy_rot_scl_L[owner]
869 self.make_constraits( 'tweak_copy_rot_scl', owner, target )
871 # create constraints for the right side too
872 owner = owner.replace( '.L', '.R' )
873 self.make_constraits( 'tweak_copy_rot_scl', owner, target )
875 # inverted tweak bones constraints
876 tweak_nose = {
877 'nose.001' : [ 'nose.002', 0.35 ],
878 'nose.003' : [ 'nose.002', 0.5 ],
879 'nose.005' : [ 'lip.T', 0.5 ],
880 'chin.002' : [ 'lip.B', 0.5 ]
883 for owner in list( tweak_nose.keys() ):
884 target = tweak_nose[owner][0]
885 influence = tweak_nose[owner][1]
886 self.make_constraits( 'tweak_copyloc_inv', owner, target, influence )
888 # MCH tongue constraints
889 divider = len( all_bones['mch']['tongue'] ) + 1
890 factor = len( all_bones['mch']['tongue'] )
892 for owner in all_bones['mch']['tongue']:
893 self.make_constraits( 'mch_tongue_copy_trans', owner, 'tongue_master', ( 1 / divider ) * factor )
894 factor -= 1
897 def drivers_and_props( self, all_bones ):
899 bpy.ops.object.mode_set(mode ='OBJECT')
900 pb = self.obj.pose.bones
902 jaw_ctrl = all_bones['ctrls']['jaw'][0]
903 eyes_ctrl = all_bones['ctrls']['eyes'][2]
905 jaw_prop = 'mouth_lock'
906 eyes_prop = 'eyes_follow'
908 for bone, prop_name in zip( [ jaw_ctrl, eyes_ctrl ], [ jaw_prop, eyes_prop ] ):
909 if bone == jaw_ctrl:
910 pb[ bone ][ prop_name ] = 0.0
911 else:
912 pb[ bone ][ prop_name ] = 1.0
914 prop = rna_idprop_ui_prop_get( pb[ bone ], prop_name )
915 prop["min"] = 0.0
916 prop["max"] = 1.0
917 prop["soft_min"] = 0.0
918 prop["soft_max"] = 1.0
919 prop["description"] = prop_name
921 # Jaw drivers
922 mch_jaws = all_bones['mch']['jaw'][1:-1]
924 for bone in mch_jaws:
925 drv = pb[ bone ].constraints[1].driver_add("influence").driver
926 drv.type='SUM'
928 var = drv.variables.new()
929 var.name = jaw_prop
930 var.type = "SINGLE_PROP"
931 var.targets[0].id = self.obj
932 var.targets[0].data_path = pb[ jaw_ctrl ].path_from_id() + '['+ '"' + jaw_prop + '"' + ']'
935 # Eyes driver
936 mch_eyes_parent = all_bones['mch']['eyes_parent'][0]
938 drv = pb[ mch_eyes_parent ].constraints[0].driver_add("influence").driver
939 drv.type='SUM'
941 var = drv.variables.new()
942 var.name = eyes_prop
943 var.type = "SINGLE_PROP"
944 var.targets[0].id = self.obj
945 var.targets[0].data_path = pb[ eyes_ctrl ].path_from_id() + '['+ '"' + eyes_prop + '"' + ']'
947 return jaw_prop, eyes_prop
949 def create_bones(self):
950 org_bones = self.org_bones
951 bpy.ops.object.mode_set(mode ='EDIT')
952 eb = self.obj.data.edit_bones
954 # Clear parents for org bones
955 for bone in [ bone for bone in org_bones if 'face' not in bone ]:
956 eb[bone].use_connect = False
957 eb[bone].parent = None
959 all_bones = {}
961 def_names = self.create_deformation()
962 ctrls, tweak_unique = self.all_controls()
963 mchs = self.create_mch(
964 ctrls['ctrls']['jaw'][0],
965 ctrls['ctrls']['tongue'][0]
967 return {
968 'deform' : def_names,
969 'ctrls' : ctrls['ctrls'],
970 'tweaks' : ctrls['tweaks'],
971 'mch' : mchs
972 }, tweak_unique
975 def generate(self):
977 all_bones, tweak_unique = self.create_bones()
978 self.parent_bones( all_bones, tweak_unique )
979 self.constraints( all_bones )
980 jaw_prop, eyes_prop = self.drivers_and_props( all_bones )
983 # Create UI
984 all_controls = []
985 all_controls += [ bone for bone in [ bgroup for bgroup in [ all_bones['ctrls'][group] for group in list( all_bones['ctrls'].keys() ) ] ] ]
986 all_controls += [ bone for bone in [ bgroup for bgroup in [ all_bones['tweaks'][group] for group in list( all_bones['tweaks'].keys() ) ] ] ]
988 all_ctrls = []
989 for group in all_controls:
990 for bone in group:
991 all_ctrls.append( bone )
993 controls_string = ", ".join(["'" + x + "'" for x in all_ctrls])
994 return [ script % (
995 controls_string,
996 all_bones['ctrls']['jaw'][0],
997 all_bones['ctrls']['eyes'][2],
998 jaw_prop,
999 eyes_prop )
1003 def add_parameters(params):
1004 """ Add the parameters of this rig type to the
1005 RigifyParameters PropertyGroup
1008 #Setting up extra layers for the tweak bones
1009 params.primary_layers_extra = bpy.props.BoolProperty(
1010 name = "primary_layers_extra",
1011 default = True,
1012 description = ""
1014 params.primary_layers = bpy.props.BoolVectorProperty(
1015 size = 32,
1016 description = "Layers for the 1st tweak controls to be on",
1017 default = tuple( [ i == 1 for i in range(0, 32) ] )
1019 params.secondary_layers_extra = bpy.props.BoolProperty(
1020 name = "secondary_layers_extra",
1021 default = True,
1022 description = ""
1024 params.secondary_layers = bpy.props.BoolVectorProperty(
1025 size = 32,
1026 description = "Layers for the 2nd tweak controls to be on",
1027 default = tuple( [ i == 1 for i in range(0, 32) ] )
1031 def parameters_ui(layout, params):
1032 """ Create the ui for the rig parameters."""
1033 layers = ["primary_layers", "secondary_layers"]
1035 for layer in layers:
1036 r = layout.row()
1037 r.prop( params, layer + "_extra" )
1038 r.active = getattr( params, layer + "_extra" )
1040 col = r.column(align=True)
1041 row = col.row(align=True)
1042 for i in range(8):
1043 row.prop(params, layer, index=i, toggle=True, text="")
1045 row = col.row(align=True)
1046 for i in range(16,24):
1047 row.prop(params, layer, index=i, toggle=True, text="")
1049 col = r.column(align=True)
1050 row = col.row(align=True)
1052 for i in range(8,16):
1053 row.prop(params, layer, index=i, toggle=True, text="")
1055 row = col.row(align=True)
1056 for i in range(24,32):
1057 row.prop(params, layer, index=i, toggle=True, text="")
1060 def create_sample(obj):
1061 # generated by rigify.utils.write_metarig
1062 bpy.ops.object.mode_set(mode='EDIT')
1063 arm = obj.data
1065 bones = {}
1067 bone = arm.edit_bones.new('face')
1068 bone.head[:] = -0.0000, -0.0013, 0.0437
1069 bone.tail[:] = -0.0000, -0.0013, 0.1048
1070 bone.roll = 0.0000
1071 bone.use_connect = False
1072 bones['face'] = bone.name
1073 bone = arm.edit_bones.new('nose')
1074 bone.head[:] = 0.0004, -0.0905, 0.1125
1075 bone.tail[:] = 0.0004, -0.1105, 0.0864
1076 bone.roll = 0.0000
1077 bone.use_connect = False
1078 bone.parent = arm.edit_bones[bones['face']]
1079 bones['nose'] = bone.name
1080 bone = arm.edit_bones.new('lip.T.L')
1081 bone.head[:] = 0.0000, -0.1022, 0.0563
1082 bone.tail[:] = 0.0131, -0.0986, 0.0567
1083 bone.roll = 0.0000
1084 bone.use_connect = False
1085 bone.parent = arm.edit_bones[bones['face']]
1086 bones['lip.T.L'] = bone.name
1087 bone = arm.edit_bones.new('lip.B.L')
1088 bone.head[:] = 0.0000, -0.0993, 0.0455
1089 bone.tail[:] = 0.0124, -0.0938, 0.0488
1090 bone.roll = -0.0789
1091 bone.use_connect = False
1092 bone.parent = arm.edit_bones[bones['face']]
1093 bones['lip.B.L'] = bone.name
1094 bone = arm.edit_bones.new('jaw')
1095 bone.head[:] = 0.0004, -0.0389, 0.0222
1096 bone.tail[:] = 0.0004, -0.0923, 0.0044
1097 bone.roll = 0.0000
1098 bone.use_connect = False
1099 bone.parent = arm.edit_bones[bones['face']]
1100 bones['jaw'] = bone.name
1101 bone = arm.edit_bones.new('ear.L')
1102 bone.head[:] = 0.0616, -0.0083, 0.0886
1103 bone.tail[:] = 0.0663, -0.0101, 0.1151
1104 bone.roll = -0.0324
1105 bone.use_connect = False
1106 bone.parent = arm.edit_bones[bones['face']]
1107 bones['ear.L'] = bone.name
1108 bone = arm.edit_bones.new('ear.R')
1109 bone.head[:] = -0.0616, -0.0083, 0.0886
1110 bone.tail[:] = -0.0663, -0.0101, 0.1151
1111 bone.roll = 0.0324
1112 bone.use_connect = False
1113 bone.parent = arm.edit_bones[bones['face']]
1114 bones['ear.R'] = bone.name
1115 bone = arm.edit_bones.new('lip.T.R')
1116 bone.head[:] = -0.0000, -0.1022, 0.0563
1117 bone.tail[:] = -0.0131, -0.0986, 0.0567
1118 bone.roll = -0.0000
1119 bone.use_connect = False
1120 bone.parent = arm.edit_bones[bones['face']]
1121 bones['lip.T.R'] = bone.name
1122 bone = arm.edit_bones.new('lip.B.R')
1123 bone.head[:] = -0.0000, -0.0993, 0.0455
1124 bone.tail[:] = -0.0124, -0.0938, 0.0488
1125 bone.roll = 0.0789
1126 bone.use_connect = False
1127 bone.parent = arm.edit_bones[bones['face']]
1128 bones['lip.B.R'] = bone.name
1129 bone = arm.edit_bones.new('brow.B.L')
1130 bone.head[:] = 0.0530, -0.0705, 0.1153
1131 bone.tail[:] = 0.0472, -0.0780, 0.1192
1132 bone.roll = 0.0412
1133 bone.use_connect = False
1134 bone.parent = arm.edit_bones[bones['face']]
1135 bones['brow.B.L'] = bone.name
1136 bone = arm.edit_bones.new('lid.T.L')
1137 bone.head[:] = 0.0515, -0.0692, 0.1104
1138 bone.tail[:] = 0.0474, -0.0785, 0.1136
1139 bone.roll = 0.1166
1140 bone.use_connect = False
1141 bone.parent = arm.edit_bones[bones['face']]
1142 bones['lid.T.L'] = bone.name
1143 bone = arm.edit_bones.new('brow.B.R')
1144 bone.head[:] = -0.0530, -0.0705, 0.1153
1145 bone.tail[:] = -0.0472, -0.0780, 0.1192
1146 bone.roll = -0.0412
1147 bone.use_connect = False
1148 bone.parent = arm.edit_bones[bones['face']]
1149 bones['brow.B.R'] = bone.name
1150 bone = arm.edit_bones.new('lid.T.R')
1151 bone.head[:] = -0.0515, -0.0692, 0.1104
1152 bone.tail[:] = -0.0474, -0.0785, 0.1136
1153 bone.roll = -0.1166
1154 bone.use_connect = False
1155 bone.parent = arm.edit_bones[bones['face']]
1156 bones['lid.T.R'] = bone.name
1157 bone = arm.edit_bones.new('forehead.L')
1158 bone.head[:] = 0.0113, -0.0764, 0.1611
1159 bone.tail[:] = 0.0144, -0.0912, 0.1236
1160 bone.roll = 1.4313
1161 bone.use_connect = False
1162 bone.parent = arm.edit_bones[bones['face']]
1163 bones['forehead.L'] = bone.name
1164 bone = arm.edit_bones.new('forehead.R')
1165 bone.head[:] = -0.0113, -0.0764, 0.1611
1166 bone.tail[:] = -0.0144, -0.0912, 0.1236
1167 bone.roll = -1.4313
1168 bone.use_connect = False
1169 bone.parent = arm.edit_bones[bones['face']]
1170 bones['forehead.R'] = bone.name
1171 bone = arm.edit_bones.new('eye.L')
1172 bone.head[:] = 0.0360, -0.0686, 0.1107
1173 bone.tail[:] = 0.0360, -0.0848, 0.1107
1174 bone.roll = 0.0000
1175 bone.use_connect = False
1176 bone.parent = arm.edit_bones[bones['face']]
1177 bones['eye.L'] = bone.name
1178 bone = arm.edit_bones.new('eye.R')
1179 bone.head[:] = -0.0360, -0.0686, 0.1107
1180 bone.tail[:] = -0.0360, -0.0848, 0.1107
1181 bone.roll = -0.0000
1182 bone.use_connect = False
1183 bone.parent = arm.edit_bones[bones['face']]
1184 bones['eye.R'] = bone.name
1185 bone = arm.edit_bones.new('cheek.T.L')
1186 bone.head[:] = 0.0568, -0.0506, 0.1052
1187 bone.tail[:] = 0.0379, -0.0834, 0.0816
1188 bone.roll = -0.0096
1189 bone.use_connect = False
1190 bone.parent = arm.edit_bones[bones['face']]
1191 bones['cheek.T.L'] = bone.name
1192 bone = arm.edit_bones.new('cheek.T.R')
1193 bone.head[:] = -0.0568, -0.0506, 0.1052
1194 bone.tail[:] = -0.0379, -0.0834, 0.0816
1195 bone.roll = 0.0096
1196 bone.use_connect = False
1197 bone.parent = arm.edit_bones[bones['face']]
1198 bones['cheek.T.R'] = bone.name
1199 bone = arm.edit_bones.new('teeth.T')
1200 bone.head[:] = 0.0004, -0.0927, 0.0613
1201 bone.tail[:] = 0.0004, -0.0621, 0.0613
1202 bone.roll = 0.0000
1203 bone.use_connect = False
1204 bone.parent = arm.edit_bones[bones['face']]
1205 bones['teeth.T'] = bone.name
1206 bone = arm.edit_bones.new('teeth.B')
1207 bone.head[:] = 0.0004, -0.0881, 0.0397
1208 bone.tail[:] = 0.0004, -0.0575, 0.0397
1209 bone.roll = 0.0000
1210 bone.use_connect = False
1211 bone.parent = arm.edit_bones[bones['face']]
1212 bones['teeth.B'] = bone.name
1213 bone = arm.edit_bones.new('tongue')
1214 bone.head[:] = 0.0004, -0.0781, 0.0493
1215 bone.tail[:] = 0.0004, -0.0620, 0.0567
1216 bone.roll = 0.0000
1217 bone.use_connect = False
1218 bone.parent = arm.edit_bones[bones['face']]
1219 bones['tongue'] = bone.name
1220 bone = arm.edit_bones.new('nose.001')
1221 bone.head[:] = 0.0004, -0.1105, 0.0864
1222 bone.tail[:] = 0.0004, -0.1193, 0.0771
1223 bone.roll = 0.0000
1224 bone.use_connect = True
1225 bone.parent = arm.edit_bones[bones['nose']]
1226 bones['nose.001'] = bone.name
1227 bone = arm.edit_bones.new('lip.T.L.001')
1228 bone.head[:] = 0.0131, -0.0986, 0.0567
1229 bone.tail[:] = 0.0236, -0.0877, 0.0519
1230 bone.roll = 0.0236
1231 bone.use_connect = True
1232 bone.parent = arm.edit_bones[bones['lip.T.L']]
1233 bones['lip.T.L.001'] = bone.name
1234 bone = arm.edit_bones.new('lip.B.L.001')
1235 bone.head[:] = 0.0124, -0.0938, 0.0488
1236 bone.tail[:] = 0.0236, -0.0877, 0.0519
1237 bone.roll = 0.0731
1238 bone.use_connect = True
1239 bone.parent = arm.edit_bones[bones['lip.B.L']]
1240 bones['lip.B.L.001'] = bone.name
1241 bone = arm.edit_bones.new('chin')
1242 bone.head[:] = 0.0004, -0.0923, 0.0044
1243 bone.tail[:] = 0.0004, -0.0921, 0.0158
1244 bone.roll = 0.0000
1245 bone.use_connect = True
1246 bone.parent = arm.edit_bones[bones['jaw']]
1247 bones['chin'] = bone.name
1248 bone = arm.edit_bones.new('ear.L.001')
1249 bone.head[:] = 0.0663, -0.0101, 0.1151
1250 bone.tail[:] = 0.0804, 0.0065, 0.1189
1251 bone.roll = 0.0656
1252 bone.use_connect = True
1253 bone.parent = arm.edit_bones[bones['ear.L']]
1254 bones['ear.L.001'] = bone.name
1255 bone = arm.edit_bones.new('ear.R.001')
1256 bone.head[:] = -0.0663, -0.0101, 0.1151
1257 bone.tail[:] = -0.0804, 0.0065, 0.1189
1258 bone.roll = -0.0656
1259 bone.use_connect = True
1260 bone.parent = arm.edit_bones[bones['ear.R']]
1261 bones['ear.R.001'] = bone.name
1262 bone = arm.edit_bones.new('lip.T.R.001')
1263 bone.head[:] = -0.0131, -0.0986, 0.0567
1264 bone.tail[:] = -0.0236, -0.0877, 0.0519
1265 bone.roll = -0.0236
1266 bone.use_connect = True
1267 bone.parent = arm.edit_bones[bones['lip.T.R']]
1268 bones['lip.T.R.001'] = bone.name
1269 bone = arm.edit_bones.new('lip.B.R.001')
1270 bone.head[:] = -0.0124, -0.0938, 0.0488
1271 bone.tail[:] = -0.0236, -0.0877, 0.0519
1272 bone.roll = -0.0731
1273 bone.use_connect = True
1274 bone.parent = arm.edit_bones[bones['lip.B.R']]
1275 bones['lip.B.R.001'] = bone.name
1276 bone = arm.edit_bones.new('brow.B.L.001')
1277 bone.head[:] = 0.0472, -0.0780, 0.1192
1278 bone.tail[:] = 0.0387, -0.0832, 0.1202
1279 bone.roll = 0.0192
1280 bone.use_connect = True
1281 bone.parent = arm.edit_bones[bones['brow.B.L']]
1282 bones['brow.B.L.001'] = bone.name
1283 bone = arm.edit_bones.new('lid.T.L.001')
1284 bone.head[:] = 0.0474, -0.0785, 0.1136
1285 bone.tail[:] = 0.0394, -0.0838, 0.1147
1286 bone.roll = 0.0791
1287 bone.use_connect = True
1288 bone.parent = arm.edit_bones[bones['lid.T.L']]
1289 bones['lid.T.L.001'] = bone.name
1290 bone = arm.edit_bones.new('brow.B.R.001')
1291 bone.head[:] = -0.0472, -0.0780, 0.1192
1292 bone.tail[:] = -0.0387, -0.0832, 0.1202
1293 bone.roll = -0.0192
1294 bone.use_connect = True
1295 bone.parent = arm.edit_bones[bones['brow.B.R']]
1296 bones['brow.B.R.001'] = bone.name
1297 bone = arm.edit_bones.new('lid.T.R.001')
1298 bone.head[:] = -0.0474, -0.0785, 0.1136
1299 bone.tail[:] = -0.0394, -0.0838, 0.1147
1300 bone.roll = -0.0791
1301 bone.use_connect = True
1302 bone.parent = arm.edit_bones[bones['lid.T.R']]
1303 bones['lid.T.R.001'] = bone.name
1304 bone = arm.edit_bones.new('forehead.L.001')
1305 bone.head[:] = 0.0321, -0.0663, 0.1646
1306 bone.tail[:] = 0.0394, -0.0828, 0.1310
1307 bone.roll = 0.9928
1308 bone.use_connect = False
1309 bone.parent = arm.edit_bones[bones['forehead.L']]
1310 bones['forehead.L.001'] = bone.name
1311 bone = arm.edit_bones.new('forehead.R.001')
1312 bone.head[:] = -0.0321, -0.0663, 0.1646
1313 bone.tail[:] = -0.0394, -0.0828, 0.1310
1314 bone.roll = -0.9928
1315 bone.use_connect = False
1316 bone.parent = arm.edit_bones[bones['forehead.R']]
1317 bones['forehead.R.001'] = bone.name
1318 bone = arm.edit_bones.new('cheek.T.L.001')
1319 bone.head[:] = 0.0379, -0.0834, 0.0816
1320 bone.tail[:] = 0.0093, -0.0846, 0.1002
1321 bone.roll = 0.0320
1322 bone.use_connect = True
1323 bone.parent = arm.edit_bones[bones['cheek.T.L']]
1324 bones['cheek.T.L.001'] = bone.name
1325 bone = arm.edit_bones.new('cheek.T.R.001')
1326 bone.head[:] = -0.0379, -0.0834, 0.0816
1327 bone.tail[:] = -0.0093, -0.0846, 0.1002
1328 bone.roll = -0.0320
1329 bone.use_connect = True
1330 bone.parent = arm.edit_bones[bones['cheek.T.R']]
1331 bones['cheek.T.R.001'] = bone.name
1332 bone = arm.edit_bones.new('tongue.001')
1333 bone.head[:] = 0.0004, -0.0620, 0.0567
1334 bone.tail[:] = 0.0004, -0.0406, 0.0584
1335 bone.roll = 0.0000
1336 bone.use_connect = True
1337 bone.parent = arm.edit_bones[bones['tongue']]
1338 bones['tongue.001'] = bone.name
1339 bone = arm.edit_bones.new('nose.002')
1340 bone.head[:] = 0.0004, -0.1193, 0.0771
1341 bone.tail[:] = 0.0004, -0.1118, 0.0739
1342 bone.roll = 0.0000
1343 bone.use_connect = True
1344 bone.parent = arm.edit_bones[bones['nose.001']]
1345 bones['nose.002'] = bone.name
1346 bone = arm.edit_bones.new('chin.001')
1347 bone.head[:] = 0.0004, -0.0921, 0.0158
1348 bone.tail[:] = 0.0004, -0.0914, 0.0404
1349 bone.roll = 0.0000
1350 bone.use_connect = True
1351 bone.parent = arm.edit_bones[bones['chin']]
1352 bones['chin.001'] = bone.name
1353 bone = arm.edit_bones.new('ear.L.002')
1354 bone.head[:] = 0.0804, 0.0065, 0.1189
1355 bone.tail[:] = 0.0808, 0.0056, 0.0935
1356 bone.roll = -0.0265
1357 bone.use_connect = True
1358 bone.parent = arm.edit_bones[bones['ear.L.001']]
1359 bones['ear.L.002'] = bone.name
1360 bone = arm.edit_bones.new('ear.R.002')
1361 bone.head[:] = -0.0804, 0.0065, 0.1189
1362 bone.tail[:] = -0.0808, 0.0056, 0.0935
1363 bone.roll = 0.0265
1364 bone.use_connect = True
1365 bone.parent = arm.edit_bones[bones['ear.R.001']]
1366 bones['ear.R.002'] = bone.name
1367 bone = arm.edit_bones.new('brow.B.L.002')
1368 bone.head[:] = 0.0387, -0.0832, 0.1202
1369 bone.tail[:] = 0.0295, -0.0826, 0.1179
1370 bone.roll = -0.0278
1371 bone.use_connect = True
1372 bone.parent = arm.edit_bones[bones['brow.B.L.001']]
1373 bones['brow.B.L.002'] = bone.name
1374 bone = arm.edit_bones.new('lid.T.L.002')
1375 bone.head[:] = 0.0394, -0.0838, 0.1147
1376 bone.tail[:] = 0.0317, -0.0832, 0.1131
1377 bone.roll = -0.0356
1378 bone.use_connect = True
1379 bone.parent = arm.edit_bones[bones['lid.T.L.001']]
1380 bones['lid.T.L.002'] = bone.name
1381 bone = arm.edit_bones.new('brow.B.R.002')
1382 bone.head[:] = -0.0387, -0.0832, 0.1202
1383 bone.tail[:] = -0.0295, -0.0826, 0.1179
1384 bone.roll = 0.0278
1385 bone.use_connect = True
1386 bone.parent = arm.edit_bones[bones['brow.B.R.001']]
1387 bones['brow.B.R.002'] = bone.name
1388 bone = arm.edit_bones.new('lid.T.R.002')
1389 bone.head[:] = -0.0394, -0.0838, 0.1147
1390 bone.tail[:] = -0.0317, -0.0832, 0.1131
1391 bone.roll = 0.0356
1392 bone.use_connect = True
1393 bone.parent = arm.edit_bones[bones['lid.T.R.001']]
1394 bones['lid.T.R.002'] = bone.name
1395 bone = arm.edit_bones.new('forehead.L.002')
1396 bone.head[:] = 0.0482, -0.0506, 0.1620
1397 bone.tail[:] = 0.0556, -0.0689, 0.1249
1398 bone.roll = 0.4509
1399 bone.use_connect = False
1400 bone.parent = arm.edit_bones[bones['forehead.L.001']]
1401 bones['forehead.L.002'] = bone.name
1402 bone = arm.edit_bones.new('forehead.R.002')
1403 bone.head[:] = -0.0482, -0.0506, 0.1620
1404 bone.tail[:] = -0.0556, -0.0689, 0.1249
1405 bone.roll = -0.4509
1406 bone.use_connect = False
1407 bone.parent = arm.edit_bones[bones['forehead.R.001']]
1408 bones['forehead.R.002'] = bone.name
1409 bone = arm.edit_bones.new('nose.L')
1410 bone.head[:] = 0.0093, -0.0846, 0.1002
1411 bone.tail[:] = 0.0118, -0.0966, 0.0757
1412 bone.roll = -0.0909
1413 bone.use_connect = True
1414 bone.parent = arm.edit_bones[bones['cheek.T.L.001']]
1415 bones['nose.L'] = bone.name
1416 bone = arm.edit_bones.new('nose.R')
1417 bone.head[:] = -0.0093, -0.0846, 0.1002
1418 bone.tail[:] = -0.0118, -0.0966, 0.0757
1419 bone.roll = 0.0909
1420 bone.use_connect = True
1421 bone.parent = arm.edit_bones[bones['cheek.T.R.001']]
1422 bones['nose.R'] = bone.name
1423 bone = arm.edit_bones.new('tongue.002')
1424 bone.head[:] = 0.0004, -0.0406, 0.0584
1425 bone.tail[:] = 0.0004, -0.0178, 0.0464
1426 bone.roll = 0.0000
1427 bone.use_connect = True
1428 bone.parent = arm.edit_bones[bones['tongue.001']]
1429 bones['tongue.002'] = bone.name
1430 bone = arm.edit_bones.new('nose.003')
1431 bone.head[:] = 0.0004, -0.1118, 0.0739
1432 bone.tail[:] = 0.0004, -0.1019, 0.0733
1433 bone.roll = 0.0000
1434 bone.use_connect = True
1435 bone.parent = arm.edit_bones[bones['nose.002']]
1436 bones['nose.003'] = bone.name
1437 bone = arm.edit_bones.new('ear.L.003')
1438 bone.head[:] = 0.0808, 0.0056, 0.0935
1439 bone.tail[:] = 0.0677, -0.0109, 0.0752
1440 bone.roll = 0.3033
1441 bone.use_connect = True
1442 bone.parent = arm.edit_bones[bones['ear.L.002']]
1443 bones['ear.L.003'] = bone.name
1444 bone = arm.edit_bones.new('ear.R.003')
1445 bone.head[:] = -0.0808, 0.0056, 0.0935
1446 bone.tail[:] = -0.0677, -0.0109, 0.0752
1447 bone.roll = -0.3033
1448 bone.use_connect = True
1449 bone.parent = arm.edit_bones[bones['ear.R.002']]
1450 bones['ear.R.003'] = bone.name
1451 bone = arm.edit_bones.new('brow.B.L.003')
1452 bone.head[:] = 0.0295, -0.0826, 0.1179
1453 bone.tail[:] = 0.0201, -0.0812, 0.1095
1454 bone.roll = 0.0417
1455 bone.use_connect = True
1456 bone.parent = arm.edit_bones[bones['brow.B.L.002']]
1457 bones['brow.B.L.003'] = bone.name
1458 bone = arm.edit_bones.new('lid.T.L.003')
1459 bone.head[:] = 0.0317, -0.0832, 0.1131
1460 bone.tail[:] = 0.0237, -0.0826, 0.1058
1461 bone.roll = 0.0245
1462 bone.use_connect = True
1463 bone.parent = arm.edit_bones[bones['lid.T.L.002']]
1464 bones['lid.T.L.003'] = bone.name
1465 bone = arm.edit_bones.new('brow.B.R.003')
1466 bone.head[:] = -0.0295, -0.0826, 0.1179
1467 bone.tail[:] = -0.0201, -0.0812, 0.1095
1468 bone.roll = -0.0417
1469 bone.use_connect = True
1470 bone.parent = arm.edit_bones[bones['brow.B.R.002']]
1471 bones['brow.B.R.003'] = bone.name
1472 bone = arm.edit_bones.new('lid.T.R.003')
1473 bone.head[:] = -0.0317, -0.0832, 0.1131
1474 bone.tail[:] = -0.0237, -0.0826, 0.1058
1475 bone.roll = -0.0245
1476 bone.use_connect = True
1477 bone.parent = arm.edit_bones[bones['lid.T.R.002']]
1478 bones['lid.T.R.003'] = bone.name
1479 bone = arm.edit_bones.new('temple.L')
1480 bone.head[:] = 0.0585, -0.0276, 0.1490
1481 bone.tail[:] = 0.0607, -0.0295, 0.0962
1482 bone.roll = -0.0650
1483 bone.use_connect = False
1484 bone.parent = arm.edit_bones[bones['forehead.L.002']]
1485 bones['temple.L'] = bone.name
1486 bone = arm.edit_bones.new('temple.R')
1487 bone.head[:] = -0.0585, -0.0276, 0.1490
1488 bone.tail[:] = -0.0607, -0.0295, 0.0962
1489 bone.roll = 0.0650
1490 bone.use_connect = False
1491 bone.parent = arm.edit_bones[bones['forehead.R.002']]
1492 bones['temple.R'] = bone.name
1493 bone = arm.edit_bones.new('nose.L.001')
1494 bone.head[:] = 0.0118, -0.0966, 0.0757
1495 bone.tail[:] = 0.0004, -0.1193, 0.0771
1496 bone.roll = 0.1070
1497 bone.use_connect = True
1498 bone.parent = arm.edit_bones[bones['nose.L']]
1499 bones['nose.L.001'] = bone.name
1500 bone = arm.edit_bones.new('nose.R.001')
1501 bone.head[:] = -0.0118, -0.0966, 0.0757
1502 bone.tail[:] = -0.0004, -0.1193, 0.0771
1503 bone.roll = -0.1070
1504 bone.use_connect = True
1505 bone.parent = arm.edit_bones[bones['nose.R']]
1506 bones['nose.R.001'] = bone.name
1507 bone = arm.edit_bones.new('nose.004')
1508 bone.head[:] = 0.0004, -0.1019, 0.0733
1509 bone.tail[:] = 0.0004, -0.1014, 0.0633
1510 bone.roll = 0.0000
1511 bone.use_connect = True
1512 bone.parent = arm.edit_bones[bones['nose.003']]
1513 bones['nose.004'] = bone.name
1514 bone = arm.edit_bones.new('ear.L.004')
1515 bone.head[:] = 0.0677, -0.0109, 0.0752
1516 bone.tail[:] = 0.0616, -0.0083, 0.0886
1517 bone.roll = 0.1518
1518 bone.use_connect = True
1519 bone.parent = arm.edit_bones[bones['ear.L.003']]
1520 bones['ear.L.004'] = bone.name
1521 bone = arm.edit_bones.new('ear.R.004')
1522 bone.head[:] = -0.0677, -0.0109, 0.0752
1523 bone.tail[:] = -0.0616, -0.0083, 0.0886
1524 bone.roll = -0.1518
1525 bone.use_connect = True
1526 bone.parent = arm.edit_bones[bones['ear.R.003']]
1527 bones['ear.R.004'] = bone.name
1528 bone = arm.edit_bones.new('lid.B.L')
1529 bone.head[:] = 0.0237, -0.0826, 0.1058
1530 bone.tail[:] = 0.0319, -0.0831, 0.1050
1531 bone.roll = -0.1108
1532 bone.use_connect = True
1533 bone.parent = arm.edit_bones[bones['lid.T.L.003']]
1534 bones['lid.B.L'] = bone.name
1535 bone = arm.edit_bones.new('lid.B.R')
1536 bone.head[:] = -0.0237, -0.0826, 0.1058
1537 bone.tail[:] = -0.0319, -0.0831, 0.1050
1538 bone.roll = 0.1108
1539 bone.use_connect = True
1540 bone.parent = arm.edit_bones[bones['lid.T.R.003']]
1541 bones['lid.B.R'] = bone.name
1542 bone = arm.edit_bones.new('jaw.L')
1543 bone.head[:] = 0.0607, -0.0295, 0.0962
1544 bone.tail[:] = 0.0451, -0.0338, 0.0533
1545 bone.roll = 0.0871
1546 bone.use_connect = True
1547 bone.parent = arm.edit_bones[bones['temple.L']]
1548 bones['jaw.L'] = bone.name
1549 bone = arm.edit_bones.new('jaw.R')
1550 bone.head[:] = -0.0607, -0.0295, 0.0962
1551 bone.tail[:] = -0.0451, -0.0338, 0.0533
1552 bone.roll = -0.0871
1553 bone.use_connect = True
1554 bone.parent = arm.edit_bones[bones['temple.R']]
1555 bones['jaw.R'] = bone.name
1556 bone = arm.edit_bones.new('lid.B.L.001')
1557 bone.head[:] = 0.0319, -0.0831, 0.1050
1558 bone.tail[:] = 0.0389, -0.0826, 0.1050
1559 bone.roll = -0.0207
1560 bone.use_connect = True
1561 bone.parent = arm.edit_bones[bones['lid.B.L']]
1562 bones['lid.B.L.001'] = bone.name
1563 bone = arm.edit_bones.new('lid.B.R.001')
1564 bone.head[:] = -0.0319, -0.0831, 0.1050
1565 bone.tail[:] = -0.0389, -0.0826, 0.1050
1566 bone.roll = 0.0207
1567 bone.use_connect = True
1568 bone.parent = arm.edit_bones[bones['lid.B.R']]
1569 bones['lid.B.R.001'] = bone.name
1570 bone = arm.edit_bones.new('jaw.L.001')
1571 bone.head[:] = 0.0451, -0.0338, 0.0533
1572 bone.tail[:] = 0.0166, -0.0758, 0.0187
1573 bone.roll = 0.0458
1574 bone.use_connect = True
1575 bone.parent = arm.edit_bones[bones['jaw.L']]
1576 bones['jaw.L.001'] = bone.name
1577 bone = arm.edit_bones.new('jaw.R.001')
1578 bone.head[:] = -0.0451, -0.0338, 0.0533
1579 bone.tail[:] = -0.0166, -0.0758, 0.0187
1580 bone.roll = -0.0458
1581 bone.use_connect = True
1582 bone.parent = arm.edit_bones[bones['jaw.R']]
1583 bones['jaw.R.001'] = bone.name
1584 bone = arm.edit_bones.new('lid.B.L.002')
1585 bone.head[:] = 0.0389, -0.0826, 0.1050
1586 bone.tail[:] = 0.0472, -0.0781, 0.1068
1587 bone.roll = 0.0229
1588 bone.use_connect = True
1589 bone.parent = arm.edit_bones[bones['lid.B.L.001']]
1590 bones['lid.B.L.002'] = bone.name
1591 bone = arm.edit_bones.new('lid.B.R.002')
1592 bone.head[:] = -0.0389, -0.0826, 0.1050
1593 bone.tail[:] = -0.0472, -0.0781, 0.1068
1594 bone.roll = -0.0229
1595 bone.use_connect = True
1596 bone.parent = arm.edit_bones[bones['lid.B.R.001']]
1597 bones['lid.B.R.002'] = bone.name
1598 bone = arm.edit_bones.new('chin.L')
1599 bone.head[:] = 0.0166, -0.0758, 0.0187
1600 bone.tail[:] = 0.0236, -0.0877, 0.0519
1601 bone.roll = 0.1513
1602 bone.use_connect = True
1603 bone.parent = arm.edit_bones[bones['jaw.L.001']]
1604 bones['chin.L'] = bone.name
1605 bone = arm.edit_bones.new('chin.R')
1606 bone.head[:] = -0.0166, -0.0758, 0.0187
1607 bone.tail[:] = -0.0236, -0.0877, 0.0519
1608 bone.roll = -0.1513
1609 bone.use_connect = True
1610 bone.parent = arm.edit_bones[bones['jaw.R.001']]
1611 bones['chin.R'] = bone.name
1612 bone = arm.edit_bones.new('lid.B.L.003')
1613 bone.head[:] = 0.0472, -0.0781, 0.1068
1614 bone.tail[:] = 0.0515, -0.0692, 0.1104
1615 bone.roll = -0.0147
1616 bone.use_connect = True
1617 bone.parent = arm.edit_bones[bones['lid.B.L.002']]
1618 bones['lid.B.L.003'] = bone.name
1619 bone = arm.edit_bones.new('lid.B.R.003')
1620 bone.head[:] = -0.0472, -0.0781, 0.1068
1621 bone.tail[:] = -0.0515, -0.0692, 0.1104
1622 bone.roll = 0.0147
1623 bone.use_connect = True
1624 bone.parent = arm.edit_bones[bones['lid.B.R.002']]
1625 bones['lid.B.R.003'] = bone.name
1626 bone = arm.edit_bones.new('cheek.B.L')
1627 bone.head[:] = 0.0236, -0.0877, 0.0519
1628 bone.tail[:] = 0.0493, -0.0691, 0.0632
1629 bone.roll = 0.0015
1630 bone.use_connect = True
1631 bone.parent = arm.edit_bones[bones['chin.L']]
1632 bones['cheek.B.L'] = bone.name
1633 bone = arm.edit_bones.new('cheek.B.R')
1634 bone.head[:] = -0.0236, -0.0877, 0.0519
1635 bone.tail[:] = -0.0493, -0.0691, 0.0632
1636 bone.roll = -0.0015
1637 bone.use_connect = True
1638 bone.parent = arm.edit_bones[bones['chin.R']]
1639 bones['cheek.B.R'] = bone.name
1640 bone = arm.edit_bones.new('cheek.B.L.001')
1641 bone.head[:] = 0.0493, -0.0691, 0.0632
1642 bone.tail[:] = 0.0568, -0.0506, 0.1052
1643 bone.roll = -0.0000
1644 bone.use_connect = True
1645 bone.parent = arm.edit_bones[bones['cheek.B.L']]
1646 bones['cheek.B.L.001'] = bone.name
1647 bone = arm.edit_bones.new('cheek.B.R.001')
1648 bone.head[:] = -0.0493, -0.0691, 0.0632
1649 bone.tail[:] = -0.0568, -0.0506, 0.1052
1650 bone.roll = 0.0000
1651 bone.use_connect = True
1652 bone.parent = arm.edit_bones[bones['cheek.B.R']]
1653 bones['cheek.B.R.001'] = bone.name
1654 bone = arm.edit_bones.new('brow.T.L')
1655 bone.head[:] = 0.0568, -0.0506, 0.1052
1656 bone.tail[:] = 0.0556, -0.0689, 0.1249
1657 bone.roll = 0.1990
1658 bone.use_connect = True
1659 bone.parent = arm.edit_bones[bones['cheek.B.L.001']]
1660 bones['brow.T.L'] = bone.name
1661 bone = arm.edit_bones.new('brow.T.R')
1662 bone.head[:] = -0.0568, -0.0506, 0.1052
1663 bone.tail[:] = -0.0556, -0.0689, 0.1249
1664 bone.roll = -0.1990
1665 bone.use_connect = True
1666 bone.parent = arm.edit_bones[bones['cheek.B.R.001']]
1667 bones['brow.T.R'] = bone.name
1668 bone = arm.edit_bones.new('brow.T.L.001')
1669 bone.head[:] = 0.0556, -0.0689, 0.1249
1670 bone.tail[:] = 0.0394, -0.0828, 0.1310
1671 bone.roll = 0.2372
1672 bone.use_connect = True
1673 bone.parent = arm.edit_bones[bones['brow.T.L']]
1674 bones['brow.T.L.001'] = bone.name
1675 bone = arm.edit_bones.new('brow.T.R.001')
1676 bone.head[:] = -0.0556, -0.0689, 0.1249
1677 bone.tail[:] = -0.0394, -0.0828, 0.1310
1678 bone.roll = -0.2372
1679 bone.use_connect = True
1680 bone.parent = arm.edit_bones[bones['brow.T.R']]
1681 bones['brow.T.R.001'] = bone.name
1682 bone = arm.edit_bones.new('brow.T.L.002')
1683 bone.head[:] = 0.0394, -0.0828, 0.1310
1684 bone.tail[:] = 0.0144, -0.0912, 0.1236
1685 bone.roll = 0.0724
1686 bone.use_connect = True
1687 bone.parent = arm.edit_bones[bones['brow.T.L.001']]
1688 bones['brow.T.L.002'] = bone.name
1689 bone = arm.edit_bones.new('brow.T.R.002')
1690 bone.head[:] = -0.0394, -0.0828, 0.1310
1691 bone.tail[:] = -0.0144, -0.0912, 0.1236
1692 bone.roll = -0.0724
1693 bone.use_connect = True
1694 bone.parent = arm.edit_bones[bones['brow.T.R.001']]
1695 bones['brow.T.R.002'] = bone.name
1696 bone = arm.edit_bones.new('brow.T.L.003')
1697 bone.head[:] = 0.0144, -0.0912, 0.1236
1698 bone.tail[:] = 0.0003, -0.0905, 0.1125
1699 bone.roll = -0.0423
1700 bone.use_connect = True
1701 bone.parent = arm.edit_bones[bones['brow.T.L.002']]
1702 bones['brow.T.L.003'] = bone.name
1703 bone = arm.edit_bones.new('brow.T.R.003')
1704 bone.head[:] = -0.0144, -0.0912, 0.1236
1705 bone.tail[:] = -0.0003, -0.0905, 0.1125
1706 bone.roll = 0.0423
1707 bone.use_connect = True
1708 bone.parent = arm.edit_bones[bones['brow.T.R.002']]
1709 bones['brow.T.R.003'] = bone.name
1711 bpy.ops.object.mode_set(mode='OBJECT')
1712 pbone = obj.pose.bones[bones['face']]
1713 pbone.rigify_type = 'pitchipoy.super_face'
1714 pbone.lock_location = (False, False, False)
1715 pbone.lock_rotation = (False, False, False)
1716 pbone.lock_rotation_w = False
1717 pbone.lock_scale = (False, False, False)
1718 pbone.rotation_mode = 'QUATERNION'
1719 pbone = obj.pose.bones[bones['nose']]
1720 pbone.rigify_type = ''
1721 pbone.lock_location = (False, False, False)
1722 pbone.lock_rotation = (False, False, False)
1723 pbone.lock_rotation_w = False
1724 pbone.lock_scale = (False, False, False)
1725 pbone.rotation_mode = 'QUATERNION'
1726 pbone = obj.pose.bones[bones['lip.T.L']]
1727 pbone.rigify_type = ''
1728 pbone.lock_location = (False, False, False)
1729 pbone.lock_rotation = (False, False, False)
1730 pbone.lock_rotation_w = False
1731 pbone.lock_scale = (False, False, False)
1732 pbone.rotation_mode = 'QUATERNION'
1733 pbone = obj.pose.bones[bones['lip.B.L']]
1734 pbone.rigify_type = ''
1735 pbone.lock_location = (False, False, False)
1736 pbone.lock_rotation = (False, False, False)
1737 pbone.lock_rotation_w = False
1738 pbone.lock_scale = (False, False, False)
1739 pbone.rotation_mode = 'QUATERNION'
1740 pbone = obj.pose.bones[bones['jaw']]
1741 pbone.rigify_type = ''
1742 pbone.lock_location = (False, False, False)
1743 pbone.lock_rotation = (False, False, False)
1744 pbone.lock_rotation_w = False
1745 pbone.lock_scale = (False, False, False)
1746 pbone.rotation_mode = 'QUATERNION'
1747 pbone = obj.pose.bones[bones['ear.L']]
1748 pbone.rigify_type = ''
1749 pbone.lock_location = (False, False, False)
1750 pbone.lock_rotation = (False, False, False)
1751 pbone.lock_rotation_w = False
1752 pbone.lock_scale = (False, False, False)
1753 pbone.rotation_mode = 'QUATERNION'
1754 pbone = obj.pose.bones[bones['ear.R']]
1755 pbone.rigify_type = ''
1756 pbone.lock_location = (False, False, False)
1757 pbone.lock_rotation = (False, False, False)
1758 pbone.lock_rotation_w = False
1759 pbone.lock_scale = (False, False, False)
1760 pbone.rotation_mode = 'QUATERNION'
1761 pbone = obj.pose.bones[bones['lip.T.R']]
1762 pbone.rigify_type = ''
1763 pbone.lock_location = (False, False, False)
1764 pbone.lock_rotation = (False, False, False)
1765 pbone.lock_rotation_w = False
1766 pbone.lock_scale = (False, False, False)
1767 pbone.rotation_mode = 'QUATERNION'
1768 pbone = obj.pose.bones[bones['lip.B.R']]
1769 pbone.rigify_type = ''
1770 pbone.lock_location = (False, False, False)
1771 pbone.lock_rotation = (False, False, False)
1772 pbone.lock_rotation_w = False
1773 pbone.lock_scale = (False, False, False)
1774 pbone.rotation_mode = 'QUATERNION'
1775 pbone = obj.pose.bones[bones['brow.B.L']]
1776 pbone.rigify_type = ''
1777 pbone.lock_location = (False, False, False)
1778 pbone.lock_rotation = (False, False, False)
1779 pbone.lock_rotation_w = False
1780 pbone.lock_scale = (False, False, False)
1781 pbone.rotation_mode = 'QUATERNION'
1782 pbone = obj.pose.bones[bones['lid.T.L']]
1783 pbone.rigify_type = ''
1784 pbone.lock_location = (False, False, False)
1785 pbone.lock_rotation = (False, False, False)
1786 pbone.lock_rotation_w = False
1787 pbone.lock_scale = (False, False, False)
1788 pbone.rotation_mode = 'QUATERNION'
1789 pbone = obj.pose.bones[bones['brow.B.R']]
1790 pbone.rigify_type = ''
1791 pbone.lock_location = (False, False, False)
1792 pbone.lock_rotation = (False, False, False)
1793 pbone.lock_rotation_w = False
1794 pbone.lock_scale = (False, False, False)
1795 pbone.rotation_mode = 'QUATERNION'
1796 pbone = obj.pose.bones[bones['lid.T.R']]
1797 pbone.rigify_type = ''
1798 pbone.lock_location = (False, False, False)
1799 pbone.lock_rotation = (False, False, False)
1800 pbone.lock_rotation_w = False
1801 pbone.lock_scale = (False, False, False)
1802 pbone.rotation_mode = 'QUATERNION'
1803 pbone = obj.pose.bones[bones['forehead.L']]
1804 pbone.rigify_type = ''
1805 pbone.lock_location = (False, False, False)
1806 pbone.lock_rotation = (False, False, False)
1807 pbone.lock_rotation_w = False
1808 pbone.lock_scale = (False, False, False)
1809 pbone.rotation_mode = 'QUATERNION'
1810 pbone = obj.pose.bones[bones['forehead.R']]
1811 pbone.rigify_type = ''
1812 pbone.lock_location = (False, False, False)
1813 pbone.lock_rotation = (False, False, False)
1814 pbone.lock_rotation_w = False
1815 pbone.lock_scale = (False, False, False)
1816 pbone.rotation_mode = 'QUATERNION'
1817 pbone = obj.pose.bones[bones['eye.L']]
1818 pbone.rigify_type = ''
1819 pbone.lock_location = (False, False, False)
1820 pbone.lock_rotation = (False, False, False)
1821 pbone.lock_rotation_w = False
1822 pbone.lock_scale = (False, False, False)
1823 pbone.rotation_mode = 'QUATERNION'
1824 pbone = obj.pose.bones[bones['eye.R']]
1825 pbone.rigify_type = ''
1826 pbone.lock_location = (False, False, False)
1827 pbone.lock_rotation = (False, False, False)
1828 pbone.lock_rotation_w = False
1829 pbone.lock_scale = (False, False, False)
1830 pbone.rotation_mode = 'QUATERNION'
1831 pbone = obj.pose.bones[bones['cheek.T.L']]
1832 pbone.rigify_type = ''
1833 pbone.lock_location = (False, False, False)
1834 pbone.lock_rotation = (False, False, False)
1835 pbone.lock_rotation_w = False
1836 pbone.lock_scale = (False, False, False)
1837 pbone.rotation_mode = 'QUATERNION'
1838 pbone = obj.pose.bones[bones['cheek.T.R']]
1839 pbone.rigify_type = ''
1840 pbone.lock_location = (False, False, False)
1841 pbone.lock_rotation = (False, False, False)
1842 pbone.lock_rotation_w = False
1843 pbone.lock_scale = (False, False, False)
1844 pbone.rotation_mode = 'QUATERNION'
1845 pbone = obj.pose.bones[bones['teeth.T']]
1846 pbone.rigify_type = ''
1847 pbone.lock_location = (False, False, False)
1848 pbone.lock_rotation = (False, False, False)
1849 pbone.lock_rotation_w = False
1850 pbone.lock_scale = (False, False, False)
1851 pbone.rotation_mode = 'QUATERNION'
1852 pbone = obj.pose.bones[bones['teeth.B']]
1853 pbone.rigify_type = ''
1854 pbone.lock_location = (False, False, False)
1855 pbone.lock_rotation = (False, False, False)
1856 pbone.lock_rotation_w = False
1857 pbone.lock_scale = (False, False, False)
1858 pbone.rotation_mode = 'QUATERNION'
1859 pbone = obj.pose.bones[bones['tongue']]
1860 pbone.rigify_type = ''
1861 pbone.lock_location = (False, False, False)
1862 pbone.lock_rotation = (False, False, False)
1863 pbone.lock_rotation_w = False
1864 pbone.lock_scale = (False, False, False)
1865 pbone.rotation_mode = 'QUATERNION'
1866 pbone = obj.pose.bones[bones['nose.001']]
1867 pbone.rigify_type = ''
1868 pbone.lock_location = (False, False, False)
1869 pbone.lock_rotation = (False, False, False)
1870 pbone.lock_rotation_w = False
1871 pbone.lock_scale = (False, False, False)
1872 pbone.rotation_mode = 'QUATERNION'
1873 pbone = obj.pose.bones[bones['lip.T.L.001']]
1874 pbone.rigify_type = ''
1875 pbone.lock_location = (False, False, False)
1876 pbone.lock_rotation = (False, False, False)
1877 pbone.lock_rotation_w = False
1878 pbone.lock_scale = (False, False, False)
1879 pbone.rotation_mode = 'QUATERNION'
1880 pbone = obj.pose.bones[bones['lip.B.L.001']]
1881 pbone.rigify_type = ''
1882 pbone.lock_location = (False, False, False)
1883 pbone.lock_rotation = (False, False, False)
1884 pbone.lock_rotation_w = False
1885 pbone.lock_scale = (False, False, False)
1886 pbone.rotation_mode = 'QUATERNION'
1887 pbone = obj.pose.bones[bones['chin']]
1888 pbone.rigify_type = ''
1889 pbone.lock_location = (False, False, False)
1890 pbone.lock_rotation = (False, False, False)
1891 pbone.lock_rotation_w = False
1892 pbone.lock_scale = (False, False, False)
1893 pbone.rotation_mode = 'QUATERNION'
1894 pbone = obj.pose.bones[bones['ear.L.001']]
1895 pbone.rigify_type = ''
1896 pbone.lock_location = (False, False, False)
1897 pbone.lock_rotation = (False, False, False)
1898 pbone.lock_rotation_w = False
1899 pbone.lock_scale = (False, False, False)
1900 pbone.rotation_mode = 'QUATERNION'
1901 pbone = obj.pose.bones[bones['ear.R.001']]
1902 pbone.rigify_type = ''
1903 pbone.lock_location = (False, False, False)
1904 pbone.lock_rotation = (False, False, False)
1905 pbone.lock_rotation_w = False
1906 pbone.lock_scale = (False, False, False)
1907 pbone.rotation_mode = 'QUATERNION'
1908 pbone = obj.pose.bones[bones['lip.T.R.001']]
1909 pbone.rigify_type = ''
1910 pbone.lock_location = (False, False, False)
1911 pbone.lock_rotation = (False, False, False)
1912 pbone.lock_rotation_w = False
1913 pbone.lock_scale = (False, False, False)
1914 pbone.rotation_mode = 'QUATERNION'
1915 pbone = obj.pose.bones[bones['lip.B.R.001']]
1916 pbone.rigify_type = ''
1917 pbone.lock_location = (False, False, False)
1918 pbone.lock_rotation = (False, False, False)
1919 pbone.lock_rotation_w = False
1920 pbone.lock_scale = (False, False, False)
1921 pbone.rotation_mode = 'QUATERNION'
1922 pbone = obj.pose.bones[bones['brow.B.L.001']]
1923 pbone.rigify_type = ''
1924 pbone.lock_location = (False, False, False)
1925 pbone.lock_rotation = (False, False, False)
1926 pbone.lock_rotation_w = False
1927 pbone.lock_scale = (False, False, False)
1928 pbone.rotation_mode = 'QUATERNION'
1929 pbone = obj.pose.bones[bones['lid.T.L.001']]
1930 pbone.rigify_type = ''
1931 pbone.lock_location = (False, False, False)
1932 pbone.lock_rotation = (False, False, False)
1933 pbone.lock_rotation_w = False
1934 pbone.lock_scale = (False, False, False)
1935 pbone.rotation_mode = 'QUATERNION'
1936 pbone = obj.pose.bones[bones['brow.B.R.001']]
1937 pbone.rigify_type = ''
1938 pbone.lock_location = (False, False, False)
1939 pbone.lock_rotation = (False, False, False)
1940 pbone.lock_rotation_w = False
1941 pbone.lock_scale = (False, False, False)
1942 pbone.rotation_mode = 'QUATERNION'
1943 pbone = obj.pose.bones[bones['lid.T.R.001']]
1944 pbone.rigify_type = ''
1945 pbone.lock_location = (False, False, False)
1946 pbone.lock_rotation = (False, False, False)
1947 pbone.lock_rotation_w = False
1948 pbone.lock_scale = (False, False, False)
1949 pbone.rotation_mode = 'QUATERNION'
1950 pbone = obj.pose.bones[bones['forehead.L.001']]
1951 pbone.rigify_type = ''
1952 pbone.lock_location = (False, False, False)
1953 pbone.lock_rotation = (False, False, False)
1954 pbone.lock_rotation_w = False
1955 pbone.lock_scale = (False, False, False)
1956 pbone.rotation_mode = 'QUATERNION'
1957 pbone = obj.pose.bones[bones['forehead.R.001']]
1958 pbone.rigify_type = ''
1959 pbone.lock_location = (False, False, False)
1960 pbone.lock_rotation = (False, False, False)
1961 pbone.lock_rotation_w = False
1962 pbone.lock_scale = (False, False, False)
1963 pbone.rotation_mode = 'QUATERNION'
1964 pbone = obj.pose.bones[bones['cheek.T.L.001']]
1965 pbone.rigify_type = ''
1966 pbone.lock_location = (False, False, False)
1967 pbone.lock_rotation = (False, False, False)
1968 pbone.lock_rotation_w = False
1969 pbone.lock_scale = (False, False, False)
1970 pbone.rotation_mode = 'QUATERNION'
1971 pbone = obj.pose.bones[bones['cheek.T.R.001']]
1972 pbone.rigify_type = ''
1973 pbone.lock_location = (False, False, False)
1974 pbone.lock_rotation = (False, False, False)
1975 pbone.lock_rotation_w = False
1976 pbone.lock_scale = (False, False, False)
1977 pbone.rotation_mode = 'QUATERNION'
1978 pbone = obj.pose.bones[bones['tongue.001']]
1979 pbone.rigify_type = ''
1980 pbone.lock_location = (False, False, False)
1981 pbone.lock_rotation = (False, False, False)
1982 pbone.lock_rotation_w = False
1983 pbone.lock_scale = (False, False, False)
1984 pbone.rotation_mode = 'QUATERNION'
1985 pbone = obj.pose.bones[bones['nose.002']]
1986 pbone.rigify_type = ''
1987 pbone.lock_location = (False, False, False)
1988 pbone.lock_rotation = (False, False, False)
1989 pbone.lock_rotation_w = False
1990 pbone.lock_scale = (False, False, False)
1991 pbone.rotation_mode = 'QUATERNION'
1992 pbone = obj.pose.bones[bones['chin.001']]
1993 pbone.rigify_type = ''
1994 pbone.lock_location = (False, False, False)
1995 pbone.lock_rotation = (False, False, False)
1996 pbone.lock_rotation_w = False
1997 pbone.lock_scale = (False, False, False)
1998 pbone.rotation_mode = 'QUATERNION'
1999 pbone = obj.pose.bones[bones['ear.L.002']]
2000 pbone.rigify_type = ''
2001 pbone.lock_location = (False, False, False)
2002 pbone.lock_rotation = (False, False, False)
2003 pbone.lock_rotation_w = False
2004 pbone.lock_scale = (False, False, False)
2005 pbone.rotation_mode = 'QUATERNION'
2006 pbone = obj.pose.bones[bones['ear.R.002']]
2007 pbone.rigify_type = ''
2008 pbone.lock_location = (False, False, False)
2009 pbone.lock_rotation = (False, False, False)
2010 pbone.lock_rotation_w = False
2011 pbone.lock_scale = (False, False, False)
2012 pbone.rotation_mode = 'QUATERNION'
2013 pbone = obj.pose.bones[bones['brow.B.L.002']]
2014 pbone.rigify_type = ''
2015 pbone.lock_location = (False, False, False)
2016 pbone.lock_rotation = (False, False, False)
2017 pbone.lock_rotation_w = False
2018 pbone.lock_scale = (False, False, False)
2019 pbone.rotation_mode = 'QUATERNION'
2020 pbone = obj.pose.bones[bones['lid.T.L.002']]
2021 pbone.rigify_type = ''
2022 pbone.lock_location = (False, False, False)
2023 pbone.lock_rotation = (False, False, False)
2024 pbone.lock_rotation_w = False
2025 pbone.lock_scale = (False, False, False)
2026 pbone.rotation_mode = 'QUATERNION'
2027 pbone = obj.pose.bones[bones['brow.B.R.002']]
2028 pbone.rigify_type = ''
2029 pbone.lock_location = (False, False, False)
2030 pbone.lock_rotation = (False, False, False)
2031 pbone.lock_rotation_w = False
2032 pbone.lock_scale = (False, False, False)
2033 pbone.rotation_mode = 'QUATERNION'
2034 pbone = obj.pose.bones[bones['lid.T.R.002']]
2035 pbone.rigify_type = ''
2036 pbone.lock_location = (False, False, False)
2037 pbone.lock_rotation = (False, False, False)
2038 pbone.lock_rotation_w = False
2039 pbone.lock_scale = (False, False, False)
2040 pbone.rotation_mode = 'QUATERNION'
2041 pbone = obj.pose.bones[bones['forehead.L.002']]
2042 pbone.rigify_type = ''
2043 pbone.lock_location = (False, False, False)
2044 pbone.lock_rotation = (False, False, False)
2045 pbone.lock_rotation_w = False
2046 pbone.lock_scale = (False, False, False)
2047 pbone.rotation_mode = 'QUATERNION'
2048 pbone = obj.pose.bones[bones['forehead.R.002']]
2049 pbone.rigify_type = ''
2050 pbone.lock_location = (False, False, False)
2051 pbone.lock_rotation = (False, False, False)
2052 pbone.lock_rotation_w = False
2053 pbone.lock_scale = (False, False, False)
2054 pbone.rotation_mode = 'QUATERNION'
2055 pbone = obj.pose.bones[bones['nose.L']]
2056 pbone.rigify_type = ''
2057 pbone.lock_location = (False, False, False)
2058 pbone.lock_rotation = (False, False, False)
2059 pbone.lock_rotation_w = False
2060 pbone.lock_scale = (False, False, False)
2061 pbone.rotation_mode = 'QUATERNION'
2062 pbone = obj.pose.bones[bones['nose.R']]
2063 pbone.rigify_type = ''
2064 pbone.lock_location = (False, False, False)
2065 pbone.lock_rotation = (False, False, False)
2066 pbone.lock_rotation_w = False
2067 pbone.lock_scale = (False, False, False)
2068 pbone.rotation_mode = 'QUATERNION'
2069 pbone = obj.pose.bones[bones['tongue.002']]
2070 pbone.rigify_type = ''
2071 pbone.lock_location = (False, False, False)
2072 pbone.lock_rotation = (False, False, False)
2073 pbone.lock_rotation_w = False
2074 pbone.lock_scale = (False, False, False)
2075 pbone.rotation_mode = 'QUATERNION'
2076 pbone = obj.pose.bones[bones['nose.003']]
2077 pbone.rigify_type = ''
2078 pbone.lock_location = (False, False, False)
2079 pbone.lock_rotation = (False, False, False)
2080 pbone.lock_rotation_w = False
2081 pbone.lock_scale = (False, False, False)
2082 pbone.rotation_mode = 'QUATERNION'
2083 pbone = obj.pose.bones[bones['ear.L.003']]
2084 pbone.rigify_type = ''
2085 pbone.lock_location = (False, False, False)
2086 pbone.lock_rotation = (False, False, False)
2087 pbone.lock_rotation_w = False
2088 pbone.lock_scale = (False, False, False)
2089 pbone.rotation_mode = 'QUATERNION'
2090 pbone = obj.pose.bones[bones['ear.R.003']]
2091 pbone.rigify_type = ''
2092 pbone.lock_location = (False, False, False)
2093 pbone.lock_rotation = (False, False, False)
2094 pbone.lock_rotation_w = False
2095 pbone.lock_scale = (False, False, False)
2096 pbone.rotation_mode = 'QUATERNION'
2097 pbone = obj.pose.bones[bones['brow.B.L.003']]
2098 pbone.rigify_type = ''
2099 pbone.lock_location = (False, False, False)
2100 pbone.lock_rotation = (False, False, False)
2101 pbone.lock_rotation_w = False
2102 pbone.lock_scale = (False, False, False)
2103 pbone.rotation_mode = 'QUATERNION'
2104 pbone = obj.pose.bones[bones['lid.T.L.003']]
2105 pbone.rigify_type = ''
2106 pbone.lock_location = (False, False, False)
2107 pbone.lock_rotation = (False, False, False)
2108 pbone.lock_rotation_w = False
2109 pbone.lock_scale = (False, False, False)
2110 pbone.rotation_mode = 'QUATERNION'
2111 pbone = obj.pose.bones[bones['brow.B.R.003']]
2112 pbone.rigify_type = ''
2113 pbone.lock_location = (False, False, False)
2114 pbone.lock_rotation = (False, False, False)
2115 pbone.lock_rotation_w = False
2116 pbone.lock_scale = (False, False, False)
2117 pbone.rotation_mode = 'QUATERNION'
2118 pbone = obj.pose.bones[bones['lid.T.R.003']]
2119 pbone.rigify_type = ''
2120 pbone.lock_location = (False, False, False)
2121 pbone.lock_rotation = (False, False, False)
2122 pbone.lock_rotation_w = False
2123 pbone.lock_scale = (False, False, False)
2124 pbone.rotation_mode = 'QUATERNION'
2125 pbone = obj.pose.bones[bones['temple.L']]
2126 pbone.rigify_type = ''
2127 pbone.lock_location = (False, False, False)
2128 pbone.lock_rotation = (False, False, False)
2129 pbone.lock_rotation_w = False
2130 pbone.lock_scale = (False, False, False)
2131 pbone.rotation_mode = 'QUATERNION'
2132 pbone = obj.pose.bones[bones['temple.R']]
2133 pbone.rigify_type = ''
2134 pbone.lock_location = (False, False, False)
2135 pbone.lock_rotation = (False, False, False)
2136 pbone.lock_rotation_w = False
2137 pbone.lock_scale = (False, False, False)
2138 pbone.rotation_mode = 'QUATERNION'
2139 pbone = obj.pose.bones[bones['nose.L.001']]
2140 pbone.rigify_type = ''
2141 pbone.lock_location = (False, False, False)
2142 pbone.lock_rotation = (False, False, False)
2143 pbone.lock_rotation_w = False
2144 pbone.lock_scale = (False, False, False)
2145 pbone.rotation_mode = 'QUATERNION'
2146 pbone = obj.pose.bones[bones['nose.R.001']]
2147 pbone.rigify_type = ''
2148 pbone.lock_location = (False, False, False)
2149 pbone.lock_rotation = (False, False, False)
2150 pbone.lock_rotation_w = False
2151 pbone.lock_scale = (False, False, False)
2152 pbone.rotation_mode = 'QUATERNION'
2153 pbone = obj.pose.bones[bones['nose.004']]
2154 pbone.rigify_type = ''
2155 pbone.lock_location = (False, False, False)
2156 pbone.lock_rotation = (False, False, False)
2157 pbone.lock_rotation_w = False
2158 pbone.lock_scale = (False, False, False)
2159 pbone.rotation_mode = 'QUATERNION'
2160 pbone = obj.pose.bones[bones['ear.L.004']]
2161 pbone.rigify_type = ''
2162 pbone.lock_location = (False, False, False)
2163 pbone.lock_rotation = (False, False, False)
2164 pbone.lock_rotation_w = False
2165 pbone.lock_scale = (False, False, False)
2166 pbone.rotation_mode = 'QUATERNION'
2167 pbone = obj.pose.bones[bones['ear.R.004']]
2168 pbone.rigify_type = ''
2169 pbone.lock_location = (False, False, False)
2170 pbone.lock_rotation = (False, False, False)
2171 pbone.lock_rotation_w = False
2172 pbone.lock_scale = (False, False, False)
2173 pbone.rotation_mode = 'QUATERNION'
2174 pbone = obj.pose.bones[bones['lid.B.L']]
2175 pbone.rigify_type = ''
2176 pbone.lock_location = (False, False, False)
2177 pbone.lock_rotation = (False, False, False)
2178 pbone.lock_rotation_w = False
2179 pbone.lock_scale = (False, False, False)
2180 pbone.rotation_mode = 'QUATERNION'
2181 pbone = obj.pose.bones[bones['lid.B.R']]
2182 pbone.rigify_type = ''
2183 pbone.lock_location = (False, False, False)
2184 pbone.lock_rotation = (False, False, False)
2185 pbone.lock_rotation_w = False
2186 pbone.lock_scale = (False, False, False)
2187 pbone.rotation_mode = 'QUATERNION'
2188 pbone = obj.pose.bones[bones['jaw.L']]
2189 pbone.rigify_type = ''
2190 pbone.lock_location = (False, False, False)
2191 pbone.lock_rotation = (False, False, False)
2192 pbone.lock_rotation_w = False
2193 pbone.lock_scale = (False, False, False)
2194 pbone.rotation_mode = 'QUATERNION'
2195 pbone = obj.pose.bones[bones['jaw.R']]
2196 pbone.rigify_type = ''
2197 pbone.lock_location = (False, False, False)
2198 pbone.lock_rotation = (False, False, False)
2199 pbone.lock_rotation_w = False
2200 pbone.lock_scale = (False, False, False)
2201 pbone.rotation_mode = 'QUATERNION'
2202 pbone = obj.pose.bones[bones['lid.B.L.001']]
2203 pbone.rigify_type = ''
2204 pbone.lock_location = (False, False, False)
2205 pbone.lock_rotation = (False, False, False)
2206 pbone.lock_rotation_w = False
2207 pbone.lock_scale = (False, False, False)
2208 pbone.rotation_mode = 'QUATERNION'
2209 pbone = obj.pose.bones[bones['lid.B.R.001']]
2210 pbone.rigify_type = ''
2211 pbone.lock_location = (False, False, False)
2212 pbone.lock_rotation = (False, False, False)
2213 pbone.lock_rotation_w = False
2214 pbone.lock_scale = (False, False, False)
2215 pbone.rotation_mode = 'QUATERNION'
2216 pbone = obj.pose.bones[bones['jaw.L.001']]
2217 pbone.rigify_type = ''
2218 pbone.lock_location = (False, False, False)
2219 pbone.lock_rotation = (False, False, False)
2220 pbone.lock_rotation_w = False
2221 pbone.lock_scale = (False, False, False)
2222 pbone.rotation_mode = 'QUATERNION'
2223 pbone = obj.pose.bones[bones['jaw.R.001']]
2224 pbone.rigify_type = ''
2225 pbone.lock_location = (False, False, False)
2226 pbone.lock_rotation = (False, False, False)
2227 pbone.lock_rotation_w = False
2228 pbone.lock_scale = (False, False, False)
2229 pbone.rotation_mode = 'QUATERNION'
2230 pbone = obj.pose.bones[bones['lid.B.L.002']]
2231 pbone.rigify_type = ''
2232 pbone.lock_location = (False, False, False)
2233 pbone.lock_rotation = (False, False, False)
2234 pbone.lock_rotation_w = False
2235 pbone.lock_scale = (False, False, False)
2236 pbone.rotation_mode = 'QUATERNION'
2237 pbone = obj.pose.bones[bones['lid.B.R.002']]
2238 pbone.rigify_type = ''
2239 pbone.lock_location = (False, False, False)
2240 pbone.lock_rotation = (False, False, False)
2241 pbone.lock_rotation_w = False
2242 pbone.lock_scale = (False, False, False)
2243 pbone.rotation_mode = 'QUATERNION'
2244 pbone = obj.pose.bones[bones['chin.L']]
2245 pbone.rigify_type = ''
2246 pbone.lock_location = (False, False, False)
2247 pbone.lock_rotation = (False, False, False)
2248 pbone.lock_rotation_w = False
2249 pbone.lock_scale = (False, False, False)
2250 pbone.rotation_mode = 'QUATERNION'
2251 pbone = obj.pose.bones[bones['chin.R']]
2252 pbone.rigify_type = ''
2253 pbone.lock_location = (False, False, False)
2254 pbone.lock_rotation = (False, False, False)
2255 pbone.lock_rotation_w = False
2256 pbone.lock_scale = (False, False, False)
2257 pbone.rotation_mode = 'QUATERNION'
2258 pbone = obj.pose.bones[bones['lid.B.L.003']]
2259 pbone.rigify_type = ''
2260 pbone.lock_location = (False, False, False)
2261 pbone.lock_rotation = (False, False, False)
2262 pbone.lock_rotation_w = False
2263 pbone.lock_scale = (False, False, False)
2264 pbone.rotation_mode = 'QUATERNION'
2265 pbone = obj.pose.bones[bones['lid.B.R.003']]
2266 pbone.rigify_type = ''
2267 pbone.lock_location = (False, False, False)
2268 pbone.lock_rotation = (False, False, False)
2269 pbone.lock_rotation_w = False
2270 pbone.lock_scale = (False, False, False)
2271 pbone.rotation_mode = 'QUATERNION'
2272 pbone = obj.pose.bones[bones['cheek.B.L']]
2273 pbone.rigify_type = ''
2274 pbone.lock_location = (False, False, False)
2275 pbone.lock_rotation = (False, False, False)
2276 pbone.lock_rotation_w = False
2277 pbone.lock_scale = (False, False, False)
2278 pbone.rotation_mode = 'QUATERNION'
2279 pbone = obj.pose.bones[bones['cheek.B.R']]
2280 pbone.rigify_type = ''
2281 pbone.lock_location = (False, False, False)
2282 pbone.lock_rotation = (False, False, False)
2283 pbone.lock_rotation_w = False
2284 pbone.lock_scale = (False, False, False)
2285 pbone.rotation_mode = 'QUATERNION'
2286 pbone = obj.pose.bones[bones['cheek.B.L.001']]
2287 pbone.rigify_type = ''
2288 pbone.lock_location = (False, False, False)
2289 pbone.lock_rotation = (False, False, False)
2290 pbone.lock_rotation_w = False
2291 pbone.lock_scale = (False, False, False)
2292 pbone.rotation_mode = 'QUATERNION'
2293 pbone = obj.pose.bones[bones['cheek.B.R.001']]
2294 pbone.rigify_type = ''
2295 pbone.lock_location = (False, False, False)
2296 pbone.lock_rotation = (False, False, False)
2297 pbone.lock_rotation_w = False
2298 pbone.lock_scale = (False, False, False)
2299 pbone.rotation_mode = 'QUATERNION'
2300 pbone = obj.pose.bones[bones['brow.T.L']]
2301 pbone.rigify_type = ''
2302 pbone.lock_location = (False, False, False)
2303 pbone.lock_rotation = (False, False, False)
2304 pbone.lock_rotation_w = False
2305 pbone.lock_scale = (False, False, False)
2306 pbone.rotation_mode = 'QUATERNION'
2307 pbone = obj.pose.bones[bones['brow.T.R']]
2308 pbone.rigify_type = ''
2309 pbone.lock_location = (False, False, False)
2310 pbone.lock_rotation = (False, False, False)
2311 pbone.lock_rotation_w = False
2312 pbone.lock_scale = (False, False, False)
2313 pbone.rotation_mode = 'QUATERNION'
2314 pbone = obj.pose.bones[bones['brow.T.L.001']]
2315 pbone.rigify_type = ''
2316 pbone.lock_location = (False, False, False)
2317 pbone.lock_rotation = (False, False, False)
2318 pbone.lock_rotation_w = False
2319 pbone.lock_scale = (False, False, False)
2320 pbone.rotation_mode = 'QUATERNION'
2321 pbone = obj.pose.bones[bones['brow.T.R.001']]
2322 pbone.rigify_type = ''
2323 pbone.lock_location = (False, False, False)
2324 pbone.lock_rotation = (False, False, False)
2325 pbone.lock_rotation_w = False
2326 pbone.lock_scale = (False, False, False)
2327 pbone.rotation_mode = 'QUATERNION'
2328 pbone = obj.pose.bones[bones['brow.T.L.002']]
2329 pbone.rigify_type = ''
2330 pbone.lock_location = (False, False, False)
2331 pbone.lock_rotation = (False, False, False)
2332 pbone.lock_rotation_w = False
2333 pbone.lock_scale = (False, False, False)
2334 pbone.rotation_mode = 'QUATERNION'
2335 pbone = obj.pose.bones[bones['brow.T.R.002']]
2336 pbone.rigify_type = ''
2337 pbone.lock_location = (False, False, False)
2338 pbone.lock_rotation = (False, False, False)
2339 pbone.lock_rotation_w = False
2340 pbone.lock_scale = (False, False, False)
2341 pbone.rotation_mode = 'QUATERNION'
2342 pbone = obj.pose.bones[bones['brow.T.L.003']]
2343 pbone.rigify_type = ''
2344 pbone.lock_location = (False, False, False)
2345 pbone.lock_rotation = (False, False, False)
2346 pbone.lock_rotation_w = False
2347 pbone.lock_scale = (False, False, False)
2348 pbone.rotation_mode = 'QUATERNION'
2349 pbone = obj.pose.bones[bones['brow.T.R.003']]
2350 pbone.rigify_type = ''
2351 pbone.lock_location = (False, False, False)
2352 pbone.lock_rotation = (False, False, False)
2353 pbone.lock_rotation_w = False
2354 pbone.lock_scale = (False, False, False)
2355 pbone.rotation_mode = 'QUATERNION'
2357 bpy.ops.object.mode_set(mode='EDIT')
2358 for bone in arm.edit_bones:
2359 bone.select = False
2360 bone.select_head = False
2361 bone.select_tail = False
2362 for b in bones:
2363 bone = arm.edit_bones[bones[b]]
2364 bone.select = True
2365 bone.select_head = True
2366 bone.select_tail = True
2367 arm.edit_bones.active = bone
2370 def create_square_widget(rig, bone_name, size=1.0, bone_transform_name=None):
2371 obj = create_widget(rig, bone_name, bone_transform_name)
2372 if obj is not None:
2373 verts = [
2374 ( 0.5 * size, -2.9802322387695312e-08 * size, 0.5 * size ),
2375 ( -0.5 * size, -2.9802322387695312e-08 * size, 0.5 * size ),
2376 ( 0.5 * size, 2.9802322387695312e-08 * size, -0.5 * size ),
2377 ( -0.5 * size, 2.9802322387695312e-08 * size, -0.5 * size ),
2380 edges = [(0, 1), (2, 3), (0, 2), (3, 1) ]
2381 faces = []
2383 mesh = obj.data
2384 mesh.from_pydata(verts, edges, faces)
2385 mesh.update()
2386 mesh.update()
2387 return obj
2388 else:
2389 return None