Пример #1
0
def drawAxis(parent=xsi.ActiveSceneRoot, size=1):

     x_crv = cur.addCurve(parent, parent.Name+"_x", [0,0,0,1,size,0,0,1], False, 1, parent.Kinematics.Global.Transform, [1,0,0])
     y_crv = cur.addCurve(parent, parent.Name+"_y", [0,0,0,1,0,size,0,1], False, 1, parent.Kinematics.Global.Transform, [0,1,0])
     z_crv = cur.addCurve(parent, parent.Name+"_z", [0,0,0,1,0,0,size,1], False, 1, parent.Kinematics.Global.Transform, [0,0,1])

     return [x_crv, y_crv, z_crv]
Пример #2
0
def drawAxis(parent=xsi.ActiveSceneRoot, size=1):

     x_crv = cur.addCurve(parent, parent.Name+"_x", [0,0,0,1,size,0,0,1], False, 1, parent.Kinematics.Global.Transform, [1,0,0])
     y_crv = cur.addCurve(parent, parent.Name+"_y", [0,0,0,1,0,size,0,1], False, 1, parent.Kinematics.Global.Transform, [0,1,0])
     z_crv = cur.addCurve(parent, parent.Name+"_z", [0,0,0,1,0,0,size,1], False, 1, parent.Kinematics.Global.Transform, [0,0,1])

     return [x_crv, y_crv, z_crv]
Пример #3
0
    def create(self, parent, name, t, color=[0,0,0]):

        if len(self.curves["closed"]) == 1:
            obj = cur.addCurve(parent, name, self.curves["cp"], self.curves["closed"][0], self.curves["degree"][0], t, color)
        else:
            obj = cur.addCurve2(parent, name, self.curves["cp"], self.curves["ncp"], self.curves["kn"], self.curves["nkn"], self.curves["closed"], self.curves["degree"], t, color)

        return obj
Пример #4
0
    def create(self, parent, name, t, color=[0,0,0]):

        if len(self.curves["closed"]) == 1:
            obj = cur.addCurve(parent, name, self.curves["cp"], self.curves["closed"][0], self.curves["degree"][0], t, color)
        else:
            obj = cur.addCurve2(parent, name, self.curves["cp"], self.curves["ncp"], self.curves["kn"], self.curves["nkn"], self.curves["closed"], self.curves["degree"], t, color)

        return obj
Пример #5
0
    def addCurve2(self, name, parent, points=[], close=False, degree=1, position=None):

        if name not in self.tra.keys():
            self.tra[name] = tra.getTransformFromPosition(position)

        if name in self.prim.keys():
            crv = self.prim[name].create(parent, self.getName(name), self.tra[name], GUIDE_LOC_COLOR)
        else:
            crv = cur.addCurve(parent, self.getName(name), points, close, degree, self.tra[name], GUIDE_LOC_COLOR)

        return crv
Пример #6
0
    def addCurve2(self,
                  name,
                  parent,
                  points=[],
                  close=False,
                  degree=1,
                  position=None):

        if name not in self.tra.keys():
            self.tra[name] = tra.getTransformFromPosition(position)

        if name in self.prim.keys():
            crv = self.prim[name].create(parent, self.getName(name),
                                         self.tra[name], GUIDE_LOC_COLOR)
        else:
            crv = cur.addCurve(parent, self.getName(name), points, close,
                               degree, self.tra[name], GUIDE_LOC_COLOR)

        return crv
