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
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)
22 def __init__(self
, obj
, bone_name
, params
):
25 b
= self
.obj
.data
.bones
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",
36 #create_pose_lib( self.obj )
38 children
= [ org(b
) for b
in 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
48 if params
.primary_layers_extra
:
49 self
.primary_layers
= list(params
.primary_layers
)
51 self
.primary_layers
= None
53 if params
.secondary_layers_extra
:
54 self
.secondary_layers
= list(params
.secondary_layers
)
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
) ] )
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
79 if 'face' in org
or 'teeth' in org
or 'eye' in org
:
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:]
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
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(
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])
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
)
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
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
)
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
)
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 )
208 create_ear_widget( self
.obj
, earL_ctrl_name
)
209 create_ear_widget( self
.obj
, earR_ctrl_name
)
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
)
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
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 ))
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' )
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
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"
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 )
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
])
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
}
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'] = []
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
415 mch_name
= make_mechanism_name( 'mouth_lock' )
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
)
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
)
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] ]
528 eb
[ 'eyes' ].parent
= eb
[ 'MCH-eyes_parent' ]
531 bone
for bone
in all_bones
['ctrls']['eyes'] if 'eyes' not in bone
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
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
)
554 eb
[ l
].parent
= eb
[ 'master_eye.L' ]
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)
578 'MCH-jaw_master.001' : [
582 'MCH-jaw_master.002' : [
588 'MCH-jaw_master.003' : [
593 'MCH-jaw_master.004' : [
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
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
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
] )
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
)
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
)
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' )
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
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
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
)
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
] ):
910 pb
[ bone
][ prop_name
] = 0.0
912 pb
[ bone
][ prop_name
] = 1.0
914 prop
= rna_idprop_ui_prop_get( pb
[ bone
], prop_name
)
917 prop
["soft_min"] = 0.0
918 prop
["soft_max"] = 1.0
919 prop
["description"] = prop_name
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
928 var
= drv
.variables
.new()
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
+ '"' + ']'
936 mch_eyes_parent
= all_bones
['mch']['eyes_parent'][0]
938 drv
= pb
[ mch_eyes_parent
].constraints
[0].driver_add("influence").driver
941 var
= drv
.variables
.new()
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
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]
968 'deform' : def_names
,
969 'ctrls' : ctrls
['ctrls'],
970 'tweaks' : ctrls
['tweaks'],
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
)
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() ) ] ] ]
989 for group
in all_controls
:
991 all_ctrls
.append( bone
)
993 controls_string
= ", ".join(["'" + x
+ "'" for x
in all_ctrls
])
996 all_bones
['ctrls']['jaw'][0],
997 all_bones
['ctrls']['eyes'][2],
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",
1014 params
.primary_layers
= bpy
.props
.BoolVectorProperty(
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",
1024 params
.secondary_layers
= bpy
.props
.BoolVectorProperty(
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
:
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)
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')
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
:
2360 bone
.select_head
= False
2361 bone
.select_tail
= False
2363 bone
= arm
.edit_bones
[bones
[b
]]
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
)
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) ]
2384 mesh
.from_pydata(verts
, edges
, faces
)