Beispiel #1
0
    def createSpiralCurve(self, baseCurve, numRounds, radius, profileScale):

        surfaceCV = float(numRounds+2)*(float(numRounds+2)/2.0)
        
        # duplicate curve and get the maxValue
        cmds.select(baseCurve, r=True)
        curveMaxValue = cmds.getAttr(baseCurve+".maxValue")
        cmds.rebuildCurve(ch=0, rpo=1, rt=0, end=1, kr=2, kcp=0, kep=1, kt=0, s=0, d=3)
        # create a circle profile
        profile = cmds.circle(nr=[0, 1, 0], c=[0, 0, 0], r=radius)
        # put it at the start of the baseCurve
        cmds.pathAnimation(profile, fm=True, f=True, fa="y", ua="x", wut=4, wu=[0, 1, 0], c=baseCurve)
        # extrude the profile
        extrudesurface = cmds.extrude(profile[0], baseCurve, et=2, sc=profileScale)
        # curve on surface
        curveonsurface = cmds.curveOnSurface(extrudesurface, append=False, uv=(0, 0))
        
        y = 0.0
        for i in range(int(surfaceCV)):
            y += curveMaxValue/surfaceCV
            x = math.fmod(y*2*surfaceCV/curveMaxValue, 8)
            #print x, y
            cmds.curveOnSurface(curveonsurface, append=True, uv=(x, y))
            
        # duplicate the created curve
        cmds.duplicateCurve(ch = False)
        cmds.rename("duplicated_"+baseCurve)
        spiralCurve = cmds.ls(sl = True)
        cmds.rebuildCurve(ch=0, rpo=1, rt=0, end=1, kr=2, kcp=0, kep=1, kt=0, s=0, d=3)
        # create wire
        #cmds.wire(spiralCurve, dds = [(0, 100)], gw = True, en = 1.0, ce = 0.0, li = 0.0, w = baseCurve)
        #cmds.pickWalk(d = "up")
        cmds.select(spiralCurve, r = True)
        arcCurveGroup = cmds.group(n = "spiralCurveWire"+baseCurve+"___GRP")
        
        #delete unused nodes
        cmds.delete(profile)
        cmds.delete(extrudesurface[0])    
        
        #print "spiral curve created."
    
        return spiralCurve, arcCurveGroup
    def testAnimNurbsPlaneWrite(self, wfg=False):

        ret = MayaCmds.nurbsPlane(p=(0, 0, 0), ax=(0, 1, 0), w=1, lr=1, d=3, u=5, v=5, ch=0)
        name = ret[0]

        MayaCmds.lattice(name, dv=(4, 5, 4), oc=True)
        MayaCmds.select("ffd1Lattice.pt[1:2][0:4][1:2]", r=True)

        MayaCmds.currentTime(1, update=True)
        MayaCmds.setKeyframe()
        MayaCmds.currentTime(24, update=True)
        MayaCmds.setKeyframe()
        MayaCmds.currentTime(12, update=True)
        MayaCmds.move(0, 0.18, 0, r=True)
        MayaCmds.scale(2.5, 1.0, 2.5, r=True)
        MayaCmds.setKeyframe()

        MayaCmds.curveOnSurface(
            name,
            uv=((0.597523, 0), (0.600359, 0.271782), (0.538598, 0.564218), (0.496932, 0.779936), (0.672153, 1)),
            k=(0, 0, 0, 0.263463, 0.530094, 0.530094, 0.530094),
        )

        curvename = MayaCmds.curveOnSurface(
            name,
            uv=(
                (0.170718, 0.565967),
                (0.0685088, 0.393034),
                (0.141997, 0.206296),
                (0.95, 0.230359),
                (0.36264, 0.441381),
                (0.251243, 0.569889),
            ),
            k=(0, 0, 0, 0.200545, 0.404853, 0.598957, 0.598957, 0.598957),
        )
        MayaCmds.closeCurve(curvename, ch=1, ps=1, rpo=1, bb=0.5, bki=0, p=0.1, cos=1)

        MayaCmds.trim(name, lu=0.23, lv=0.39)

        degreeU = MayaCmds.getAttr(name + ".degreeU")
        degreeV = MayaCmds.getAttr(name + ".degreeV")
        spansU = MayaCmds.getAttr(name + ".spansU")
        spansV = MayaCmds.getAttr(name + ".spansV")
        formU = MayaCmds.getAttr(name + ".formU")
        formV = MayaCmds.getAttr(name + ".formV")
        minU = MayaCmds.getAttr(name + ".minValueU")
        maxU = MayaCmds.getAttr(name + ".maxValueU")
        minV = MayaCmds.getAttr(name + ".minValueV")
        maxV = MayaCmds.getAttr(name + ".maxValueV")

        MayaCmds.createNode("surfaceInfo")
        MayaCmds.connectAttr(name + ".worldSpace", "surfaceInfo1.inputSurface", force=True)

        MayaCmds.currentTime(1, update=True)
        controlPoints = MayaCmds.getAttr("surfaceInfo1.controlPoints[*]")
        knotsU = MayaCmds.getAttr("surfaceInfo1.knotsU[*]")
        knotsV = MayaCmds.getAttr("surfaceInfo1.knotsV[*]")

        MayaCmds.currentTime(12, update=True)
        controlPoints2 = MayaCmds.getAttr("surfaceInfo1.controlPoints[*]")
        knotsU2 = MayaCmds.getAttr("surfaceInfo1.knotsU[*]")
        knotsV2 = MayaCmds.getAttr("surfaceInfo1.knotsV[*]")

        if wfg:
            self.__files.append(util.expandFileName("testAnimNurbsPlane.abc"))

            MayaCmds.AbcExport(
                j="-fr 1 24 -frs -0.25 -frs 0.0 -frs 0.25 -wfg -root %s -file %s" % (name, self.__files[-1])
            )

            # reading test
            MayaCmds.AbcImport(self.__files[-1], mode="open")
        else:
            self.__files.append(util.expandFileName("testAnimNurbsPlane.abc"))
            self.__files.append(util.expandFileName("testAnimNurbsPlane01_14.abc"))
            self.__files.append(util.expandFileName("testAnimNurbsPlane15_24.abc"))

            MayaCmds.AbcExport(j="-fr 1 14 -root %s -file %s" % (name, self.__files[-2]))
            MayaCmds.AbcExport(j="-fr 15 24 -root %s -file %s" % (name, self.__files[-1]))

            # use AbcStitcher to combine two files into one
            subprocess.call(self.__abcStitcher + self.__files[-3:])

            # reading test
            MayaCmds.AbcImport(self.__files[-3], mode="open")

        self.failUnlessEqual(degreeU, MayaCmds.getAttr(name + ".degreeU"))
        self.failUnlessEqual(degreeV, MayaCmds.getAttr(name + ".degreeV"))
        self.failUnlessEqual(spansU, MayaCmds.getAttr(name + ".spansU"))
        self.failUnlessEqual(spansV, MayaCmds.getAttr(name + ".spansV"))
        self.failUnlessEqual(formU, MayaCmds.getAttr(name + ".formU"))
        self.failUnlessEqual(formV, MayaCmds.getAttr(name + ".formV"))
        self.failUnlessEqual(minU, MayaCmds.getAttr(name + ".minValueU"))
        self.failUnlessEqual(maxU, MayaCmds.getAttr(name + ".maxValueU"))
        self.failUnlessEqual(minV, MayaCmds.getAttr(name + ".minValueV"))
        self.failUnlessEqual(maxV, MayaCmds.getAttr(name + ".maxValueV"))

        MayaCmds.createNode("surfaceInfo")
        MayaCmds.connectAttr(name + ".worldSpace", "surfaceInfo1.inputSurface", force=True)

        MayaCmds.currentTime(1, update=True)
        errmsg = "At frame #1, Nurbs Plane's control point #%d.%s not equal"
        for i in range(0, len(controlPoints)):
            cp1 = controlPoints[i]
            cp2 = MayaCmds.getAttr("surfaceInfo1.controlPoints[%d]" % (i))
            self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, "x"))
            self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, "y"))
            self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, "z"))

        errmsg = "At frame #1, Nurbs Plane's control knotsU #%d not equal"
        for i in range(0, len(knotsU)):
            ku1 = knotsU[i]
            ku2 = MayaCmds.getAttr("surfaceInfo1.knotsU[%d]" % (i))
            self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i))

        errmsg = "At frame #1, Nurbs Plane's control knotsV #%d not equal"
        for i in range(0, len(knotsV)):
            kv1 = knotsV[i]
            kv2 = MayaCmds.getAttr("surfaceInfo1.knotsV[%d]" % (i))
            self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i))

        MayaCmds.currentTime(12, update=True)
        errmsg = "At frame #12, Nurbs Plane's control point #%d.%s not equal"
        for i in range(0, len(controlPoints2)):
            cp1 = controlPoints2[i]
            cp2 = MayaCmds.getAttr("surfaceInfo1.controlPoints[%d]" % (i))
            self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, "x"))
            self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, "y"))
            self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, "z"))

        errmsg = "At frame #12, Nurbs Plane's control knotsU #%d not equal"
        for i in range(0, len(knotsU2)):
            ku1 = knotsU2[i]
            ku2 = MayaCmds.getAttr("surfaceInfo1.knotsU[%d]" % (i))
            self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i))

        errmsg = "At frame #12, Nurbs Plane's control knotsV #%d not equal"
        for i in range(0, len(knotsV2)):
            kv1 = knotsV2[i]
            kv2 = MayaCmds.getAttr("surfaceInfo1.knotsV[%d]" % (i))
            self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i))

        MayaCmds.currentTime(24, update=True)
        errmsg = "At frame #24, Nurbs Plane's control point #%d.%s not equal"
        for i in range(0, len(controlPoints)):
            cp1 = controlPoints[i]
            cp2 = MayaCmds.getAttr("surfaceInfo1.controlPoints[%d]" % (i))
            self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, "x"))
            self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, "y"))
            self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, "z"))

        errmsg = "At frame #24, Nurbs Plane's control knotsU #%d not equal"
        for i in range(0, len(knotsU)):
            ku1 = knotsU[i]
            ku2 = MayaCmds.getAttr("surfaceInfo1.knotsU[%d]" % (i))
            self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i))

        errmsg = "At frame #24, Nurbs Plane's control knotsV #%d not equal"
        for i in range(0, len(knotsV)):
            kv1 = knotsV[i]
            kv2 = MayaCmds.getAttr("surfaceInfo1.knotsV[%d]" % (i))
            self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i))
