def setUp(self):
        OpenMaya.MFileIO.newFile(True)
        context = tests._util.Context()

        master = tests._util.createTransform(context, name='master')

        tests._util.createTransform(context, name='node', parent=master)
        tests._util.createTransform(context, name='awesome_node', parent=master)
        tests._util.createTransform(context, name='node_awesome', parent=master)
        tests._util.createTransform(context, name='n0de', parent=master)

        root1 = tests._util.createTransform(context, name='root_1', parent=master)
        child1 = tests._util.createTransform(context, name='child_1', parent=root1)
        tests._util.createTransform(context, name='node', parent=child1)

        root2 = tests._util.createTransform(context, name='root_2', parent=master)
        child2 = tests._util.createTransform(context, name='child_2', parent=root2)
        grandchild = tests._util.createTransform(context, name='grandchild', parent=child2)
        tests._util.createTransform(context, name='node', parent=grandchild)

        cube, cubeShape = tests._util.createPolyCube(context, name='cube', parent=master)

        intermediary1 = tests._util.createDagNode(context, 'mesh', name='intermediary1', parent=cube)
        context.dg.newPlugValueBool(intermediary1.findPlug('intermediateObject'), True)
        context.dg.connect(cubeShape.findPlug('outMesh'), intermediary1.findPlug('inMesh'))

        intermediary2 = tests._util.createDagNode(context, 'mesh', name='intermediary2', parent=cube)
        context.dg.newPlugValueBool(intermediary2.findPlug('intermediateObject'), True)
        context.dg.connect(cubeShape.findPlug('outMesh'), intermediary2.findPlug('inMesh'))

        template = tests._util.createDagNode(context, 'mesh', name='template', parent=cube)
        context.dg.newPlugValueBool(template.findPlug('template'), True)
        context.dg.connect(cubeShape.findPlug('outMesh'), template.findPlug('inMesh'))

        sphere, sphereShape = tests._util.createNurbsSphere(context, name='sphere', parent=master)
        circle, circleShape = tests._util.createNurbsCircle(context, name='circle', parent=master)

        OpenMaya.MNamespace.addNamespace('awesome')
        light = tests._util.createTransform(context, name='awesome:light', parent=master)
        tests._util.createDagNode(context, 'pointLight', name='awesome:lightShape', parent=light)

        context.dag.doIt()
        context.dg.doIt()

        cmds.projectCurve(circleShape.fullPathName(), sphereShape.fullPathName())
Esempio n. 2
0
    def setUp(self):
        OpenMaya.MFileIO.newFile(True)
        context = tests._util.Context()

        master = tests._util.createTransform(context, name='master')

        tests._util.createTransform(context, name='node', parent=master)
        tests._util.createTransform(context, name='awesome_node', parent=master)
        tests._util.createTransform(context, name='node_awesome', parent=master)
        tests._util.createTransform(context, name='n0de', parent=master)

        root1 = tests._util.createTransform(context, name='root_1', parent=master)
        child1 = tests._util.createTransform(context, name='child_1', parent=root1)
        tests._util.createTransform(context, name='node', parent=child1)

        root2 = tests._util.createTransform(context, name='root_2', parent=master)
        child2 = tests._util.createTransform(context, name='child_2', parent=root2)
        grandchild = tests._util.createTransform(context, name='grandchild', parent=child2)
        tests._util.createTransform(context, name='node', parent=grandchild)

        cube, cubeShape = tests._util.createPolyCube(context, name='cube', parent=master)

        intermediary1 = tests._util.createDagNode(context, 'mesh', name='intermediary1', parent=cube)
        context.dg.newPlugValueBool(intermediary1.findPlug('intermediateObject'), True)
        context.dg.connect(cubeShape.findPlug('outMesh'), intermediary1.findPlug('inMesh'))

        intermediary2 = tests._util.createDagNode(context, 'mesh', name='intermediary2', parent=cube)
        context.dg.newPlugValueBool(intermediary2.findPlug('intermediateObject'), True)
        context.dg.connect(cubeShape.findPlug('outMesh'), intermediary2.findPlug('inMesh'))

        template = tests._util.createDagNode(context, 'mesh', name='template', parent=cube)
        context.dg.newPlugValueBool(template.findPlug('template'), True)
        context.dg.connect(cubeShape.findPlug('outMesh'), template.findPlug('inMesh'))

        sphere, sphereShape = tests._util.createNurbsSphere(context, name='sphere', parent=master)
        circle, circleShape = tests._util.createNurbsCircle(context, name='circle', parent=master)

        OpenMaya.MNamespace.addNamespace('awesome')
        light = tests._util.createTransform(context, name='awesome:light', parent=master)
        tests._util.createDagNode(context, 'pointLight', name='awesome:lightShape', parent=light)

        context.dag.doIt()
        context.dg.doIt()

        cmds.projectCurve(circleShape.fullPathName(), sphereShape.fullPathName())