Пример #7
0
    def addObjects(self):

        # Ik Controlers ------------------------------------
        t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1], self.guide.blades["blade"].z, "yx", self.negate)
        self.ik0_ctl = self.addCtl(self.root, "ik0_ctl", t, self.color_ik, "compas", w=self.size)
        par.setKeyableParameters(self.ik0_ctl)
        xsi.SetNeutralPose(self.ik0_ctl)
        par.addLocalParamToCollection(self.inv_params, self.ik0_ctl, ["posx", "roty", "rotz"])
        par.setRotOrder(self.ik0_ctl, "XZY")

        t.SetTranslation(self.guide.apos[1])
        self.ik1_ctl = self.addCtl(self.root, "ik1_ctl", t, self.color_ik, "compas", w=self.size)
        par.setKeyableParameters(self.ik1_ctl)
        xsi.SetNeutralPose(self.ik1_ctl)
        par.addLocalParamToCollection(self.inv_params, self.ik1_ctl, ["posx", "roty", "rotz"])
        par.setRotOrder(self.ik1_ctl, "XZY")

        # Tangent controlers -------------------------------
        t.SetTranslation(vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .33))
        self.tan0_ctl = self.addCtl(self.ik0_ctl, "tan0_ctl", t, self.color_ik, "sphere", w=self.size*.2)
        par.setKeyableParameters(self.tan0_ctl, self.t_params)
        xsi.SetNeutralPose(self.tan0_ctl, c.siTrn)
        par.addLocalParamToCollection(self.inv_params, self.ik1_ctl, ["posx"])

        t.SetTranslation(vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1], .66))
        self.tan1_ctl = self.addCtl(self.ik1_ctl, "tan1_ctl", t, self.color_ik, "sphere", w=self.size*.2)
        par.setKeyableParameters(self.tan1_ctl, self.t_params)
        xsi.SetNeutralPose(self.tan1_ctl, c.siTrn)
        par.addLocalParamToCollection(self.inv_params, self.ik1_ctl, ["posx"])

        # Curves -------------------------------------------
        self.mst_crv = cur.addCnsCurve(self.root, self.getName("mst_crv"), [self.ik0_ctl, self.tan0_ctl, self.tan1_ctl, self.ik1_ctl], False, 3)
        self.slv_crv = cur.addCurve(self.root, self.getName("slv_crv"), [1]*10*4, False, 3)
        self.addToGroup([self.mst_crv, self.slv_crv], "hidden")

        # Division -----------------------------------------
        # The user only define how many intermediate division he wants.
        # First and last divisions are an obligation.
        parentdiv = self.ik0_ctl
        parentctl = self.ik0_ctl
        self.div_cns = []
        self.fk_ctl = []
        for i in range(self.settings["division"]):

            # References
            div_cns = parentdiv.AddNull(self.getName("%s_cns"%i))
            pri.setNullDisplay(div_cns, 1, self.size*.05, 10, 0, 0, 0, 1, 1, 2)
            self.addToGroup(div_cns, "hidden")

            self.div_cns.append(div_cns)
            parentdiv = div_cns

            # Controlers (First and last one are fake)
            if i in [0, self.settings["division"] - 1]:
                fk_ctl = pri.addNull(parentctl, self.getName("%s_loc"%i), parentctl.Kinematics.Global.Transform, self.size*.05)
                self.addToGroup(fk_ctl, "hidden")
            else:
                fk_ctl = self.addCtl(parentctl, "fk%s_ctl"%(i-1), parentctl.Kinematics.Global.Transform, self.color_fk, "cube", w=self.size*1, h=self.size*.05, d=self.size*1)
                self.addToGroup(fk_ctl, "controlers_01")
                par.addLocalParamToCollection(self.inv_params, fk_ctl, ["posx", "roty", "rotz"])
                par.setRotOrder(fk_ctl, "XZY")

            self.fk_ctl.append(fk_ctl)
            parentctl = fk_ctl

            # Deformers (Shadow)
            self.addShadow(fk_ctl, (i))

        # Connections (Hooks) ------------------------------
        self.cnx0 = pri.addNull(self.root, self.getName("0_cnx"), self.root.Kinematics.Global.Transform, self.size*.2)
        self.cnx1 = pri.addNull(self.root, self.getName("1_cnx"), self.root.Kinematics.Global.Transform, self.size*.2)
        self.addToGroup([self.cnx0, self.cnx1], "hidden")