Beispiel #3
0
    def testAnimNurbsPlaneWrite(self, wfg=False):

        ret = MayaCmds.nurbsPlane(p=(0, 0, 0), ax=(0, 1, 0), w=1, lr=1, d=3,
            u=5, v=5, ch=0)
        name = ret[0]

        MayaCmds.lattice(name, dv=(4, 5, 4), oc=True)
        MayaCmds.select('ffd1Lattice.pt[1:2][0:4][1:2]', r=True)

        MayaCmds.currentTime(1, update=True)
        MayaCmds.setKeyframe()
        MayaCmds.currentTime(24, update=True)
        MayaCmds.setKeyframe()
        MayaCmds.currentTime(12, update=True)
        MayaCmds.move(0, 0.18, 0, r=True)
        MayaCmds.scale(2.5, 1.0, 2.5, r=True)
        MayaCmds.setKeyframe()

        MayaCmds.curveOnSurface(name,
            uv=((0.597523, 0), (0.600359, 0.271782), (0.538598, 0.564218),
                (0.496932, 0.779936), (0.672153, 1)),
            k=(0, 0, 0, 0.263463, 0.530094, 0.530094, 0.530094))

        curvename = MayaCmds.curveOnSurface(name,
            uv=((0.170718, 0.565967), (0.0685088, 0.393034), (0.141997, 0.206296),
                (0.95, 0.230359), (0.36264, 0.441381), (0.251243, 0.569889)),
            k=(0, 0, 0, 0.200545, 0.404853, 0.598957, 0.598957, 0.598957))
        MayaCmds.closeCurve(curvename, ch=1, ps=1, rpo=1, bb=0.5, bki=0, p=0.1,
            cos=1)

        MayaCmds.trim(name, lu=0.23, lv=0.39)

        degreeU = MayaCmds.getAttr(name + '.degreeU')
        degreeV = MayaCmds.getAttr(name + '.degreeV')
        spansU = MayaCmds.getAttr(name + '.spansU')
        spansV = MayaCmds.getAttr(name + '.spansV')
        formU = MayaCmds.getAttr(name + '.formU')
        formV = MayaCmds.getAttr(name + '.formV')
        minU = MayaCmds.getAttr(name + '.minValueU')
        maxU = MayaCmds.getAttr(name + '.maxValueU')
        minV = MayaCmds.getAttr(name + '.minValueV')
        maxV = MayaCmds.getAttr(name + '.maxValueV')

        MayaCmds.createNode('surfaceInfo')
        MayaCmds.connectAttr(name + '.worldSpace', 'surfaceInfo1.inputSurface',
            force=True)

        MayaCmds.currentTime(1, update=True)
        controlPoints = MayaCmds.getAttr('surfaceInfo1.controlPoints[*]')
        knotsU = MayaCmds.getAttr('surfaceInfo1.knotsU[*]')
        knotsV = MayaCmds.getAttr('surfaceInfo1.knotsV[*]')

        MayaCmds.currentTime(12, update=True)
        controlPoints2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[*]')
        knotsU2 = MayaCmds.getAttr('surfaceInfo1.knotsU[*]')
        knotsV2 = MayaCmds.getAttr('surfaceInfo1.knotsV[*]')

        if wfg:
            self.__files.append(util.expandFileName('testAnimNurbsPlane.abc'))

            MayaCmds.AbcExport(j='-fr 1 24 -frs -0.25 -frs 0.0 -frs 0.25 -wfg -root %s -file %s' % (name, self.__files[-1]))

            # reading test
            MayaCmds.AbcImport(self.__files[-1], mode='open')
        else:
            self.__files.append(util.expandFileName('testAnimNurbsPlane.abc'))
            self.__files.append(util.expandFileName('testAnimNurbsPlane01_14.abc'))
            self.__files.append(util.expandFileName('testAnimNurbsPlane15_24.abc'))

            MayaCmds.AbcExport(j='-fr 1 14 -root %s -file %s' % (name, self.__files[-2]))
            MayaCmds.AbcExport(j='-fr 15 24 -root %s -file %s' % (name, self.__files[-1]))

            # use AbcStitcher to combine two files into one
            subprocess.call(self.__abcStitcher + self.__files[-3:])

            # reading test
            MayaCmds.AbcImport(self.__files[-3], mode='open')

        self.failUnlessEqual(degreeU, MayaCmds.getAttr(name + '.degreeU'))
        self.failUnlessEqual(degreeV, MayaCmds.getAttr(name + '.degreeV'))
        self.failUnlessEqual(spansU, MayaCmds.getAttr(name + '.spansU'))
        self.failUnlessEqual(spansV, MayaCmds.getAttr(name + '.spansV'))
        self.failUnlessEqual(formU, MayaCmds.getAttr(name + '.formU'))
        self.failUnlessEqual(formV, MayaCmds.getAttr(name + '.formV'))
        self.failUnlessEqual(minU, MayaCmds.getAttr(name + '.minValueU'))
        self.failUnlessEqual(maxU, MayaCmds.getAttr(name + '.maxValueU'))
        self.failUnlessEqual(minV, MayaCmds.getAttr(name + '.minValueV'))
        self.failUnlessEqual(maxV, MayaCmds.getAttr(name + '.maxValueV'))

        MayaCmds.createNode('surfaceInfo')
        MayaCmds.connectAttr(name + '.worldSpace', 'surfaceInfo1.inputSurface',
            force=True)

        MayaCmds.currentTime(1, update=True)
        errmsg = "At frame #1, Nurbs Plane's control point #%d.%s not equal"
        for i in range(0, len(controlPoints)):
            cp1 = controlPoints[i]
            cp2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[%d]' % (i))
            self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, 'x'))
            self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, 'y'))
            self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, 'z'))

        errmsg = "At frame #1, Nurbs Plane's control knotsU #%d not equal"
        for i in range(0, len(knotsU)):
            ku1 = knotsU[i]
            ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % (i))
            self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i))

        errmsg = "At frame #1, Nurbs Plane's control knotsV #%d not equal"
        for i in range(0, len(knotsV)):
            kv1 = knotsV[i]
            kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % (i))
            self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i))

        MayaCmds.currentTime(12, update=True)
        errmsg = "At frame #12, Nurbs Plane's control point #%d.%s not equal"
        for i in range(0, len(controlPoints2)):
            cp1 = controlPoints2[i]
            cp2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[%d]' % (i))
            self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, 'x'))
            self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, 'y'))
            self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, 'z'))

        errmsg = "At frame #12, Nurbs Plane's control knotsU #%d not equal"
        for i in range(0, len(knotsU2)):
            ku1 = knotsU2[i]
            ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % (i))
            self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i))

        errmsg = "At frame #12, Nurbs Plane's control knotsV #%d not equal"
        for i in range(0, len(knotsV2)):
            kv1 = knotsV2[i]
            kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % (i))
            self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i))

        MayaCmds.currentTime(24, update=True)
        errmsg = "At frame #24, Nurbs Plane's control point #%d.%s not equal"
        for i in range(0, len(controlPoints)):
            cp1 = controlPoints[i]
            cp2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[%d]' % (i))
            self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3, errmsg % (i, 'x'))
            self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3, errmsg % (i, 'y'))
            self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3, errmsg % (i, 'z'))

        errmsg = "At frame #24, Nurbs Plane's control knotsU #%d not equal"
        for i in range(0, len(knotsU)):
            ku1 = knotsU[i]
            ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % (i))
            self.failUnlessAlmostEqual(ku1, ku2, 3, errmsg % (i))

        errmsg = "At frame #24, Nurbs Plane's control knotsV #%d not equal"
        for i in range(0, len(knotsV)):
            kv1 = knotsV[i]
            kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % (i))
            self.failUnlessAlmostEqual(kv1, kv2, 3, errmsg % (i))
