Esempio n. 1
0
    def addOperators(self):

        # Controlers Limits -------------------------------
        # pos_0 = self.crv[0].ActivePrimitive.Geometry.Curves(0).EvaluatePosition(0)[0]
        # pos_1 = self.crv[0].ActivePrimitive.Geometry.Curves(0).EvaluatePosition(4)[0]
        # pos_0 = XSIMath.MapObjectPositionToWorldSpace(self.crv[0].Kinematics.Global.Transform, pos_0)
        # pos_1 = XSIMath.MapObjectPositionToWorldSpace(self.crv[0].Kinematics.Global.Transform, pos_1)

        # lim_min = pos_0.Y - self.ctl[0].Kinematics.Global.Transform.Translation.Y
        # lim_max = pos_1.Y - self.ctl[0].Kinematics.Global.Transform.Translation.Y

        for ctl, crv, upv, centers, off, perc in zip(self.ctl, self.crv,
                                                     self.upv, self.ctr,
                                                     self.off,
                                                     self.percentages):

            # crv_geo = crv.ActivePrimitive.Geometry
            # crv_0 = crv_geo.Curves(0)
            # crv_tra = crv.Kinematics.Global.Transform

            # Set Limits ----------------------------------
            par.setLimit(ctl, ["posy"], -1, 1)
            # ctl.Kinematics.Local.Parameters("posyminactive").Value = True
            # ctl.Kinematics.Local.Parameters("posymaxactive").Value = True
            # ctl.Kinematics.Local.Parameters("posyminlimit").Value = lim_min
            # ctl.Kinematics.Local.Parameters("posymaxlimit").Value = lim_max

            # Path Constraint -----------------------------
            constraints = []
            for ctr in centers:
                cns = aop.pathCns(ctr, crv, 0, perc, True, upv, False)
                ope.setConstraintTangency(cns, [0, 1, 0], [0, 0, -1])
                constraints.append(cns)

            pos_min = "max(0,-%s)*%s" % (
                ctl.Kinematics.Local.Parameters("posy").FullName, perc)
            pos_max = "max(0,%s)*%s" % (
                ctl.Kinematics.Local.Parameters("posy").FullName, 100 - perc)
            par.addExpression(constraints[1].Parameters("perc"),
                              "%s - %s + %s" % (perc, pos_min, pos_max))

            cns_perc = constraints[1].Parameters("perc").FullName
            par.addExpression(constraints[0].Parameters("perc"),
                              cns_perc + " * .5 ")
            par.addExpression(constraints[2].Parameters("perc"),
                              cns_perc + " + (100 - " + cns_perc + " ) * .5 ")

            # Connect Offset to Controler
            for s in "xz":
                par.addExpression(
                    off.Kinematics.Local.Parameters("pos%s" % s),
                    ctl.Kinematics.Local.Parameters("pos%s" % s).FullName +
                    " * " + str(self.scale))
            for s in "yz":
                par.addExpression(
                    off.Kinematics.Local.Parameters("rot%s" % s),
                    ctl.Kinematics.Local.Parameters("rot%s" % s).FullName)
            for s in "x":
                par.addExpression(
                    off.Kinematics.Local.Parameters("scl%s" % s),
                    ctl.Kinematics.Local.Parameters("scl%s" % s).FullName)

        # Constrained Curve -------------------------------
        for i in range(self.crv_count):

            if i == self.inter_crv:
                centers = self.off
            else:
                centers = [ctr[i] for ctr in self.ctr]

            for ctr, pnts in zip(centers, [[0, 1], [2], [3, 4]]):
                aop.clsCtrOp(self.cns_crv[i], ctr, pnts)

        # Shadows -----------------------------------------
        constraints = []
        for i in range(self.shd_count):

            u = i / 4.0
            for j in range(self.crv_count):

                if j == self.inter_crv:
                    cns = aop.pathCns(self.loc[j * self.shd_count + i],
                                      self.cns_crv[j], 1, u, True, None, False)
                    constraints.append(cns)
                else:
                    cns = aop.pathCns(self.loc[j * self.shd_count + i],
                                      self.cns_crv[j], 1, u, True, self.upv[0],
                                      False)

        # Connect Roll
        aop.gear_pointAtObjectAxis(constraints[0], self.ctl[0], [0, 0, 1])
        aop.spinePointAtOp(constraints[1], self.ctl[0], self.ctl[1], .5)
        aop.gear_pointAtObjectAxis(constraints[2], self.ctl[1], [0, 0, 1])
        aop.spinePointAtOp(constraints[3], self.ctl[1], self.ctl[2], .5)
        aop.gear_pointAtObjectAxis(constraints[4], self.ctl[2], [0, 0, 1])