Пример #8
0
    def addObjects(self):

        # Ik Controlers ------------------------------------
        t = tra.getTransformLookingAt(self.guide.pos["tan1"], self.guide.pos["neck"], self.guide.blades["blade"].z, "yx", self.negate)
        t.SetTranslation(self.guide.pos["neck"])
        self.ik_cns = pri.addNull(self.root, self.getName("ik_cns"), t, self.size*.02)
        self.addToGroup(self.ik_cns, "hidden")

        self.ik_ctl = self.addCtl(self.ik_cns, "ik_ctl", t, self.color_ik, "compas", w=self.size*.5)
        par.setKeyableParameters(self.ik_ctl)
        xsi.SetNeutralPose(self.ik_ctl, c.siTrn)

        # Tangents -----------------------------------------
        t.SetTranslation(self.guide.pos["tan1"])
        self.tan1_loc = pri.addNull(self.ik_ctl, self.getName("tan1_loc"), t, self.size*.1)
        par.setKeyableParameters(self.tan1_loc, self.t_params)
        xsi.SetNeutralPose(self.tan1_loc, c.siTrn)
        self.addToGroup(self.tan1_loc, "hidden")
        
        t = tra.getTransformLookingAt(self.guide.pos["root"], self.guide.pos["tan0"], self.guide.blades["blade"].z, "yx", self.negate)
        t.SetTranslation(self.guide.pos["tan0"])
        self.tan0_loc = pri.addNull(self.root, self.getName("tan0_loc"), t, self.size*.1)
        xsi.SetNeutralPose(self.tan0_loc, c.siTrn)
        self.addToGroup(self.tan0_loc, "hidden")

        # Curves -------------------------------------------
        self.mst_crv = cur.addCnsCurve(self.root, self.getName("mst_crv"), [self.root, self.tan0_loc, self.tan1_loc, self.ik_ctl], False, 3)
        self.slv_crv = cur.addCurve(self.root, self.getName("slv_crv"), [1]*10*4, False, 3)
        self.addToGroup([self.mst_crv, self.slv_crv], "hidden")

        # Division -----------------------------------------
        # The user only define how many intermediate division he wants.
        # First and last divisions are an obligation.
        parentdiv = self.root
        parentctl = self.root
        self.div_cns = []
        self.fk_ctl = []
        for i in range(self.settings["division"]):

            # References
            div_cns = parentdiv.AddNull(self.getName("%s_cns"%i))
            pri.setNullDisplay(div_cns, 1, self.size*.05, 10, 0, 0, 0, 1, 1, 2)
            self.addToGroup(div_cns, "hidden")

            self.div_cns.append(div_cns)
            parentdiv = div_cns

            # Controlers
            if i == self.settings["division"]-1:
                fk_ctl = pri.addNull(parentctl, self.getName("fk%s_cns"%i), parentctl.Kinematics.Global.Transform, self.size*.2)
                self.addToGroup(fk_ctl, "hidden")
            else:
                fk_ctl = self.addCtl(parentctl, "fk%s_ctl"%i, parentctl.Kinematics.Global.Transform, self.color_fk, "cube", w=self.size*.5, h=self.size*.05, d=self.size*.5)

            self.fk_ctl.append(fk_ctl)
            parentctl = fk_ctl

            # Deformers (Shadow)
            self.addShadow(fk_ctl, i)

        # Head ---------------------------------------------
        t = tra.getTransformLookingAt(self.guide.pos["head"], self.guide.pos["eff"], self.guide.blades["blade"].z, "yx", self.negate)
        self.head_cns = pri.addNull(self.root, self.getName("head_cns"), t, self.size*.1)
        self.addToGroup(self.head_cns, "hidden")

        dist = vec.getDistance(self.guide.pos["head"], self.guide.pos["eff"])
        self.head_ctl = self.addCtl(self.head_cns, "head_ctl", t, self.color_fk, "cube", w=self.size*.5, h=dist, d=self.size*.5, po=XSIMath.CreateVector3(0,dist*.5,0))

        self.addShadow(self.head_ctl, "head")