Beispiel #4
0
    def testStaticNurbsPlaneWithOneSegmentTrimReadWrite(self):

        ret = MayaCmds.nurbsPlane(p=(0, 0, 0),
                                  ax=(0, 1, 0),
                                  w=1,
                                  lr=1,
                                  d=3,
                                  u=5,
                                  v=5,
                                  ch=0)

        name = ret[0]

        MayaCmds.curveOnSurface(name,
                                uv=((0.597523, 0), (0.600359, 0.271782),
                                    (0.538598, 0.564218), (0.496932, 0.779936),
                                    (0.672153, 1)),
                                k=(0, 0, 0, 0.263463, 0.530094, 0.530094,
                                   0.530094))
        MayaCmds.trim(name, lu=0.68, lv=0.39)

        degreeU = MayaCmds.getAttr(name + '.degreeU')
        degreeV = MayaCmds.getAttr(name + '.degreeV')
        spansU = MayaCmds.getAttr(name + '.spansU')
        spansV = MayaCmds.getAttr(name + '.spansV')
        minU = MayaCmds.getAttr(name + '.minValueU')
        maxU = MayaCmds.getAttr(name + '.maxValueU')
        minV = MayaCmds.getAttr(name + '.minValueV')
        maxV = MayaCmds.getAttr(name + '.maxValueV')

        MayaCmds.createNode('surfaceInfo')
        MayaCmds.connectAttr(name + '.worldSpace',
                             'surfaceInfo1.inputSurface',
                             force=True)

        controlPoints = MayaCmds.getAttr('surfaceInfo1.controlPoints[*]')
        knotsU = MayaCmds.getAttr('surfaceInfo1.knotsU[*]')
        knotsV = MayaCmds.getAttr('surfaceInfo1.knotsV[*]')

        self.__files.append(
            util.expandFileName('testStaticNurbsPlaneWithOneSegmentTrim.abc'))
        MayaCmds.AbcExport(j='-root %s -f %s' % (name, self.__files[-1]))

        # reading test
        MayaCmds.AbcImport(self.__files[-1], mode='open')

        self.failUnlessEqual(degreeU, MayaCmds.getAttr(name + '.degreeU'))
        self.failUnlessEqual(degreeV, MayaCmds.getAttr(name + '.degreeV'))
        self.failUnlessEqual(spansU, MayaCmds.getAttr(name + '.spansU'))
        self.failUnlessEqual(spansV, MayaCmds.getAttr(name + '.spansV'))
        self.failUnlessEqual(0, MayaCmds.getAttr(name + '.formU'))
        self.failUnlessEqual(0, MayaCmds.getAttr(name + '.formV'))
        self.failUnlessEqual(minU, MayaCmds.getAttr(name + '.minValueU'))
        self.failUnlessEqual(maxU, MayaCmds.getAttr(name + '.maxValueU'))
        self.failUnlessEqual(minV, MayaCmds.getAttr(name + '.minValueV'))
        self.failUnlessEqual(maxV, MayaCmds.getAttr(name + '.maxValueV'))

        MayaCmds.createNode('surfaceInfo')
        MayaCmds.connectAttr(name + '.worldSpace',
                             'surfaceInfo1.inputSurface',
                             force=True)

        for i in range(0, len(controlPoints)):
            cp1 = controlPoints[i]
            cp2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[%d]' % i)
            self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3,
                                       'control point [%d].x not equal' % i)
            self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3,
                                       'control point [%d].y not equal' % i)
            self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3,
                                       'control point [%d].z not equal' % i)

        for i in range(0, len(knotsU)):
            ku1 = knotsU[i]
            ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % i)
            self.failUnlessAlmostEqual(ku1, ku2, 3,
                                       'control knotsU # %d not equal' % i)

        for i in range(0, len(knotsV)):
            kv1 = knotsV[i]
            kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % i)
            self.failUnlessAlmostEqual(kv1, kv2, 3,
                                       'control knotsV # %d not equal' % i)