Esempio n. 2
0
    def addOperators(self):

        # Controlers Limits -------------------------------
        # pos_0 = self.crv[0].ActivePrimitive.Geometry.Curves(0).EvaluatePosition(0)[0]
        # pos_1 = self.crv[0].ActivePrimitive.Geometry.Curves(0).EvaluatePosition(4)[0]
        # pos_0 = XSIMath.MapObjectPositionToWorldSpace(self.crv[0].Kinematics.Global.Transform, pos_0)
        # pos_1 = XSIMath.MapObjectPositionToWorldSpace(self.crv[0].Kinematics.Global.Transform, pos_1)

        # lim_min = pos_0.Y - self.ctl[0].Kinematics.Global.Transform.Translation.Y
        # lim_max = pos_1.Y - self.ctl[0].Kinematics.Global.Transform.Translation.Y

        for ctl, crv, upv, centers, off, perc in zip(self.ctl, self.crv, self.upv, self.ctr, self.off, self.percentages):

            # crv_geo = crv.ActivePrimitive.Geometry
            # crv_0 = crv_geo.Curves(0)
            # crv_tra = crv.Kinematics.Global.Transform

            # Set Limits ----------------------------------
            par.setLimit(ctl, ["posy"], -1, 1)
            # ctl.Kinematics.Local.Parameters("posyminactive").Value = True
            # ctl.Kinematics.Local.Parameters("posymaxactive").Value = True
            # ctl.Kinematics.Local.Parameters("posyminlimit").Value = lim_min
            # ctl.Kinematics.Local.Parameters("posymaxlimit").Value = lim_max

            # Path Constraint -----------------------------
            constraints = []
            for ctr in centers:
                cns = aop.pathCns(ctr, crv, 0, perc, True, upv, False)
                ope.setConstraintTangency(cns, [0,1,0], [0,0,-1])
                constraints.append(cns)

            pos_min = "max(0,-%s)*%s"%(ctl.Kinematics.Local.Parameters("posy").FullName,perc)
            pos_max = "max(0,%s)*%s"%(ctl.Kinematics.Local.Parameters("posy").FullName,100-perc)
            par.addExpression(constraints[1].Parameters("perc"), "%s - %s + %s"%(perc,pos_min,pos_max))

            cns_perc = constraints[1].Parameters("perc").FullName
            par.addExpression(constraints[0].Parameters("perc"), cns_perc + " * .5 ")
            par.addExpression(constraints[2].Parameters("perc"), cns_perc + " + (100 - "+cns_perc+" ) * .5 ")

            # Connect Offset to Controler
            for s in "xz":
                par.addExpression(off.Kinematics.Local.Parameters("pos%s"%s), ctl.Kinematics.Local.Parameters("pos%s"%s).FullName+" * "+str(self.scale))
            for s in "yz":
                par.addExpression(off.Kinematics.Local.Parameters("rot%s"%s), ctl.Kinematics.Local.Parameters("rot%s"%s).FullName)
            for s in "x":
                par.addExpression(off.Kinematics.Local.Parameters("scl%s"%s), ctl.Kinematics.Local.Parameters("scl%s"%s).FullName)

        # Constrained Curve -------------------------------
        for i in range(self.crv_count):

            if i == self.inter_crv:
                centers = self.off
            else:
                centers = [ctr[i] for ctr in self.ctr]

            for ctr, pnts in zip(centers, [[0,1],[2],[3,4]]):
                aop.clsCtrOp(self.cns_crv[i], ctr, pnts)

        # Shadows -----------------------------------------
        constraints = []
        for i in range(self.shd_count):

            u = i/4.0
            for j in range(self.crv_count):

                if j == self.inter_crv:
                    cns = aop.pathCns(self.loc[j*self.shd_count+i], self.cns_crv[j], 1, u, True, None, False)
                    constraints.append(cns)
                else:
                    cns = aop.pathCns(self.loc[j*self.shd_count+i], self.cns_crv[j], 1, u, True, self.upv[0], False)



        # Connect Roll
        aop.gear_pointAtObjectAxis(constraints[0], self.ctl[0], [0,0,1])
        aop.spinePointAtOp(constraints[1], self.ctl[0], self.ctl[1], .5)
        aop.gear_pointAtObjectAxis(constraints[2], self.ctl[1], [0,0,1])
        aop.spinePointAtOp(constraints[3], self.ctl[1], self.ctl[2], .5)
        aop.gear_pointAtObjectAxis(constraints[4], self.ctl[2], [0,0,1])