Пример #9
0
    def addObjects(self):

        # Ik Controlers ------------------------------------
        t = tra.getTransformLookingAt(self.guide.pos["tan1"],
                                      self.guide.pos["neck"],
                                      self.guide.blades["blade"].z, "yx",
                                      self.negate)
        t.SetTranslation(self.guide.pos["neck"])
        self.ik_cns = pri.addNull(self.root, self.getName("ik_cns"), t,
                                  self.size * .02)
        self.addToGroup(self.ik_cns, "hidden")

        self.ik_ctl = self.addCtl(self.ik_cns,
                                  "ik_ctl",
                                  t,
                                  self.color_ik,
                                  "compas",
                                  w=self.size * .5)
        par.setKeyableParameters(self.ik_ctl)
        xsi.SetNeutralPose(self.ik_ctl, c.siTrn)
        par.setRotOrder(self.ik_ctl, "XZY")

        # Tangents -----------------------------------------
        t.SetTranslation(self.guide.pos["tan1"])
        self.tan1_loc = pri.addNull(self.ik_ctl, self.getName("tan1_loc"), t,
                                    self.size * .1)
        par.setKeyableParameters(self.tan1_loc, self.t_params)
        xsi.SetNeutralPose(self.tan1_loc, c.siTrn)
        self.addToGroup(self.tan1_loc, "hidden")

        t = tra.getTransformLookingAt(self.guide.pos["root"],
                                      self.guide.pos["tan0"],
                                      self.guide.blades["blade"].z, "yx",
                                      self.negate)
        t.SetTranslation(self.guide.pos["tan0"])
        self.tan0_loc = pri.addNull(self.root, self.getName("tan0_loc"), t,
                                    self.size * .1)
        xsi.SetNeutralPose(self.tan0_loc, c.siTrn)
        self.addToGroup(self.tan0_loc, "hidden")

        # Curves -------------------------------------------
        self.mst_crv = cur.addCnsCurve(
            self.root, self.getName("mst_crv"),
            [self.root, self.tan0_loc, self.tan1_loc, self.ik_ctl], False, 3)
        self.slv_crv = cur.addCurve(self.root, self.getName("slv_crv"),
                                    [1] * 10 * 4, False, 3)
        self.addToGroup([self.mst_crv, self.slv_crv], "hidden")

        # Division -----------------------------------------
        # The user only define how many intermediate division he wants.
        # First and last divisions are an obligation.
        parentdiv = self.root
        parentctl = self.root
        self.div_cns = []
        self.fk_ctl = []
        for i in range(self.settings["division"]):

            # References
            div_cns = parentdiv.AddNull(self.getName("%s_cns" % i))
            pri.setNullDisplay(div_cns, 1, self.size * .05, 10, 0, 0, 0, 1, 1,
                               2)
            self.addToGroup(div_cns, "hidden")

            self.div_cns.append(div_cns)
            parentdiv = div_cns

            # Controlers
            if i == self.settings["division"] - 1:
                fk_ctl = pri.addNull(parentctl, self.getName("fk%s_cns" % i),
                                     parentctl.Kinematics.Global.Transform,
                                     self.size * .2)
                self.addToGroup(fk_ctl, "hidden")
            else:
                fk_ctl = self.addCtl(parentctl,
                                     "fk%s_ctl" % i,
                                     parentctl.Kinematics.Global.Transform,
                                     self.color_fk,
                                     "cube",
                                     w=self.size * .5,
                                     h=self.size * .05,
                                     d=self.size * .5)
                par.setRotOrder(fk_ctl, "XZY")

            self.fk_ctl.append(fk_ctl)
            parentctl = fk_ctl

            # Deformers (Shadow)
            self.addShadow(fk_ctl, i)

        # Head ---------------------------------------------
        t = tra.getTransformLookingAt(self.guide.pos["head"],
                                      self.guide.pos["eff"],
                                      self.guide.blades["blade"].z, "yx",
                                      self.negate)
        self.head_cns = pri.addNull(self.root, self.getName("head_cns"), t,
                                    self.size * .1)
        self.addToGroup(self.head_cns, "hidden")

        dist = vec.getDistance(self.guide.pos["head"], self.guide.pos["eff"])
        self.head_ctl = self.addCtl(self.head_cns,
                                    "head_ctl",
                                    t,
                                    self.color_fk,
                                    "cube",
                                    w=self.size * .5,
                                    h=dist,
                                    d=self.size * .5,
                                    po=XSIMath.CreateVector3(0, dist * .5, 0))
        par.setRotOrder(self.head_ctl, "XZY")

        self.addShadow(self.head_ctl, "head")