Esempio n. 3
0
 def setUp(self):
     OpenMaya.MFileIO.newFile(True)
     master = cmds.group(name='master', empty=True)
     for i in (1, 2):
         root = cmds.group(name='root_%d' % i, parent=master, empty=True)
         child = cmds.group(name='child_%d' % i, parent=root, empty=True)
         node = cmds.group(name='node', parent=child, empty=True)
     
     cmds.group('|master|root_2|child_2|node', name='grandchild', parent='|master|root_2|child_2')
     cmds.group(name='node', parent='|master', empty=True)
     cmds.group(name='awesome_node', parent='|master', empty=True)
     cmds.group(name='node_awesome', parent='|master', empty=True)
     cmds.group(name='n0de', parent='|master', empty=True)
     cmds.polyCube(name='cube')
     cmds.parent('cube', '|master')
     cmds.sphere(name='sphere')
     cmds.parent('sphere', '|master')
     cmds.circle(name='circle')
     cmds.parent('|circle', '|master')
     cmds.projectCurve('|master|circle', '|master|sphere')
     cmds.namespace(add='awesome')
     cmds.pointLight(name='awesome:light')
     cmds.parent('|awesome:light', '|master')
Esempio n. 4
0
def	createSpherical4Arrowhead	():
	_controlled		=	cmds.ls		(	long	=	True,	selection	=	True	)
	_baseCurve		=	cmds.curve	( 	degree	=	1,	point	=	[	(0,1,1),(0,3,1),(0,3,2),(0,6,0),(0,3,-2),(0,3,-1),
										(0,1,-1),(0,1,-3),(0,2,-3),(0,0,-6),(0,-2,-3),(0,-1,-3),(0,-1,-1),(0,-3,-1),
										(0,-3,-2),(0,-6,0),(0,-3,2),(0,-3,1),(0,-1,1),(0,-1,3),(0,-2,3),(0,0,6),(0,2,3),
										(0,1,3),(0,1,1)	]	)
	_tempSphere		=	cmds.sphere	(	radius	=	7,	axis	=	(	0,	1,	0	),	sections	=	4,
										startSweep	=	270,	endSweep	=	90,	constructionHistory	=	0	)
	_control 		=	cmds.projectCurve	(	_baseCurve,	_tempSphere,
												constructionHistory	=	False,	direction	=	(	1,	0,	0	),	)
	_control		=	cmds.duplicateCurve	(	_control,	constructionHistory	=	True,	object	=	True	)
		
	cmds.delete		(	_tempSphere	)
	cmds.delete		(	_baseCurve	)
	
	postProcessControl	(	_control[0],	'rotate',	_controlled	)
Esempio n. 5
0
    def _build_cmd(self):
        """maya built-in command
        However I don't think we can give it other inputs?
        """
        var_node, project_node = cmds.projectCurve(
            self.curve_node().get(),
            self.surface().get(),
            useNormal=False,
            direction=self.direction().get(),
            name=self.name().get()
        )

        self._var_node = "{}_curveVarGroup".format(self.name().get())
        cmds.rename(var_node, self._var_node)

        self._project_node = "{}_projectCurve".format(self.name().get())
        cmds.rename(project_node, self._project_node)

        return True