Beispiel #5
0
def testStaticNurbsWithOneCloseCurveTrim(self, surfacetype, abcFileName,
                                         trimtype):

    if (surfacetype == 0):
        ret = MayaCmds.nurbsPlane(p=(0, 0, 0),
                                  ax=(0, 1, 0),
                                  w=1,
                                  lr=1,
                                  d=3,
                                  u=5,
                                  v=5,
                                  ch=0)
    elif (surfacetype == 1):
        ret = MayaCmds.sphere(p=(0, 0, 0),
                              ax=(0, 1, 0),
                              ssw=0,
                              esw=360,
                              r=1,
                              d=3,
                              ut=0,
                              tol=0.01,
                              s=8,
                              nsp=4,
                              ch=0)
    elif (surfacetype == 2):
        ret = MayaCmds.torus(p=(0, 0, 0),
                             ax=(0, 1, 0),
                             ssw=0,
                             esw=360,
                             msw=360,
                             r=1,
                             hr=0.5,
                             ch=0)

    name = ret[0]

    MayaCmds.curveOnSurface(name,
                            uv=((0.170718, 0.565967), (0.0685088, 0.393034),
                                (0.141997, 0.206296), (0.95, 0.230359),
                                (0.36264, 0.441381), (0.251243, 0.569889)),
                            k=(0, 0, 0, 0.200545, 0.404853, 0.598957, 0.598957,
                               0.598957))
    MayaCmds.closeCurve(name + '->curve1',
                        ch=1,
                        ps=1,
                        rpo=1,
                        bb=0.5,
                        bki=0,
                        p=0.1,
                        cos=1)

    if trimtype == 0:
        MayaCmds.trim(name, lu=0.68, lv=0.39)
    elif 1:
        MayaCmds.trim(name, lu=0.267062, lv=0.39475)

    degreeU = MayaCmds.getAttr(name + '.degreeU')
    degreeV = MayaCmds.getAttr(name + '.degreeV')
    spansU = MayaCmds.getAttr(name + '.spansU')
    spansV = MayaCmds.getAttr(name + '.spansV')
    formU = MayaCmds.getAttr(name + '.formU')
    formV = MayaCmds.getAttr(name + '.formV')
    minU = MayaCmds.getAttr(name + '.minValueU')
    maxU = MayaCmds.getAttr(name + '.maxValueU')
    minV = MayaCmds.getAttr(name + '.minValueV')
    maxV = MayaCmds.getAttr(name + '.maxValueV')

    surfaceInfoNode = MayaCmds.createNode('surfaceInfo')
    MayaCmds.connectAttr(name + '.worldSpace',
                         surfaceInfoNode + '.inputSurface',
                         force=True)

    controlPoints = MayaCmds.getAttr(surfaceInfoNode + '.controlPoints[*]')
    knotsU = MayaCmds.getAttr(surfaceInfoNode + '.knotsU[*]')
    knotsV = MayaCmds.getAttr(surfaceInfoNode + '.knotsV[*]')

    MayaCmds.AbcExport(j='-root %s -f %s' % (name, abcFileName))
    MayaCmds.AbcImport(abcFileName, mode='open')

    self.failUnlessEqual(degreeU, MayaCmds.getAttr(name + '.degreeU'))
    self.failUnlessEqual(degreeV, MayaCmds.getAttr(name + '.degreeV'))
    self.failUnlessEqual(spansU, MayaCmds.getAttr(name + '.spansU'))
    self.failUnlessEqual(spansV, MayaCmds.getAttr(name + '.spansV'))
    self.failUnlessEqual(minU, MayaCmds.getAttr(name + '.minValueU'))
    self.failUnlessEqual(maxU, MayaCmds.getAttr(name + '.maxValueU'))
    self.failUnlessEqual(minV, MayaCmds.getAttr(name + '.minValueV'))
    self.failUnlessEqual(maxV, MayaCmds.getAttr(name + '.maxValueV'))

    surfaceInfoNode = MayaCmds.createNode('surfaceInfo')
    MayaCmds.connectAttr(name + '.worldSpace',
                         surfaceInfoNode + '.inputSurface',
                         force=True)

    controlPoints2 = MayaCmds.getAttr(surfaceInfoNode + '.controlPoints[*]')
    self.failUnlessEqual(len(controlPoints), len(controlPoints2))
    for i in range(0, len(controlPoints)):
        cp1 = controlPoints[i]
        cp2 = controlPoints2[i]
        self.failUnlessAlmostEqual(cp1[0], cp2[0], 3, 'cp[%d].x not equal' % i)
        self.failUnlessAlmostEqual(cp1[1], cp2[1], 3, 'cp[%d].y not equal' % i)
        self.failUnlessAlmostEqual(cp1[2], cp2[2], 3, 'cp[%d].z not equal' % i)

    for i in range(0, len(knotsU)):
        ku1 = knotsU[i]
        ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % i)
        self.failUnlessAlmostEqual(ku1, ku2, 3,
                                   'control knotsU # %d not equal' % i)

    for i in range(0, len(knotsV)):
        kv1 = knotsV[i]
        kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % i)
        self.failUnlessAlmostEqual(kv1, kv2, 3,
                                   'control knotsV # %d not equal' % i)
    def testStaticNurbsPlaneWithOneSegmentTrimReadWrite(self):

        ret  = MayaCmds.nurbsPlane(p=(0, 0, 0), ax=(0, 1, 0), w=1, lr=1, d=3,
            u=5, v=5, ch=0)

        name = ret[0]

        MayaCmds.curveOnSurface(name, uv=((0.597523,0), (0.600359,0.271782),
            (0.538598,0.564218), (0.496932,0.779936),  (0.672153,1)),
            k=(0,0,0,0.263463,0.530094,0.530094,0.530094))
        MayaCmds.trim(name, lu=0.68, lv=0.39)

        degreeU = MayaCmds.getAttr(name+'.degreeU')
        degreeV = MayaCmds.getAttr(name+'.degreeV')
        spansU = MayaCmds.getAttr(name+'.spansU')
        spansV = MayaCmds.getAttr(name+'.spansV')
        minU = MayaCmds.getAttr(name+'.minValueU')
        maxU = MayaCmds.getAttr(name+'.maxValueU')
        minV = MayaCmds.getAttr(name+'.minValueV')
        maxV = MayaCmds.getAttr(name+'.maxValueV')

        MayaCmds.createNode('surfaceInfo')
        MayaCmds.connectAttr(name+'.worldSpace', 'surfaceInfo1.inputSurface',
            force=True)

        controlPoints = MayaCmds.getAttr('surfaceInfo1.controlPoints[*]')
        knotsU = MayaCmds.getAttr('surfaceInfo1.knotsU[*]')
        knotsV = MayaCmds.getAttr('surfaceInfo1.knotsV[*]')

        self.__files.append(util.expandFileName('testStaticNurbsPlaneWithOneSegmentTrim.abc'))
        MayaCmds.AbcExport(j='-root %s -f %s' % (name, self.__files[-1]))

        # reading test
        MayaCmds.AbcImport(self.__files[-1], mode='open')

        self.failUnlessEqual(degreeU, MayaCmds.getAttr(name+'.degreeU'))
        self.failUnlessEqual(degreeV, MayaCmds.getAttr(name+'.degreeV'))
        self.failUnlessEqual(spansU, MayaCmds.getAttr(name+'.spansU'))
        self.failUnlessEqual(spansV, MayaCmds.getAttr(name+'.spansV'))
        self.failUnlessEqual(0, MayaCmds.getAttr(name+'.formU'))
        self.failUnlessEqual(0, MayaCmds.getAttr(name+'.formV'))
        self.failUnlessEqual(minU, MayaCmds.getAttr(name+'.minValueU'))
        self.failUnlessEqual(maxU, MayaCmds.getAttr(name+'.maxValueU'))
        self.failUnlessEqual(minV, MayaCmds.getAttr(name+'.minValueV'))
        self.failUnlessEqual(maxV, MayaCmds.getAttr(name+'.maxValueV'))

        MayaCmds.createNode('surfaceInfo')
        MayaCmds.connectAttr(name+'.worldSpace', 'surfaceInfo1.inputSurface',
            force=True)

        for i in range(0, len(controlPoints)):
            cp1 = controlPoints[i]
            cp2 = MayaCmds.getAttr('surfaceInfo1.controlPoints[%d]' % i)
            self.failUnlessAlmostEqual(cp1[0], cp2[0][0], 3,
                'control point [%d].x not equal' % i)
            self.failUnlessAlmostEqual(cp1[1], cp2[0][1], 3,
                'control point [%d].y not equal' % i)
            self.failUnlessAlmostEqual(cp1[2], cp2[0][2], 3,
                'control point [%d].z not equal' % i)

        for i in range(0, len(knotsU)):
            ku1 = knotsU[i]
            ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % i)
            self.failUnlessAlmostEqual(ku1, ku2, 3,
                'control knotsU # %d not equal' % i)

        for i in range(0, len(knotsV)):
            kv1 = knotsV[i]
            kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % i)
            self.failUnlessAlmostEqual(kv1, kv2, 3,
                'control knotsV # %d not equal' % i)
