@@ -614,19 +614,62 @@ def make_constraints(self):
614
614
cns .head_tail = 1.0
615
615
616
616
def make_drivers (self ):
617
-
618
- if not self .needs_driver :
619
- return ['' ]
620
-
621
617
bpy .ops .object .mode_set (mode = 'OBJECT' )
622
618
pose_bones = self .obj .pose .bones
623
619
620
+ eye_target = self .bones ['eye_ctrl' ]['eye_target' ]
621
+
622
+ if self .lid_len % 2 == 0 :
623
+ i = int (self .lid_len / 2 )
624
+ central_ctrl_top = self .get_ctrl_by_index (strip_org (self .lid_bones ['top' ][0 ]), i )
625
+ central_ctrl_bottom = self .get_ctrl_by_index (strip_org (self .lid_bones ['bottom' ][0 ]), i )
626
+ else :
627
+ central_ctrl_top = self .bones ['eye_ctrl' ]['top_lid_master' ]
628
+ central_ctrl_bottom = self .bones ['eye_ctrl' ]['bottom_lid_master' ]
629
+
630
+ prop_lid_follow_name = 'lid_follow'
631
+
632
+ pose_bones [eye_target ][prop_lid_follow_name ] = 1.0
633
+
634
+ prop = rna_idprop_ui_prop_get (pose_bones [eye_target ], prop_lid_follow_name )
635
+ prop ["min" ] = 0.0
636
+ prop ["max" ] = 1.0
637
+ prop ["soft_min" ] = 0.0
638
+ prop ["soft_max" ] = 1.0
639
+ prop ["description" ] = prop_lid_follow_name
640
+
641
+ drv = pose_bones [central_ctrl_top ].constraints [0 ].driver_add ("influence" ).driver
642
+ drv .type = 'SUM'
643
+
644
+ var = drv .variables .new ()
645
+ var .name = prop_lid_follow_name
646
+ var .type = "SINGLE_PROP"
647
+ var .targets [0 ].id = self .obj
648
+ var .targets [0 ].data_path = pose_bones [eye_target ].path_from_id () + '[' + '"' + prop_lid_follow_name + '"' + ']'
649
+
650
+ drv = pose_bones [central_ctrl_bottom ].constraints [0 ].driver_add ("influence" ).driver
651
+ drv .type = 'SUM'
652
+
653
+ var = drv .variables .new ()
654
+ var .name = prop_lid_follow_name
655
+ var .type = "SINGLE_PROP"
656
+ var .targets [0 ].id = self .obj
657
+ var .targets [0 ].data_path = pose_bones [eye_target ].path_from_id () + '[' + '"' + prop_lid_follow_name + '"' + ']'
658
+
659
+ all_ctrls = []
660
+ all_ctrls .append (self .bones ['eye_ctrl' ]['eye_target' ])
661
+ all_ctrls .append (self .bones ['eye_ctrl' ]['master_eye' ])
662
+ default_controls_string = ", " .join (["'" + x + "'" for x in all_ctrls ])
663
+
664
+ if not self .needs_driver :
665
+ return [script % (default_controls_string , eye_target , prop_lid_follow_name )]
666
+
624
667
# eyefollow driver
625
668
if self .paired_eye or self .is_clustered ():
626
669
if 'common' in self .bones ['eye_ctrl' ] and 'eyefollow' in self .bones ['eye_mch' ]:
627
670
bone = self .bones ['eye_ctrl' ]['common' ]
628
671
else :
629
- return ['' ]
672
+ return [script % ( default_controls_string , eye_target , prop_lid_follow_name ) ]
630
673
else :
631
674
bone = self .bones ['eye_ctrl' ]['eye_target' ]
632
675
@@ -645,7 +688,7 @@ def make_drivers(self):
645
688
mch_eyes_parent = self .bones ['eye_mch' ]['eyefollow' ]
646
689
647
690
drv = pose_bones [mch_eyes_parent ].constraints [0 ].driver_add ("influence" ).driver
648
- drv .type = 'SUM'
691
+ drv .type = 'SUM'
649
692
650
693
var = drv .variables .new ()
651
694
var .name = prop_name
@@ -672,9 +715,11 @@ def make_drivers(self):
672
715
controls_string = ", " .join (["'" + x + "'" for x in all_ctrls ])
673
716
674
717
if main_ctrl :
675
- return [script % (controls_string , main_ctrl , prop_name )]
718
+ script_out = script % (default_controls_string , eye_target , prop_lid_follow_name )
719
+ script_out = script_out + (script % (controls_string , main_ctrl , prop_name ))
720
+ return [script_out ]
676
721
677
- return ["" ]
722
+ return [script % ( default_controls_string , eye_target , prop_lid_follow_name ) ]
678
723
679
724
def create_widgets (self ):
680
725
0 commit comments