Esempio n. 6
0
def create_saucer_plate_b(control, name, saucer_surface, saucer_profile,
                          saucer_circle_1, saucer_circle_2, parent,
                          start_angle, sweep_angle):
    """
    in this version we offset sweep angle based on the difference in the circumference of each circle
    (instead of the sweep angle) to ensure parallel gaps

    we also divide the plate in half to make sure the curves start precisely from the profile
    this will create one half, to create the other half, reverse the sweep angle
    """
    # create offset circles
    plate_circle_transform_1, plate_circle_node_1 = create_nurbs_circle(
        "{}_plateCircle1".format(name), parent)
    plate_circle_transform_2, plate_circle_node_2 = create_nurbs_circle(
        "{}_plateCircle2".format(name), parent)

    circle_add_1 = cmds.createNode(
        "plusMinusAverage", name="{}CircleAdd1_plusMinusAverage".format(name))
    circle_add_2 = cmds.createNode(
        "plusMinusAverage", name="{}CircleAdd2_plusMinusAverage".format(name))

    cmds.connectAttr("{}.{}".format(control, saucer_circle_1),
                     "{}.input1D[0]".format(circle_add_1))
    cmds.connectAttr("{}.{}".format(control, PLATE_SEPARATION_ATTR),
                     "{}.input1D[1]".format(circle_add_1))
    cmds.connectAttr("{}.output1D".format(circle_add_1),
                     "{}.radius".format(plate_circle_node_1))

    cmds.setAttr("{}.operation".format(circle_add_2), 2)  # subtract
    cmds.connectAttr("{}.{}".format(control, saucer_circle_2),
                     "{}.input1D[0]".format(circle_add_2))
    cmds.connectAttr("{}.{}".format(control, PLATE_SEPARATION_ATTR),
                     "{}.input1D[1]".format(circle_add_2))
    cmds.connectAttr("{}.output1D".format(circle_add_2),
                     "{}.radius".format(plate_circle_node_2))

    start_add = cmds.createNode(
        "plusMinusAverage", name="{}StartAngle_plusMinusAverage".format(name))
    cmds.connectAttr("{}.{}".format(control, DIVISION_SEPARATION_ATTR),
                     "{}.input1D[0]".format(start_add))
    cmds.setAttr("{}.input1D[1]".format(start_add), start_angle)

    end_add = cmds.createNode("plusMinusAverage",
                              name="{}EndAngle_plusMinusAverage".format(name))
    cmds.setAttr("{}.operation".format(end_add), 2)  # subtract
    cmds.setAttr("{}.input1D[0]".format(end_add), sweep_angle)
    cmds.connectAttr("{}.{}".format(control, DIVISION_SEPARATION_ATTR),
                     "{}.input1D[1]".format(end_add))
    cmds.connectAttr("{}.{}".format(control, DIVISION_SEPARATION_ATTR),
                     "{}.input1D[2]".format(end_add))

    # connect angles
    # cmds.connectAttr("{}.output1D".format(start_add), "{}.rotateY".format(plate_circle_transform_1))
    # cmds.connectAttr("{}.output1D".format(start_add), "{}.rotateY".format(plate_circle_transform_2))
    cmds.setAttr("{}.rotateY".format(plate_circle_transform_1), start_angle)
    cmds.setAttr("{}.rotateY".format(plate_circle_transform_2), start_angle)

    cmds.connectAttr("{}.output1D".format(end_add),
                     "{}.sweep".format(plate_circle_node_1))
    cmds.connectAttr("{}.output1D".format(end_add),
                     "{}.sweep".format(plate_circle_node_2))

    # project curves
    projection_kwargs = {
        "ch": True,
        "direction": (0, 1, 0),
        "range": False,
        "useNormal": False,
        "tol": 0.01
    }

    cmds.projectCurve(plate_circle_transform_1, saucer_surface,
                      **projection_kwargs)
    cmds.projectCurve(plate_circle_transform_2, saucer_surface,
                      **projection_kwargs)
