def getTransposedVector(v, position0, position1, inverse=False): v0 = XSIMath.CreateVector3() v0.Sub(position0[1], position0[0]) v0.NormalizeInPlace() v1 = XSIMath.CreateVector3() v1.Sub(position1[1], position1[0]) v1.NormalizeInPlace() ra = v0.Angle(v1) if inverse: ra = -ra axis = XSIMath.CreateVector3() #axis.Cross(v, v0) axis.Cross(v0, v1) r = XSIMath.CreateRotation() r.SetFromAxisAngle(axis, ra) vector = XSIMath.CreateVector3() vector.MulByRotation(v, r) # Check if the rotation has been set in the right order ra2 = (math.pi * .5) - v1.Angle(vector) r.SetFromAxisAngle(axis, -ra2) vector.MulByRotationInPlace(r) return vector
def logMatrix3AsAngles(m, msg="matrix3"): r = XSIMath.CreateRotation() r.SetFromMatrix3(m) v = r.XYZAngles logVector(v, msg)
def getRotationFromAxis(in_a, in_b, axis="xy", negate=False): a = XSIMath.CreateVector3(in_a.X, in_a.Y, in_a.Z) b = XSIMath.CreateVector3(in_b.X, in_b.Y, in_b.Z) c = XSIMath.CreateVector3() x = XSIMath.CreateVector3() y = XSIMath.CreateVector3() z = XSIMath.CreateVector3() if negate: a.NegateInPlace() a.NormalizeInPlace() c.Cross(a, b) c.NormalizeInPlace() b.Cross(c, a) b.NormalizeInPlace() if axis == "xy": x = a y = b z = c elif axis == "xz": x = a z = b y.Negate(c) elif axis == "yx": y = a x = b z.Negate(c) elif axis == "yz": y = a z = b x = c elif axis == "zx": z = a x = b y = c elif axis == "zy": z = a y = b x.Negate(c) else: gear.log("Invalid Input", gear.sev_error) return r = XSIMath.CreateRotation() r.SetFromXYZAxes(x, y, z) return r
def addNullsFromPositions(parent, name, positions, rot_offset=XSIMath.CreateRotation(), size=1, color=[0, 0, 0]): # Name if "#" in name: name = name.replace("#", "%s") else: name += "%s" nullList = [] i = 0 for x in positions: t = tra.getTransformFromPosition(x) t.SetRotation(rot_offset) #t = tra.getTransformLookingAt(x, lookat, normal, axis, negate) null = addNull(parent, name % i, t, size, color) nullList.append(null) i += 1 return nullList
def addObjects(self): self.div_count = len(self.guide.apos) - 5 plane = [self.guide.apos[0], self.guide.apos[-4], self.guide.apos[-3]] self.normal = self.getNormalFromPos(plane) self.binormal = self.getBiNormalFromPos(plane) # Heel --------------------------------------------- t = tra.getTransformLookingAt(self.guide.pos["heel"], self.guide.apos[-4], self.normal, "xz", self.negate) self.heel_loc = pri.addNull(self.root, self.getName("heel_loc"), t, self.size * .15) xsi.SetNeutralPose(self.heel_loc) self.addToGroup(self.heel_loc, "hidden") self.heel_ctl = self.addCtl(self.heel_loc, "heel_ctl", t, self.color_ik, "sphere", w=self.size * .1) xsi.SetNeutralPose(self.heel_ctl) par.setKeyableParameters(self.heel_ctl, self.r_params) # Tip ---------------------------------------------- v = XSIMath.CreateVector3(self.guide.apos[-5].X, self.guide.apos[-1].Y, self.guide.apos[-5].Z) t.SetTranslation(v) self.tip_ctl = self.addCtl(self.heel_ctl, "tip_ctl", t, self.color_ik, "circle", w=self.size * .5) xsi.SetNeutralPose(self.tip_ctl) par.setKeyableParameters(self.heel_ctl, self.r_params) # Roll --------------------------------------------- if self.settings["roll"] == 0: t = tra.getTransformFromPosition(self.guide.pos["root"]) t.SetRotation( tra.getRotationFromAxis(self.y_axis, self.normal, "yz", self.negate)) self.roll_ctl = self.addCtl(self.root, "roll_ctl", t, self.color_ik, "cylinder", w=self.size * .5, h=self.size * .5, ro=XSIMath.CreateRotation( 3.1415 * .5, 0, 0)) xsi.SetNeutralPose(self.roll_ctl) par.setKeyableParameters(self.roll_ctl, ["rotx", "rotz"]) # Backward Controlers ------------------------------ bk_pos = self.guide.apos[1:-3] bk_pos.reverse() parent = self.tip_ctl self.bk_ctl = [] for i, pos in enumerate(bk_pos): if i == 0: t = self.heel_loc.Kinematics.Global.Transform t.SetTranslation(pos) else: dir = bk_pos[i - 1] t = tra.getTransformLookingAt(pos, dir, self.normal, "xz", self.negate) bk_ctl = self.addCtl(parent, "bk%s_ctl" % i, t, self.color_ik, "sphere", w=self.size * .15) xsi.SetNeutralPose(bk_ctl) par.setKeyableParameters(bk_ctl, self.r_params) self.bk_ctl.append(bk_ctl) parent = bk_ctl # Forward Controlers ------------------------------ self.fk_ref = pri.addNullFromPos(self.bk_ctl[-1], self.getName("fk_ref"), self.guide.apos[0], self.size * .5) self.addToGroup(self.fk_ref, "hidden") self.fk_ctl = [] parent = self.fk_ref for i, bk_ctl in enumerate(reversed(self.bk_ctl[1:])): t = bk_ctl.Kinematics.Global.Transform dist = vec.getDistance(self.guide.apos[i + 1], self.guide.apos[i + 2]) fk_ctl = self.addCtl(parent, "fk%s_ctl" % i, t, self.color_fk, "cube", w=dist, h=self.size * .5, d=self.size * .5, po=XSIMath.CreateVector3( dist * .5 * self.n_factor, 0, 0)) xsi.SetNeutralPose(fk_ctl) par.setKeyableParameters(fk_ctl) self.addShadow(fk_ctl, i) parent = fk_ctl self.fk_ctl.append(fk_ctl)
def addObjects(self): self.normal = self.getNormalFromPos(self.guide.apos) self.length0 = vec.getDistance(self.guide.apos[0], self.guide.apos[1]) self.length1 = vec.getDistance(self.guide.apos[1], self.guide.apos[2]) self.length2 = vec.getDistance(self.guide.apos[2], self.guide.apos[3]) # FK Controlers ------------------------------------ t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.normal, "xz", self.negate) self.fk0_ctl = self.addCtl(self.root, "fk0_ctl", t, self.color_fk, "circle", w=self.size*.1, po=XSIMath.CreateVector3(.5*self.n_factor,0,0), ro=XSIMath.CreateRotation(0,0,3.1415*.5)) xsi.SetNeutralPose(self.fk0_ctl) par.setKeyableParameters(self.fk0_ctl) par.addLocalParamToCollection(self.inv_params, self.fk0_ctl, ["posx", "posy", "posz"]) t = tra.getTransformLookingAt(self.guide.apos[1], self.guide.apos[2], self.normal, "xz", self.negate) self.fk1_ctl = self.addCtl(self.fk0_ctl, "fk1_ctl", t, self.color_fk, "circle", w=self.size*.1, po=XSIMath.CreateVector3(.5*self.n_factor,0,0), ro=XSIMath.CreateRotation(0,0,3.1415*.5)) xsi.SetNeutralPose(self.fk1_ctl, c.siST) par.setKeyableParameters(self.fk1_ctl) par.addLocalParamToCollection(self.inv_params, self.fk1_ctl, ["posx", "posy", "posz"]) t = tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], self.normal, "xz", self.negate) self.fk2_ctl = self.addCtl(self.fk1_ctl, "fk2_ctl", t, self.color_fk, "circle", w=self.size*.1, ro=XSIMath.CreateRotation(0,0,3.1415*.5)) xsi.SetNeutralPose(self.fk2_ctl, c.siST) par.setKeyableParameters(self.fk2_ctl) par.addLocalParamToCollection(self.inv_params, self.fk2_ctl, ["posx", "posy", "posz"]) # IK Controlers ------------------------------------ self.ik_cns = pri.addNullFromPos(self.root, self.getName("ik_cns"), self.guide.apos[2], self.size*.02) self.addToGroup(self.ik_cns, "hidden") self.ikcns_ctl = self.addCtl(self.ik_cns, "ikcns_ctl", self.ik_cns.Kinematics.Global.Transform, self.color_ik, "null", h=self.size*.2) par.setKeyableParameters(self.ikcns_ctl) par.addLocalParamToCollection(self.inv_params, self.ikcns_ctl, ["posx", "rotx", "rotz"]) t = tra.getTransformLookingAt(self.guide.apos[2], self.guide.apos[3], self.x_axis, "zx", False) self.ik_ctl = self.addCtl(self.ikcns_ctl, "ik_ctl", t, self.color_ik, "circle", w=self.size*.2) self.addToCtlGroup(self.ik_ctl) par.setKeyableParameters(self.ik_ctl) par.addLocalParamToCollection(self.inv_params, self.ik_ctl, ["posx"]) v = XSIMath.CreateVector3() v.Sub(self.guide.apos[2], self.guide.apos[0]) v.Cross(self.normal, v) v.NormalizeInPlace() v.ScaleInPlace(self.size*.5) v.AddInPlace(self.guide.apos[1]) self.upv_cns = pri.addNullFromPos(self.root, self.getName("upv_cns"), v, self.size*.02) self.addToGroup(self.upv_cns, "hidden") self.upv_ctl = self.addCtl(self.upv_cns, "upv_ctl", self.upv_cns.Kinematics.Global.Transform, self.color_ik, "diamond", w=self.size*.05) par.setKeyableParameters(self.upv_ctl, self.t_params) par.addLocalParamToCollection(self.inv_params, self.upv_ctl, ["posx"]) self.ik_ref = pri.addNull(self.ik_ctl, self.getName("ik_ref"), self.ik_ctl.Kinematics.Global.Transform, self.size * .1) self.addToGroup(self.ik_ref, "hidden") # Chain -------------------------------------------- self.chain = pri.add2DChain(self.root, self.getName(""), self.guide.apos[:-1], self.normal, self.negate, 1, False) self.ctrn_loc = pri.addNullFromPos(self.chain.bones[0], self.getName("ctrn_loc"), self.guide.pos["knee"], self.size*.1) self.addToGroup(self.chain.all, "hidden") self.addToGroup(self.ctrn_loc, "hidden") # leash self.leash_crv = cur.addCnsCurve(self.root, self.getName("leash_crv"), [self.chain.bones[1], self.upv_ctl], False, 1) self.addToGroup(self.leash_crv, "unselectable") # shadows self.settings["division0"] = 4 self.settings["division1"] = 4 self.div0_loc = [] for i in range(self.settings["division0"]): d = min(i/(self.settings["division0"]-1.0), 1-(.5/(self.settings["division0"]-1.0))) t = self.chain.bones[0].Kinematics.Global.Transform t.SetTranslation(vec.linearlyInterpolate(self.guide.pos["root"], self.guide.pos["knee"], d)) div_loc = pri.addNull(self.chain.bones[0], self.getName("div%s_loc"%(i)), t, self.size*.05) self.addShadow(div_loc, i) self.div0_loc.append(div_loc) self.addShadow(self.ctrn_loc, self.settings["division0"]) self.div_loc = [] for i in range(self.settings["division1"]): d = max(i/(self.settings["division1"]-1.0), .5/(self.settings["division1"]-1.0)) t = self.chain.bones[1].Kinematics.Global.Transform t.SetTranslation(vec.linearlyInterpolate(self.guide.pos["knee"], self.guide.pos["ankle"], d)) div_loc = pri.addNull(self.chain.bones[1], self.getName("div%s_loc"%(i+self.settings["division0"]+1)), t, self.size*.05) self.addShadow(div_loc, i+self.settings["division0"]+1) self.div_loc.append(div_loc) self.addToGroup(self.div0_loc, "hidden") self.addToGroup(self.div_loc, "hidden") # Hook ---------------------------------------------- t = self.chain.bones[1].Kinematics.Global.Transform t.SetTranslation(self.guide.pos["ankle"]) self.end_ref = pri.addNull(self.chain.bones[1], self.getName("end_ref"), t, self.size * .1) self.addToGroup(self.end_ref, "hidden") self.addShadow(self.end_ref, "end")
def addObjects(self): # Jaw objects self.jawRotCenter = pri.addNullFromPos(self.root, self.getName("jaw_rot_center"), self.guide.apos[2], self.size*.02) self.jawTrans = pri.addNullFromPos(self.jawRotCenter, self.getName("jaw_translation"), self.guide.apos[0], self.size*.02) self.jawRotBase = pri.addNullFromPos(self.jawTrans, self.getName("jaw_rot_base"), self.guide.apos[0], self.size*.02) self.addToGroup(self.jawRotCenter, "hidden") self.addToGroup(self.jawTrans, "hidden") self.addToGroup(self.jawRotBase, "hidden") self.addShadow(self.jawRotBase, "jaw") plane = [self.guide.apos[0], self.guide.apos[1], self.guide.apos[2]] self.normal = self.getNormalFromPos(plane) self.jawContLvl = pri.addNullFromPos(self.root, self.getName("jaw_ctl_Level"), self.guide.apos[1], self.size*.02) t = self.jawContLvl.Kinematics.Global.Transform self.oAngle = XSIMath.DegreesToRadians( 90) self.tmpRot = XSIMath.CreateRotation(self.oAngle, 0.0, 0.0) self.jawControl = self.addCtl(self.jawContLvl, "jaw_ctl", t, self.color_fk, "circle", w=self.size*.5, ro = self.tmpRot) self.addToGroup(self.jawContLvl, "hidden") #Neutral posing xsi.SetNeutralPose(self.jawRotCenter, c.siSRT) xsi.SetNeutralPose(self.jawTrans, c.siSRT) #teeth Objects plane = [self.guide.pos["root"], self.guide.pos["lip01"], self.guide.pos["tongueB"]] self.normal = self.getNormalFromPos(plane) self.binormal = self.getBiNormalFromPos(plane) t = tra.getTransformLookingAt(self.guide.pos["teethT"], self.guide.pos["teethB"], self.normal, "zx", 1) self.teeth_lvl = pri.addNull(self.root, self.getName("teeth_lvl"), t) self.teeth_lvl.Parameters("primary_icon").Value = 1 self.teethHead = pri.addNull(self.root, self.getName("teethHead"), t) self.teethJaw = pri.addNull(self.jawRotBase, self.getName("teethJaw"), t) self.upTeethControl = self.addCtl(self.teeth_lvl, "upTeeth_ctl", t, self.color_fk, "circle", w=self.size*.2) self.downTeethControl = self.addCtl(self.teethJaw, "downTeeth_ctl", t, self.color_fk, "circle", w=self.size*.2) self.addToGroup(self.teeth_lvl, "hidden") self.addToGroup(self.teethHead, "hidden") self.addToGroup(self.teethJaw, "hidden") self.addShadow(self.upTeethControl, "upTeeth") self.addShadow(self.downTeethControl, "lowTeeth") #Lips Objects t = tra.getTransformLookingAt(self.guide.pos["teethT"], self.guide.pos["teethB"], self.normal, "zx", 1) self.upLips_lvl = pri.addNull(self.root, self.getName("upLips_lvl"), t) self.upLips_lvl.Parameters("primary_icon").Value = 4 self.upLips_loc = pri.addNull(self.upLips_lvl, self.getName("upLips_loc"), t) self.upLipsHead = pri.addNull(self.root, self.getName("upLipsHead"), t) self.upLipsJaw = pri.addNull(self.jawRotBase, self.getName("upLipsJaw"), t) self.lowLipsJaw_lvl = pri.addNull(self.jawRotBase, self.getName("lowLipsJaw_lvl"), t) self.lowLipsJaw = pri.addNull(self.lowLipsJaw_lvl, self.getName("lowLipsJaw"), t) self.addToGroup(self.upLips_lvl, "hidden") self.addToGroup(self.upLipsHead, "hidden") self.addToGroup(self.upLipsJaw, "hidden") self.addToGroup(self.lowLipsJaw_lvl, "hidden") self.addToGroup(self.lowLipsJaw, "hidden") self.addToGroup(self.upLips_loc, "hidden") #upper lips t = tra.getTransformFromPosition(self.guide.pos["lip01"]) self.uLip01Upper_ref = pri.addNull(self.upLips_loc, self.getName("uLip01Upper_loc"), t, self.size * .01) self.uLip01Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("uLip01Lower_loc"), t, self.size * .01) self.uLip01_lvl = pri.addNull(self.root, self.getName("uLip01_lvl"), t, self.size * .01) self.uLip01_ctl = self.addCtl(self.uLip01_lvl, "uLip01_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.uLip01_lvl, "hidden") self.addToGroup(self.uLip01Upper_ref, "hidden") self.addToGroup(self.uLip01Lower_ref, "hidden") self.addShadow(self.uLip01_ctl, "uLip01") t = tra.getTransformFromPosition(self.guide.pos["lip02"]) self.uLip02Upper_ref = pri.addNull(self.upLips_loc, self.getName("uLip02Upper_loc"), t, self.size * .01) self.uLip02Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("uLip02Lower_loc"), t, self.size * .01) self.uLip02_lvl = pri.addNull(self.root, self.getName("uLip02_lvl"), t, self.size * .01) self.uLip02_ctl = self.addCtl(self.uLip02_lvl, "uLip02_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.uLip02_lvl, "hidden") self.addToGroup(self.uLip02Upper_ref, "hidden") self.addToGroup(self.uLip02Lower_ref, "hidden") self.addShadow(self.uLip02_ctl, "uLip02") t = tra.getTransformFromPosition(self.guide.pos["lip03"]) self.uLip03Upper_ref = pri.addNull(self.upLips_loc, self.getName("uLip03Upper_loc"), t, self.size * .01) self.uLip03Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("uLip03Lower_loc"), t, self.size * .01) self.uLip03_lvl = pri.addNull(self.root, self.getName("uLip03_lvl"), t, self.size * .01) self.uLip03_ctl = self.addCtl(self.uLip03_lvl, "uLip03_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.uLip03_lvl, "hidden") self.addToGroup(self.uLip03Upper_ref, "hidden") self.addToGroup(self.uLip03Lower_ref, "hidden") self.addShadow(self.uLip03_ctl, "uLip03") t = tra.getTransformFromPosition(self.guide.pos["lip11"]) self.uLip11Upper_ref = pri.addNull(self.upLips_loc, self.getName("uLip11Upper_loc"), t, self.size * .01) self.uLip11Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("uLip11Lower_loc"), t, self.size * .01) self.uLip11_lvl = pri.addNull(self.root, self.getName("uLip11_lvl"), t, self.size * .01) self.uLip11_ctl = self.addCtl(self.uLip11_lvl, "uLip11_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.uLip11_lvl, "hidden") self.addToGroup(self.uLip11Upper_ref, "hidden") self.addToGroup(self.uLip11Lower_ref, "hidden") self.addShadow(self.uLip11_ctl, "uLip11") t = tra.getTransformFromPosition(self.guide.pos["lip12"]) self.uLip12Upper_ref = pri.addNull(self.upLips_loc, self.getName("uLip12Upper_loc"), t, self.size * .01) self.uLip12Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("uLip12Lower_loc"), t, self.size * .01) self.uLip12_lvl = pri.addNull(self.root, self.getName("uLip12_lvl"), t, self.size * .01) self.uLip12_ctl = self.addCtl(self.uLip12_lvl, "uLip12_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.uLip12_lvl, "hidden") self.addToGroup(self.uLip12Upper_ref, "hidden") self.addToGroup(self.uLip12Lower_ref, "hidden") self.addShadow(self.uLip12_ctl, "uLip12") #lower Lips t = tra.getTransformFromPosition(self.guide.pos["lip05"]) self.lLip05Upper_ref = pri.addNull(self.upLips_loc, self.getName("lLip05Upper_loc"), t, self.size * .01) self.lLip05Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("lLip05Lower_loc"), t, self.size * .01) self.lLip05_lvl = pri.addNull(self.root, self.getName("lLip05_lvl"), t, self.size * .01) self.lLip05_ctl = self.addCtl(self.lLip05_lvl, "lLip05_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.lLip05_lvl, "hidden") self.addToGroup(self.lLip05Upper_ref, "hidden") self.addToGroup(self.lLip05Lower_ref, "hidden") self.addShadow(self.lLip05_ctl, "lLip05") t = tra.getTransformFromPosition(self.guide.pos["lip06"]) self.lLip06Upper_ref = pri.addNull(self.upLips_loc, self.getName("lLip06Upper_loc"), t, self.size * .01) self.lLip06Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("lLip06Lower_loc"), t, self.size * .01) self.lLip06_lvl = pri.addNull(self.root, self.getName("lLip06_lvl"), t, self.size * .01) self.lLip06_ctl = self.addCtl(self.lLip06_lvl, "lLip06_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.lLip06_lvl, "hidden") self.addToGroup(self.lLip06Upper_ref, "hidden") self.addToGroup(self.lLip06Lower_ref, "hidden") self.addShadow(self.lLip06_ctl, "lLip06") t = tra.getTransformFromPosition(self.guide.pos["lip07"]) self.lLip07Upper_ref = pri.addNull(self.upLips_loc, self.getName("lLip07Upper_loc"), t, self.size * .01) self.lLip07Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("lLip07Lower_loc"), t, self.size * .01) self.lLip07_lvl = pri.addNull(self.root, self.getName("lLip07_lvl"), t, self.size * .01) self.lLip07_ctl = self.addCtl(self.lLip07_lvl, "lLip07_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.lLip07_lvl, "hidden") self.addToGroup(self.lLip07Upper_ref, "hidden") self.addToGroup(self.lLip07Lower_ref, "hidden") self.addShadow(self.lLip07_ctl, "lLip07") t = tra.getTransformFromPosition(self.guide.pos["lip08"]) self.lLip08Upper_ref = pri.addNull(self.upLips_loc, self.getName("lLip08Upper_loc"), t, self.size * .01) self.lLip08Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("lLip08Lower_loc"), t, self.size * .01) self.lLip08_lvl = pri.addNull(self.root, self.getName("lLip08_lvl"), t, self.size * .01) self.lLip08_ctl = self.addCtl(self.lLip08_lvl, "lLip08_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.lLip08_lvl, "hidden") self.addToGroup(self.lLip08Upper_ref, "hidden") self.addToGroup(self.lLip08Lower_ref, "hidden") self.addShadow(self.lLip08_ctl, "lLip08") t = tra.getTransformFromPosition(self.guide.pos["lip09"]) self.lLip09Upper_ref = pri.addNull(self.upLips_loc, self.getName("lLip09Upper_loc"), t, self.size * .01) self.lLip09Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("lLip09Lower_loc"), t, self.size * .01) self.lLip09_lvl = pri.addNull(self.root, self.getName("lLip09_lvl"), t, self.size * .01) self.lLip09_ctl = self.addCtl(self.lLip09_lvl, "lLip09_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.lLip09_lvl, "hidden") self.addToGroup(self.lLip09Upper_ref, "hidden") self.addToGroup(self.lLip09Lower_ref, "hidden") self.addShadow(self.lLip09_ctl, "lLip09") #Corner lips t = tra.getTransformLookingAt(self.guide.pos["lip04"], self.guide.pos["lipL"], self.normal, "zx", 1) self.lLip04Upper_ref = pri.addNull(self.upLips_loc, self.getName("LLip04Upper_loc"), t, self.size * .01) self.lLip04Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("LLip04Lower_loc"), t, self.size * .01) self.cLip04_lvl = pri.addNull(self.root, self.getName("cLip04_lvl"), t, self.size * .05) self.cLip04_ctl = self.addCtl(self.cLip04_lvl, "LLip04_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.cLip04_lvl, "hidden") self.addToGroup(self.lLip04Upper_ref, "hidden") self.addToGroup(self.lLip04Lower_ref, "hidden") self.addShadow(self.cLip04_ctl, "cLip04") t = tra.getTransformLookingAt(self.guide.pos["lip10"], self.guide.pos["lipR"], self.normal, "zx", 1) self.lLip10Upper_ref = pri.addNull(self.upLips_loc, self.getName("RLip10Upper_loc"), t, self.size * .01) self.lLip10Lower_ref = pri.addNull(self.lowLipsJaw, self.getName("RLip10Lower_loc"), t, self.size * .01) self.cLip10_lvl = pri.addNull(self.root, self.getName("cLip10_lvl"), t, self.size * .05) self.cLip10_ctl = self.addCtl(self.cLip10_lvl, "RLip10_ctl", t, self.color_fk, "cube", w=self.size*.02, h = self.size*.02, d = self.size*.02 ) self.addToGroup(self.cLip10_lvl, "hidden") self.addToGroup(self.lLip10Upper_ref, "hidden") self.addToGroup(self.lLip10Lower_ref, "hidden") self.addShadow(self.cLip10_ctl, "cLip10") #Tongue self.oAngle = XSIMath.DegreesToRadians( 90) self.tmpRot = XSIMath.CreateRotation(0.0, 0.0, self.oAngle) t = tra.getTransformLookingAt(self.guide.pos["tongueB"], self.guide.pos["tongueBM"], self.normal, "zx", 0) self.tongue01_ctl = self.addCtl(self.teethJaw, "tongue01_ctl", t, self.color_fk, "square", w=self.size*.1, d=self.size*.01, ro=self.tmpRot) self.tongue01 = pri.addNull(self.tongue01_ctl, self.getName("tongue01"), t, self.size * .05) self.addShadow(self.tongue01_ctl, "tongue01") xsi.SetNeutralPose(self.tongue01_ctl, c.siSRT) self.addToGroup(self.tongue01, "hidden") t = tra.getTransformLookingAt(self.guide.pos["tongueBM"], self.guide.pos["tongueC"], self.normal, "zx", 0) self.tongue02_ctl = self.addCtl(self.tongue01, "tongue02_ctl", t, self.color_fk, "square", w=self.size*.1, d=self.size*.01, ro=self.tmpRot) self.tongue02 = pri.addNull(self.tongue02_ctl, self.getName("tongue02"), t, self.size * .05) self.addShadow(self.tongue02_ctl, "tongue02") xsi.SetNeutralPose(self.tongue02_ctl, c.siSRT) self.addToGroup(self.tongue02, "hidden") t = tra.getTransformLookingAt(self.guide.pos["tongueC"], self.guide.pos["tongueTM"], self.normal, "zx", 0) self.tongue03_ctl = self.addCtl(self.tongue02, "tongue03_ctl", t, self.color_fk, "square", w=self.size*.1, d=self.size*.01, ro=self.tmpRot) self.tongue03 = pri.addNull(self.tongue03_ctl, self.getName("tongue03"), t, self.size * .05) self.addShadow(self.tongue03_ctl, "tongue03") xsi.SetNeutralPose(self.tongue03_ctl, c.siSRT) self.addToGroup(self.tongue03, "hidden") t = tra.getTransformLookingAt(self.guide.pos["tongueTM"], self.guide.pos["tongueT"], self.normal, "zx", 0) self.tongue04_ctl = self.addCtl(self.tongue03, "tongue04_ctl", t, self.color_fk, "square", w=self.size*.1, d=self.size*.01, ro=self.tmpRot) self.tongue04 = pri.addNull(self.tongue04_ctl, self.getName("tongue04"), t, self.size * .05) self.addShadow(self.tongue04_ctl, "tongue04") xsi.SetNeutralPose(self.tongue04_ctl, c.siSRT) self.addToGroup(self.tongue04, "hidden") t = tra.getTransformLookingAt(self.guide.pos["tongueT"], self.guide.pos["tongueTM"], self.normal, "zx", 1) self.tongue05_ctl = self.addCtl(self.tongue04, "tongue05_ctl", t, self.color_fk, "square", w=self.size*.1, d=self.size*.01, ro=self.tmpRot) self.tongue05 = pri.addNull(self.tongue05_ctl, self.getName("tongue05"), t, self.size * .05) self.addShadow(self.tongue05_ctl, "tongue05") xsi.SetNeutralPose(self.tongue05_ctl, c.siSRT) self.addToGroup(self.tongue05, "hidden")
def addObjects(self): self.normal = self.guide.blades["blade"].z t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[2], self.normal, "zx", False) offsetRotation = XSIMath.CreateRotation() t.GetRotation(offsetRotation) self.tracking_lvl = pri.addNullFromPos(self.root, self.getName("tracking_lvl"), self.guide.apos[0], self.size * .15) self.addToGroup(self.tracking_lvl, "hidden") self.loc = pri.addNullsFromPositions(self.tracking_lvl, self.getName("#_loc"), self.guide.apos[3:], offsetRotation, self.size * .15) self.addToGroup(self.loc, "hidden") i = 0 self.oDirDriverList = [] self.oDirDrivenList = [] self.oPointerLvlList = [] self.oCornersList = [] self.oUpDownList = [] self.oSidesList = [] for x in self.loc: t = x.Kinematics.Global.Transform self.coners_lvl = pri.addNull(x, self.getName("coners%s_lvl" % i), t, self.size * .15) self.upDown_lvl = pri.addNull(self.coners_lvl, self.getName("upDown%s_lvl" % i), t, self.size * .15) self.sides_lvl = pri.addNull(self.upDown_lvl, self.getName("sides%s_lvl" % i), t, self.size * .15) self.tweak_lvl = pri.addNull(self.sides_lvl, self.getName("tweak%s_lvl" % i), t, self.size * .15) t2 = tra.getTransformLookingAt( self.guide.apos[0], x.Kinematics.Global.Transform.Translation, self.normal, "xy", False) self.oPointer = pri.addNull(self.root, self.getName("pointer%s_loc" % i), t2, self.size * .15) self.oPointerLvl = pri.addNull(self.root, self.getName("pointer%s_lvl" % i), t, self.size * .15) self.shadow = self.addShadow(self.oPointerLvl, "%s" % i) self.oHiddenList = [ self.coners_lvl, self.upDown_lvl, self.sides_lvl, self.oPointer, self.oPointerLvl, self.tweak_lvl ] self.addToGroup(self.oHiddenList, "hidden") self.oDirDriverList.append(self.tweak_lvl) self.oDirDrivenList.append(self.oPointer) self.oPointerLvlList.append(self.oPointerLvl) self.oCornersList.append(self.coners_lvl) self.oUpDownList.append(self.upDown_lvl) self.oSidesList.append(self.sides_lvl) i += 1 self.cornerA_lvl = pri.addNullFromPos(self.root, self.getName("cornerA_lvl"), self.guide.apos[3], self.size * .15) self.cornerA = pri.addNullFromPos(self.cornerA_lvl, self.getName("cornerA"), self.guide.apos[3], self.size * .15) self.addToGroup(self.cornerA_lvl, "hidden") self.addToGroup(self.cornerA, "hidden") self.cornerB_lvl = pri.addNullFromPos(self.root, self.getName("cornerB_lvl"), self.guide.apos[-1], self.size * .15) self.cornerB = pri.addNullFromPos(self.cornerB_lvl, self.getName("cornerB"), self.guide.apos[-1], self.size * .15) self.addToGroup(self.cornerB_lvl, "hidden") self.addToGroup(self.cornerB, "hidden") self.upVec = pri.addNullFromPos(self.root, self.getName("upVec_loc"), self.guide.apos[1], self.size * .15) self.addToGroup(self.upVec, "hidden") self.mediumPosition = self.guide.apos[( (len(self.guide.apos) - 3) // 2) + 3] self.oTempPosY = XSIMath.CreateVector3() self.oTempPosY.X = self.mediumPosition.X self.oTempPosY.Y = self.mediumPosition.Y + 3 self.oTempPosY.Z = self.mediumPosition.Z self.oTempPosZ = XSIMath.CreateVector3() self.oTempPosZ.X = self.mediumPosition.X self.oTempPosZ.Y = self.mediumPosition.Y self.oTempPosZ.Z = self.mediumPosition.Z + 3 t = tra.getTransformLookingAt(self.mediumPosition, self.oTempPosZ, self.oTempPosY, "zy", self.negate) t.RotZ = 0.0 self.control_lvl = pri.addNull(self.root, self.getName("eyelidCtl_lvl"), t, self.size * .15) self.addToGroup(self.control_lvl, "hidden") self.control = self.addCtl(self.control_lvl, "eyelid_ctl", t, self.color_ik, "square", w=self.size * .2)