def testStaticNurbsWithOneCloseCurveTrim(self, surfacetype, abcFileName,
    trimtype):

    if (surfacetype == 0):
        ret  = MayaCmds.nurbsPlane(p=(0, 0, 0), ax=(0, 1, 0), w=1, lr=1,
            d=3, u=5, v=5, ch=0)
    elif (surfacetype == 1):
        ret  = MayaCmds.sphere(p=(0, 0, 0), ax=(0, 1, 0), ssw=0, esw=360, r=1,
            d=3, ut=0, tol=0.01, s=8, nsp=4, ch=0)
    elif (surfacetype == 2):
        ret = MayaCmds.torus(p=(0, 0, 0), ax=(0, 1, 0), ssw=0, esw=360,
            msw=360, r=1, hr=0.5, ch=0)

    name = ret[0]

    MayaCmds.curveOnSurface(name, uv=((0.170718,0.565967),
        (0.0685088,0.393034), (0.141997,0.206296), (0.95,0.230359),
        (0.36264,0.441381), (0.251243,0.569889)),
        k=(0,0,0,0.200545,0.404853,0.598957,0.598957,0.598957))
    MayaCmds.closeCurve(name+'->curve1', ch=1, ps=1, rpo=1, bb=0.5, bki=0,
        p=0.1, cos=1)

    if trimtype == 0 :
        MayaCmds.trim(name, lu=0.68, lv=0.39)
    elif 1 :
        MayaCmds.trim(name, lu=0.267062, lv=0.39475)

    degreeU = MayaCmds.getAttr(name+'.degreeU')
    degreeV = MayaCmds.getAttr(name+'.degreeV')
    spansU = MayaCmds.getAttr(name+'.spansU')
    spansV = MayaCmds.getAttr(name+'.spansV')
    formU = MayaCmds.getAttr(name+'.formU')
    formV = MayaCmds.getAttr(name+'.formV')
    minU = MayaCmds.getAttr(name+'.minValueU')
    maxU = MayaCmds.getAttr(name+'.maxValueU')
    minV = MayaCmds.getAttr(name+'.minValueV')
    maxV = MayaCmds.getAttr(name+'.maxValueV')

    surfaceInfoNode = MayaCmds.createNode('surfaceInfo')
    MayaCmds.connectAttr(name+'.worldSpace', surfaceInfoNode+'.inputSurface',
        force=True)

    controlPoints = MayaCmds.getAttr(surfaceInfoNode+'.controlPoints[*]')
    knotsU = MayaCmds.getAttr(surfaceInfoNode+'.knotsU[*]')
    knotsV = MayaCmds.getAttr(surfaceInfoNode+'.knotsV[*]')

    MayaCmds.AbcExport(j='-root %s -f %s' % (name, abcFileName))
    MayaCmds.AbcImport(abcFileName, mode='open')

    self.failUnlessEqual(degreeU, MayaCmds.getAttr(name+'.degreeU'))
    self.failUnlessEqual(degreeV, MayaCmds.getAttr(name+'.degreeV'))
    self.failUnlessEqual(spansU, MayaCmds.getAttr(name+'.spansU'))
    self.failUnlessEqual(spansV, MayaCmds.getAttr(name+'.spansV'))
    self.failUnlessEqual(minU, MayaCmds.getAttr(name+'.minValueU'))
    self.failUnlessEqual(maxU, MayaCmds.getAttr(name+'.maxValueU'))
    self.failUnlessEqual(minV, MayaCmds.getAttr(name+'.minValueV'))
    self.failUnlessEqual(maxV, MayaCmds.getAttr(name+'.maxValueV'))

    surfaceInfoNode = MayaCmds.createNode('surfaceInfo')
    MayaCmds.connectAttr(name+'.worldSpace', surfaceInfoNode+'.inputSurface',
        force=True)

    controlPoints2 = MayaCmds.getAttr( surfaceInfoNode + '.controlPoints[*]')
    self.failUnlessEqual(len(controlPoints), len(controlPoints2))
    for i in range(0, len(controlPoints)):
        cp1 = controlPoints[i]
        cp2 = controlPoints2[i]
        self.failUnlessAlmostEqual(cp1[0], cp2[0], 3, 'cp[%d].x not equal' % i)
        self.failUnlessAlmostEqual(cp1[1], cp2[1], 3, 'cp[%d].y not equal' % i)
        self.failUnlessAlmostEqual(cp1[2], cp2[2], 3, 'cp[%d].z not equal' % i)

    for i in range(0, len(knotsU)):
        ku1 = knotsU[i]
        ku2 = MayaCmds.getAttr('surfaceInfo1.knotsU[%d]' % i)
        self.failUnlessAlmostEqual(ku1, ku2, 3,
            'control knotsU # %d not equal' % i)

    for i in range(0, len(knotsV)):
        kv1 = knotsV[i]
        kv2 = MayaCmds.getAttr('surfaceInfo1.knotsV[%d]' % i)
        self.failUnlessAlmostEqual(kv1, kv2, 3,
            'control knotsV # %d not equal' % i)