Skip to content
This repository has been archived by the owner on Oct 7, 2021. It is now read-only.

Rigbits: add option to have value till 10 in facial rigger eyes #78

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 50 additions & 15 deletions scripts/mgear/rigbits/facial_rigger/eye_rigger.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from . import lib

# TODO: change deformers_group to static_rig_parent
# for the moment we keep this for backwards compativility with
# for the moment we keep this for backwards compatibility with
# old configuration files
##########################################################
# Eye rig constructor
Expand Down Expand Up @@ -46,7 +46,9 @@ def rig(eyeMesh=None,
lowerVTrack=0.02,
lowerHTrack=0.01,
aim_controller="",
deformers_group=""):
deformers_group="",
mult10=False,
):
"""Create eyelid and eye rig

Args:
Expand Down Expand Up @@ -414,7 +416,7 @@ def setName(name, ind=None):
t)
npoBase = npo
if i == 2:
# we add an extra level to input the tracking ofset values
# we add an extra level to input the tracking offset values
npo = primitive.addTransform(npo,
setName("%s_trk" % upperCtlNames[i]),
t)
Expand Down Expand Up @@ -704,13 +706,23 @@ def setName(name, ind=None):

# Channels
# Adding and connecting attributes for the blinks
# TODO: we should set the maxValue to 10 for more precise control
# Also it would be nice to have negative. To open eyes even more.
up_ctl = upControls[2]
blink_att = attribute.addAttribute(
over_ctl, "blink", "float", 0, minValue=0, maxValue=1)
blinkUpper_att = attribute.addAttribute(
over_ctl, "upperBlink", "float", 0, minValue=0, maxValue=1)
blinkLower_att = attribute.addAttribute(
over_ctl, "lowerBlink", "float", 0, minValue=0, maxValue=1)
if mult10:
blink_att = attribute.addAttribute(
over_ctl, "blink", "float", 0, minValue=-10, maxValue=10)
blinkUpper_att = attribute.addAttribute(
over_ctl, "upperBlink", "float", 0, minValue=-10, maxValue=10)
blinkLower_att = attribute.addAttribute(
over_ctl, "lowerBlink", "float", 0, minValue=-10, maxValue=10)
else:
blink_att = attribute.addAttribute(
over_ctl, "blink", "float", 0, minValue=0, maxValue=1)
blinkUpper_att = attribute.addAttribute(
over_ctl, "upperBlink", "float", 0, minValue=0, maxValue=1)
blinkLower_att = attribute.addAttribute(
over_ctl, "lowerBlink", "float", 0, minValue=-0, maxValue=1)
blinkMult_att = attribute.addAttribute(
over_ctl, "blinkMult", "float", 1, minValue=1, maxValue=2)
midBlinkH_att = attribute.addAttribute(
Expand All @@ -720,8 +732,16 @@ def setName(name, ind=None):
# But also clamp them so using both doesn't exceed 1.0
blinkAdd = pm.createNode('plusMinusAverage')
blinkClamp = pm.createNode('clamp')
blinkClamp.maxR.set(1.0)
blinkClamp.maxG.set(1.0)
if mult10:
blinkClamp.maxR.set(10.0)
blinkClamp.maxG.set(10.0)
blinkClamp.minR.set(-10.0)
blinkClamp.minG.set(-10.0)

else:
blinkClamp.maxR.set(1.0)
blinkClamp.maxG.set(1.0)

blink_att.connect(blinkAdd.input2D[0].input2Dx)
blink_att.connect(blinkAdd.input2D[0].input2Dy)
blinkUpper_att.connect(blinkAdd.input2D[1].input2Dx)
Expand All @@ -732,10 +752,21 @@ def setName(name, ind=None):
# Drive the clamped blinks through blinkMult, then to the blendshapes
mult_node = node.createMulNode(blinkClamp.outputR, blinkMult_att)
mult_nodeLower = node.createMulNode(blinkClamp.outputG, blinkMult_att)
pm.connectAttr(mult_node + ".outputX",
bs_upBlink[0].attr(midTarget.name()))
pm.connectAttr(mult_nodeLower + ".outputX",
bs_lowBlink[0].attr(midTargetLower.name()))
# add mult 0.1 to have more precise control
if mult10:
mult_nodeUpper_perc = node.createMulNode(mult_node.outputX, 0.1)
mult_nodeLower_perc = node.createMulNode(mult_nodeLower.outputX, 0.1)
pm.connectAttr(mult_nodeUpper_perc + ".outputX",
bs_upBlink[0].attr(midTarget.name()))
pm.connectAttr(mult_nodeLower_perc + ".outputX",
bs_lowBlink[0].attr(midTargetLower.name()))
else:
pm.connectAttr(mult_node + ".outputX",
bs_upBlink[0].attr(midTarget.name()))
pm.connectAttr(mult_nodeLower + ".outputX",
bs_lowBlink[0].attr(midTargetLower.name()))


pm.connectAttr(midBlinkH_att, bs_mid[0].attr(upTarget.name()))
pm.connectAttr(midBlinkH_att, bs_midLower[0].attr(upTarget.name()))

Expand Down Expand Up @@ -1052,6 +1083,9 @@ def create_controls(self):
self.deformers_group_label = QtWidgets.QLabel("Static Rig Parent:")
self.deformers_group = QtWidgets.QLineEdit()
self.deformers_group_button = QtWidgets.QPushButton("<<")
self.mult10 = QtWidgets.QCheckBox(
"Use rang 0-10 for more precise control")
self.sideRange.setChecked(False)

# Main buttons
self.build_button = QtWidgets.QPushButton("Build Eye Rig")
Expand Down Expand Up @@ -1177,6 +1211,7 @@ def create_layout(self):
options_layout.addWidget(self.blinkHeight_group)
options_layout.addWidget(self.tracking_group)
options_layout.addWidget(self.sideRange)
options_layout.addWidget(self.mult10)
options_layout.addLayout(ctlSet_layout)
options_layout.addLayout(deformersGrp_layout)
self.options_group.setLayout(options_layout)
Expand Down