Esempio n. 7
0
def create_saucer_plate_a(control, name, saucer_surface, saucer_profile,
                          saucer_circle_1, saucer_circle_2, parent,
                          start_angle, sweep_angle):
    # create offset circles
    plate_circle_transform_1, plate_circle_node_1 = create_nurbs_circle(
        "{}_plateCircle1".format(name), parent)
    plate_circle_transform_2, plate_circle_node_2 = create_nurbs_circle(
        "{}_plateCircle2".format(name), parent)

    circle_add_1 = cmds.createNode(
        "plusMinusAverage", name="{}CircleAdd1_plusMinusAverage".format(name))
    circle_add_2 = cmds.createNode(
        "plusMinusAverage", name="{}CircleAdd2_plusMinusAverage".format(name))

    cmds.connectAttr("{}.{}".format(control, saucer_circle_1),
                     "{}.input1D[0]".format(circle_add_1))
    cmds.connectAttr("{}.{}".format(control, PLATE_SEPARATION_ATTR),
                     "{}.input1D[1]".format(circle_add_1))
    cmds.connectAttr("{}.output1D".format(circle_add_1),
                     "{}.radius".format(plate_circle_node_1))

    cmds.setAttr("{}.operation".format(circle_add_2), 2)  # subtract
    cmds.connectAttr("{}.{}".format(control, saucer_circle_2),
                     "{}.input1D[0]".format(circle_add_2))
    cmds.connectAttr("{}.{}".format(control, PLATE_SEPARATION_ATTR),
                     "{}.input1D[1]".format(circle_add_2))
    cmds.connectAttr("{}.output1D".format(circle_add_2),
                     "{}.radius".format(plate_circle_node_2))

    # calculate angles
    start_add = cmds.createNode(
        "plusMinusAverage", name="{}StartAngle_plusMinusAverage".format(name))
    cmds.connectAttr("{}.{}".format(control, DIVISION_SEPARATION_ATTR),
                     "{}.input1D[0]".format(start_add))
    cmds.setAttr("{}.input1D[1]".format(start_add), start_angle)

    end_add = cmds.createNode("plusMinusAverage",
                              name="{}EndAngle_plusMinusAverage".format(name))
    cmds.setAttr("{}.operation".format(end_add), 2)  # subtract
    cmds.setAttr("{}.input1D[0]".format(end_add), sweep_angle)
    cmds.connectAttr("{}.{}".format(control, DIVISION_SEPARATION_ATTR),
                     "{}.input1D[1]".format(end_add))
    cmds.connectAttr("{}.{}".format(control, DIVISION_SEPARATION_ATTR),
                     "{}.input1D[2]".format(end_add))

    # connect angles
    # cmds.connectAttr("{}.output1D".format(start_add), "{}.rotateY".format(plate_circle_transform_1))
    # cmds.connectAttr("{}.output1D".format(start_add), "{}.rotateY".format(plate_circle_transform_2))
    cmds.setAttr("{}.rotateY".format(plate_circle_transform_1), start_angle)
    cmds.setAttr("{}.rotateY".format(plate_circle_transform_2), start_angle)

    cmds.connectAttr("{}.output1D".format(end_add),
                     "{}.sweep".format(plate_circle_node_1))
    cmds.connectAttr("{}.output1D".format(end_add),
                     "{}.sweep".format(plate_circle_node_2))

    # project curves
    projection_kwargs = {
        "ch": True,
        "direction": (0, 1, 0),
        "range": False,
        "useNormal": False,
        "tol": 0.01
    }

    cmds.projectCurve(plate_circle_transform_1, saucer_surface,
                      **projection_kwargs)
    cmds.projectCurve(plate_circle_transform_2, saucer_surface,
                      **projection_kwargs)
# #############################################################################
Esempio n. 9
0
def projectCurve(*args, **kwargs):
    res = cmds.projectCurve(*args, **kwargs)
    if not kwargs.get('query', kwargs.get('q', False)):
        res = _factories.maybeConvert(res, _general.PyNode)
    return res