Esempio n. 3
0
    def addOperators(self):
        
        
    
        #Jaw Operators
        par.addExpression(self.jawRotCenter.Kinematics.Local.Parameters("rotz"), self.jawControl.Kinematics.Local.Parameters("rotz").FullName  )
        par.addExpression(self.jawTrans.Kinematics.Local.Parameters("posz"), self.jawControl.Kinematics.Local.Parameters("posz").FullName + " *" + self.mult_jaw_trans_Z.FullName )
        par.addExpression(self.jawRotBase.Kinematics.Local.Parameters("rotx"), "(" + self.jawControl.Kinematics.Local.Parameters("posy").FullName + " *" + self.mult_jaw_rot_X.FullName + ") * -1")
        par.addExpression(self.jawRotBase.Kinematics.Local.Parameters("roty"),  self.jawControl.Kinematics.Local.Parameters("posx").FullName + " *" + self.mult_jaw_rot_Y.FullName )
        par.addExpression(self.jawRotBase.Kinematics.Local.Parameters("rotz"),  self.jawControl.Kinematics.Local.Parameters("posx").FullName + " *" + self.mult_jaw_rot_Z.FullName )
         
        oAxis = [ "posx", "posy", "posz"]
         
        par.setLimit( self.jawControl, oAxis, -1, 1)
         
         
        #teeth
        self.intePose01 = aop.sn_interpose_op(self.teeth_lvl, self.teethHead, self.teethJaw )
        
        par.addExpression(self.intePose01.Parameters("blend_pos"), "MIN( MAX((" + self.jawControl.Kinematics.Local.Parameters("posy").FullName + "*" + self.upLips_jaw_head_multi.FullName + ")+"  + self.sticky_Lips.FullName + "+" + self.upLips_jaw_head.FullName + "+ abs(" + self.jawControl.Kinematics.Local.Parameters("posx").FullName + " ) , 0 + " + self.upLips_jaw_head.FullName + " + "  + self.sticky_Lips.FullName  + "), 1 )"  )
        par.addExpression(self.intePose01.Parameters("blend_dir"), "MIN( MAX((" + self.jawControl.Kinematics.Local.Parameters("posy").FullName + "*" + self.upLips_jaw_head_multi.FullName + ")+"   + self.sticky_Lips.FullName + "+" + self.upLips_jaw_head.FullName + "+ abs(" + self.jawControl.Kinematics.Local.Parameters("posx").FullName + " ), abs(" + self.jawControl.Kinematics.Local.Parameters("posx").FullName +  ")+" + self.upLips_jaw_head.FullName + "+ "  + self.sticky_Lips.FullName  +" ), 1 )"  )
        par.addExpression(self.intePose01.Parameters("blend_upv"), "MIN( MAX((" + self.jawControl.Kinematics.Local.Parameters("posy").FullName + "*" + self.upLips_jaw_head_multi.FullName + ")+"  + self.sticky_Lips.FullName + "+" + self.upLips_jaw_head.FullName + "+ abs(" + self.jawControl.Kinematics.Local.Parameters("posx").FullName + " ) , 0 + " + self.upLips_jaw_head.FullName + " + "  + self.sticky_Lips.FullName  + "), 1 )"  )
        
        
        
        #lips
                
        self.intePose02 = aop.sn_interpose_op(self.upLips_lvl, self.upLipsHead, self.upLipsJaw )
        
        par.addExpression(self.intePose02.Parameters("blend_pos"), "MIN( MAX((" + self.jawControl.Kinematics.Local.Parameters("posy").FullName + "*" + self.upLips_jaw_head_multi.FullName + ")+"  + self.sticky_Lips.FullName + "+" + self.upLips_jaw_head.FullName + "+ abs(" + self.jawControl.Kinematics.Local.Parameters("posx").FullName + " ) , 0 + " + self.upLips_jaw_head.FullName + " + "  + self.sticky_Lips.FullName  + "), 1 )"  )
        par.addExpression(self.intePose02.Parameters("blend_dir"), "MIN( MAX((" + self.jawControl.Kinematics.Local.Parameters("posy").FullName + "*" + self.upLips_jaw_head_multi.FullName + ")+"   + self.sticky_Lips.FullName + "+" + self.upLips_jaw_head.FullName + "+ abs(" + self.jawControl.Kinematics.Local.Parameters("posx").FullName + " ), abs(" + self.jawControl.Kinematics.Local.Parameters("posx").FullName +  ")+" + self.upLips_jaw_head.FullName + "+ "  + self.sticky_Lips.FullName  +" ), 1 )"  )
        par.addExpression(self.intePose02.Parameters("blend_upv"), "MIN( MAX((" + self.jawControl.Kinematics.Local.Parameters("posy").FullName + "*" + self.upLips_jaw_head_multi.FullName + ")+"  + self.sticky_Lips.FullName + "+" + self.upLips_jaw_head.FullName + "+ abs(" + self.jawControl.Kinematics.Local.Parameters("posx").FullName + " ) , 0 + " + self.upLips_jaw_head.FullName + " + "  + self.sticky_Lips.FullName  + "), 1 )"  )
        
        
        #Lips profile contrains
        self.cnsLower01 = aop.poseCns(self.uLip01_lvl, self.uLip01Lower_ref, True)
        self.cnsUpper01 = aop.poseCns(self.uLip01_lvl, self.uLip01Upper_ref, True)        
        par.addExpression(self.cnsUpper01.Parameters("blendweight"),  self.lip_01.FullName   )
        self.cnsLower01.Parameters("cnsscl").Value = False
        self.cnsUpper01.Parameters("cnsscl").Value = False
        
        self.cnsLower02 = aop.poseCns(self.uLip02_lvl, self.uLip02Lower_ref, True)
        self.cnsUpper02 = aop.poseCns(self.uLip02_lvl, self.uLip02Upper_ref, True)        
        par.addExpression(self.cnsUpper02.Parameters("blendweight"),  self.lip_02.FullName    )
        self.cnsLower02.Parameters("cnsscl").Value = False
        self.cnsUpper02.Parameters("cnsscl").Value = False
        
        self.cnsLower03 = aop.poseCns(self.uLip03_lvl, self.uLip03Lower_ref, True)
        self.cnsUpper03 = aop.poseCns(self.uLip03_lvl, self.uLip03Upper_ref, True)        
        par.addExpression(self.cnsUpper03.Parameters("blendweight"),  self.lip_03.FullName  )
        self.cnsLower03.Parameters("cnsscl").Value = False
        self.cnsUpper03.Parameters("cnsscl").Value = False
        
        self.cnsLower04 = aop.poseCns(self.cLip04_lvl, self.lLip04Lower_ref, True)
        self.cnsUpper04 = aop.poseCns(self.cLip04_lvl, self.lLip04Upper_ref, True)        
        par.addExpression(self.cnsUpper04.Parameters("blendweight"),  self.lip_04.FullName    )
        self.cnsLower04.Parameters("cnsscl").Value = False
        self.cnsUpper04.Parameters("cnsscl").Value = False
        
        self.cnsLower05 = aop.poseCns(self.lLip05_lvl, self.lLip05Lower_ref, True)
        self.cnsUpper05 = aop.poseCns(self.lLip05_lvl, self.lLip05Upper_ref, True)        
        par.addExpression(self.cnsUpper05.Parameters("blendweight"),  self.lip_05.FullName    )
        self.cnsLower05.Parameters("cnsscl").Value = False
        self.cnsUpper05.Parameters("cnsscl").Value = False
        
        self.cnsLower06 = aop.poseCns(self.lLip06_lvl, self.lLip06Lower_ref, True)
        self.cnsUpper06 = aop.poseCns(self.lLip06_lvl, self.lLip06Upper_ref, True)        
        par.addExpression(self.cnsUpper06.Parameters("blendweight"),  self.lip_06.FullName    )
        self.cnsLower06.Parameters("cnsscl").Value = False
        self.cnsUpper06.Parameters("cnsscl").Value = False
        
        self.cnsLower07 = aop.poseCns(self.lLip07_lvl, self.lLip07Lower_ref, True)
        self.cnsUpper07 = aop.poseCns(self.lLip07_lvl, self.lLip07Upper_ref, True)        
        par.addExpression(self.cnsUpper07.Parameters("blendweight"),  self.lip_07.FullName    )
        self.cnsLower07.Parameters("cnsscl").Value = False
        self.cnsUpper07.Parameters("cnsscl").Value = False
        
        self.cnsLower08 = aop.poseCns(self.lLip08_lvl, self.lLip08Lower_ref, True)
        self.cnsUpper08= aop.poseCns(self.lLip08_lvl, self.lLip08Upper_ref, True)        
        par.addExpression(self.cnsUpper08.Parameters("blendweight"),  self.lip_08.FullName    )
        self.cnsLower08.Parameters("cnsscl").Value = False
        self.cnsUpper08.Parameters("cnsscl").Value = False
        
        self.cnsLower09 = aop.poseCns(self.lLip09_lvl, self.lLip09Lower_ref, True)
        self.cnsUpper09 = aop.poseCns(self.lLip09_lvl, self.lLip09Upper_ref, True)        
        par.addExpression(self.cnsUpper09.Parameters("blendweight"),  self.lip_09.FullName    )
        self.cnsLower09.Parameters("cnsscl").Value = False
        self.cnsUpper09.Parameters("cnsscl").Value = False
        
        self.cnsLower10 = aop.poseCns(self.cLip10_lvl, self.lLip10Lower_ref, True)
        self.cnsUpper10 = aop.poseCns(self.cLip10_lvl, self.lLip10Upper_ref, True)        
        par.addExpression(self.cnsUpper10.Parameters("blendweight"),  self.lip_10.FullName    )
        self.cnsLower10.Parameters("cnsscl").Value = False
        self.cnsUpper10.Parameters("cnsscl").Value = False
        
        self.cnsLower11 = aop.poseCns(self.uLip11_lvl, self.uLip11Lower_ref, True)
        self.cnsUpper11 = aop.poseCns(self.uLip11_lvl, self.uLip11Upper_ref, True)        
        par.addExpression(self.cnsUpper11.Parameters("blendweight"),  self.lip_11.FullName    )
        self.cnsLower11.Parameters("cnsscl").Value = False
        self.cnsUpper11.Parameters("cnsscl").Value = False
        
        self.cnsLower12 = aop.poseCns(self.uLip12_lvl, self.uLip12Lower_ref, True)
        self.cnsUpper12 = aop.poseCns(self.uLip12_lvl, self.uLip12Upper_ref, True)        
        par.addExpression(self.cnsUpper12.Parameters("blendweight"),  self.lip_12.FullName    )
        self.cnsLower12.Parameters("cnsscl").Value = False
        self.cnsUpper12.Parameters("cnsscl").Value = False
        
        #mouth compression
        par.addExpression(self.upLips_loc.Kinematics.Local.Parameters("sclx"),  "1-((" + \
            self.jawControl.Kinematics.Local.Parameters("posy").FullName + \
            "*-1)*"+  self.lips_compression.FullName + ")")
            
        par.addExpression(self.lowLipsJaw.Kinematics.Local.Parameters("sclx"),  "1-((" + \
            self.jawControl.Kinematics.Local.Parameters("posy").FullName +"*-1)*"+ \
            self.lips_compression.FullName+ ")")
        
        par.addExpression(self.upLips_loc.Kinematics.Local.Parameters("posz"),  "((MAX("+ \
            self.jawControl.Kinematics.Local.Parameters("posy").FullName + "*-1,0))*" +  \
            self.lips_upperTranslation.FullName + ")+" + self.lips_upperOffset.FullName )
            
        par.addExpression(self.lowLipsJaw.Kinematics.Local.Parameters("posz"),  "((MAX("+ \
            self.jawControl.Kinematics.Local.Parameters("posy").FullName + "*-1,0))*" + \
            self.lips_lowerTranslation.FullName + ") +" + self.lips_lowerOffset.FullName )
         
         
        # # ICE Shapes Controls
        # self.intePose03 = aop.sn_interpose_op(self.mouthICE_lvl, self.upLipsHead, self.upLipsJaw )