Пример #10
0
    def addObjects(self):

        # Ik Controlers ------------------------------------
        t = tra.getTransformLookingAt(self.guide.apos[0], self.guide.apos[1],
                                      self.guide.blades["blade"].z, "yx",
                                      self.negate)
        self.ik0_ctl = self.addCtl(self.root,
                                   "ik0_ctl",
                                   t,
                                   self.color_ik,
                                   "compas",
                                   w=self.size)
        par.setKeyableParameters(self.ik0_ctl)
        xsi.SetNeutralPose(self.ik0_ctl)
        par.addLocalParamToCollection(self.inv_params, self.ik0_ctl,
                                      ["posx", "roty", "rotz"])
        par.setRotOrder(self.ik0_ctl, "XZY")

        t.SetTranslation(self.guide.apos[1])
        self.ik1_ctl = self.addCtl(self.root,
                                   "ik1_ctl",
                                   t,
                                   self.color_ik,
                                   "compas",
                                   w=self.size)
        par.setKeyableParameters(self.ik1_ctl)
        xsi.SetNeutralPose(self.ik1_ctl)
        par.addLocalParamToCollection(self.inv_params, self.ik1_ctl,
                                      ["posx", "roty", "rotz"])
        par.setRotOrder(self.ik1_ctl, "XZY")

        # Tangent controlers -------------------------------
        t.SetTranslation(
            vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1],
                                    .33))
        self.tan0_ctl = self.addCtl(self.ik0_ctl,
                                    "tan0_ctl",
                                    t,
                                    self.color_ik,
                                    "sphere",
                                    w=self.size * .2)
        par.setKeyableParameters(self.tan0_ctl, self.t_params)
        xsi.SetNeutralPose(self.tan0_ctl, c.siTrn)
        par.addLocalParamToCollection(self.inv_params, self.ik1_ctl, ["posx"])

        t.SetTranslation(
            vec.linearlyInterpolate(self.guide.apos[0], self.guide.apos[1],
                                    .66))
        self.tan1_ctl = self.addCtl(self.ik1_ctl,
                                    "tan1_ctl",
                                    t,
                                    self.color_ik,
                                    "sphere",
                                    w=self.size * .2)
        par.setKeyableParameters(self.tan1_ctl, self.t_params)
        xsi.SetNeutralPose(self.tan1_ctl, c.siTrn)
        par.addLocalParamToCollection(self.inv_params, self.ik1_ctl, ["posx"])

        # Curves -------------------------------------------
        self.mst_crv = cur.addCnsCurve(
            self.root, self.getName("mst_crv"),
            [self.ik0_ctl, self.tan0_ctl, self.tan1_ctl, self.ik1_ctl], False,
            3)
        self.slv_crv = cur.addCurve(self.root, self.getName("slv_crv"),
                                    [1] * 10 * 4, False, 3)
        self.addToGroup([self.mst_crv, self.slv_crv], "hidden")

        # Division -----------------------------------------
        # The user only define how many intermediate division he wants.
        # First and last divisions are an obligation.
        parentdiv = self.ik0_ctl
        parentctl = self.ik0_ctl
        self.div_cns = []
        self.fk_ctl = []
        for i in range(self.settings["division"]):

            # References
            div_cns = parentdiv.AddNull(self.getName("%s_cns" % i))
            pri.setNullDisplay(div_cns, 1, self.size * .05, 10, 0, 0, 0, 1, 1,
                               2)
            self.addToGroup(div_cns, "hidden")

            self.div_cns.append(div_cns)
            parentdiv = div_cns

            # Controlers (First and last one are fake)
            if i in [0, self.settings["division"] - 1]:
                fk_ctl = pri.addNull(parentctl, self.getName("%s_loc" % i),
                                     parentctl.Kinematics.Global.Transform,
                                     self.size * .05)
                self.addToGroup(fk_ctl, "hidden")
            else:
                fk_ctl = self.addCtl(parentctl,
                                     "fk%s_ctl" % (i - 1),
                                     parentctl.Kinematics.Global.Transform,
                                     self.color_fk,
                                     "cube",
                                     w=self.size * 1,
                                     h=self.size * .05,
                                     d=self.size * 1)
                self.addToGroup(fk_ctl, "controlers_01")
                par.addLocalParamToCollection(self.inv_params, fk_ctl,
                                              ["posx", "roty", "rotz"])
                par.setRotOrder(fk_ctl, "XZY")

            self.fk_ctl.append(fk_ctl)
            parentctl = fk_ctl

            # Deformers (Shadow)
            self.addShadow(fk_ctl, (i))

        # Connections (Hooks) ------------------------------
        self.cnx0 = pri.addNull(self.root, self.getName("0_cnx"),
                                self.root.Kinematics.Global.Transform,
                                self.size * .2)
        self.cnx1 = pri.addNull(self.root, self.getName("1_cnx"),
                                self.root.Kinematics.Global.Transform,
                                self.size * .2)
        self.addToGroup([self.cnx0, self.cnx1], "hidden")