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