コード例 #1
0
    def connectToDependNode(self, node):
        try:
            #- Find the "windDirection" plug on the selected node, which is the custom
            #- locator node.
            fnDepNode = OpenMaya.MFnDependencyNode(node)
            rotationPlug = fnDepNode.findPlug("windDirection")

            #- Connect the "windDirection" plug with the base disc manip
            fnDisc = OpenMayaUI.MFnDiscManip(self.fDiscManip)
            fnDisc.connectToAnglePlug(rotationPlug)

            #- Set up affecting relationship using conversion callback function
            #- We are using addPlugToManipConversionCallback so that whenever
            #- the custom locator moves, the dis manip moves with it.
            fnDagNode = OpenMaya.MFnDagNode(node)
            fnDagNode.getPath(self.fNodePath)
            centerPointIndex = fnDisc.centerIndex()

            #NOT Available in Python.
            self.addPlugToManipConversion(centerPointIndex)

            #- The following two functions are mandatory inside your
            #- connectToDependNode() function
            self.finishAddingManips()
            OpenMayaMPx.MPxManipContainer.connectToDependNode(self, node)

        except:
            sys.stderr.write("ERROR: arrowLocatorManip.connectToDependNode\n")
            raise
コード例 #2
0
    def createChildren(self):
        try:
            #- Add a base disc manip into this manip container
            self.fDiscManip = self.addDiscManip("angleManip", "yRotation")

            #- Initialize the angle and starting position of this manipulator
            startPoint = OpenMaya.MPoint(0.0, 0.0, 0.0)
            startAngle = OpenMaya.MAngle(0.0, OpenMaya.MAngle.kDegrees)
            fnDisc = OpenMayaUI.MFnDiscManip(self.fDiscManip)
            fnDisc.setCenterPoint(startPoint)
            fnDisc.setAngle(startAngle)

        except:
            sys.stderr.write("ERROR: arrowLocatorManip.createChildren\n")
            raise
コード例 #3
0
    def createChildren(self):
        # FreePointTriadManip
        self.fFreePointTriadManip = self.addFreePointTriadManip(
            "freePointTriadManip", "point")
        freePointTriadManipFn = OpenMayaUI.MFnFreePointTriadManip(
            self.fFreePointTriadManip)

        # DirectionManip
        self.fDirectionManip = self.addDirectionManip("directionManip",
                                                      "direction")
        directionManipFn = OpenMayaUI.MFnDirectionManip(self.fDirectionManip)

        # ToggleManip
        self.fToggleManip = self.addToggleManip("toggleManip", "toggle")
        toggleManipFn = OpenMayaUI.MFnToggleManip(self.fToggleManip)

        # StateManip
        self.fStateManip = self.addStateManip("stateManip", "state")
        stateManipFn = OpenMayaUI.MFnStateManip(self.fStateManip)

        # DiscManip
        self.fDiscManip = self.addDiscManip("discManip", "angle")
        discManipFn = OpenMayaUI.MFnDiscManip(self.fDiscManip)

        # CircleSweepManip
        self.fCircleSweepManip = self.addCircleSweepManip(
            "circleSweepManip", "angle")
        circleSweepManipFn = OpenMayaUI.MFnCircleSweepManip(
            self.fCircleSweepManip)
        circleSweepManipFn.setCenterPoint(OpenMaya.MPoint(0, 0, 0))
        circleSweepManipFn.setNormal(OpenMaya.MVector(0, 1, 0))
        circleSweepManipFn.setRadius(2.0)
        circleSweepManipFn.setDrawAsArc(True)

        # DistanceManip
        self.fDistanceManip = self.addDistanceManip("distanceManip",
                                                    "distance")
        distanceManipFn = OpenMayaUI.MFnDistanceManip(self.fDistanceManip)
        distanceManipFn.setStartPoint(OpenMaya.MPoint(0, 0, 0))
        distanceManipFn.setDirection(OpenMaya.MVector(0, 1, 0))

        # RotateManip
        self.fRotateManip = self.addRotateManip("RotateManip", "rotation")
        rotateManipFn = OpenMayaUI.MFnRotateManip(self.fRotateManip)

        # ScaleManip
        self.fScaleManip = self.addScaleManip("scaleManip", "scale")
        scaleManipFn = OpenMayaUI.MFnScaleManip(self.fScaleManip)
コード例 #4
0
    def createChildren(self):
        try:
            #- TODO: Create a base disc manip and
            #- TODO: add it into this manip container, assign
            #- TODO: the returned value of the function call to member
            #- TODO: variable: "fDiscManip"
            #...

            #- Initialize the angle and starting position of this manipulator
            startPoint = OpenMaya.MPoint(0.0, 0.0, 0.0)
            startAngle = OpenMaya.MAngle(0.0, OpenMaya.MAngle.kDegrees)
            fnDisc = OpenMayaUI.MFnDiscManip(self.fDiscManip)
            fnDisc.setCenterPoint(startPoint)
            fnDisc.setAngle(startAngle)

        except:
            sys.stderr.write("ERROR: arrowLocatorManip.createChildren\n")
            raise
コード例 #5
0
		self.fScaleManip = self.addScaleManip("scaleManip", "scale")
		scaleManipFn = OpenMayaUI.MFnScaleManip(self.fScaleManip)


	def connectToDependNode(self, node):
		# Get the DAG path
		dagNodeFn = OpenMaya.MFnDagNode(node)
		dagNodeFn.getPath(self.fNodePath)
		parentNode = dagNodeFn.parent(0)
		parentNodeFn = OpenMaya.MFnDagNode(parentNode)

		# Connect the plugs
		nodeFn = OpenMaya.MFnDependencyNode()
		nodeFn.setObject(node)   

		# FreePointTriadManip
		freePointTriadManipFn = OpenMayaUI.MFnFreePointTriadManip(self.fFreePointTriadManip)
		try:
			translationPlug = parentNodeFn.findPlug("t")
			freePointTriadManipFn.connectToPointPlug(translationPlug)
		except:
			pass

		# DirectionManip
		directionManipFn = OpenMayaUI.MFnDirectionManip()
		directionManipFn.setObject(self.fDirectionManip)
		try:
			directionPlug = nodeFn.findPlug("arrow2Direction")
			directionManipFn.connectToDirectionPlug(directionPlug)
			startPointIndex = directionManipFn.startPointIndex()
			self.addPlugToManipConversion(startPointIndex)
		except:
			pass

		# DistanceManip
		distanceManipFn = OpenMayaUI.MFnDistanceManip()
		distanceManipFn.setObject(self.fDistanceManip)
		try:
			sizePlug = nodeFn.findPlug("size")
			distanceManipFn.connectToDistancePlug(sizePlug)
			startPointIndex = distanceManipFn.startPointIndex()
			self.addPlugToManipConversion(startPointIndex)
		except:
			pass

		# CircleSweepManip
		circleSweepManipFn = OpenMayaUI.MFnCircleSweepManip(self.fCircleSweepManip)
		try:
			arrow1AnglePlug = nodeFn.findPlug("arrow1Angle")
			circleSweepManipFn.connectToAnglePlug(arrow1AnglePlug)
			centerIndex = circleSweepManipFn.centerIndex()
			self.addPlugToManipConversion(centerIndex)
		except:
			pass

		# DiscManip
		discManipFn = OpenMayaUI.MFnDiscManip(self.fDiscManip)
		try:
			arrow3AnglePlug = nodeFn.findPlug("arrow3Angle")
			discManipFn.connectToAnglePlug(arrow3AnglePlug)
			centerIndex = discManipFn.centerIndex()
			self.addPlugToManipConversion(centerIndex)
		except:
			pass

		# StateManip
		stateManipFn = OpenMayaUI.MFnStateManip(self.fStateManip)
		try:
			statePlug = nodeFn.findPlug("state")
			stateManipFn.connectToStatePlug(statePlug)
			positionIndex = stateManipFn.positionIndex()
			self.addPlugToManipConversion(positionIndex)
		except:
			pass

		# ToggleManip
		toggleManipFn = OpenMayaUI.MFnToggleManip(self.fToggleManip)
		try:
			togglePlug = nodeFn.findPlug("toggle")
			toggleManipFn.connectToTogglePlug(togglePlug)
			startPointIndex = toggleManipFn.startPointIndex()
			self.addPlugToManipConversion(startPointIndex)
		except:
			pass

		# Determine the transform node for the locator
		transformPath = OpenMaya.MDagPath(self.fNodePath)
		transformPath.pop()

		transformNode = OpenMaya.MFnTransform(transformPath)

		# RotateManip
		rotateManipFn = OpenMayaUI.MFnRotateManip(self.fRotateManip)
		try:
			rotatePlug = transformNode.findPlug("rotate")
			rotateManipFn.connectToRotationPlug(rotatePlug)
			rotateManipFn.displayWithNode(node)
		except:
			pass

		# ScaleManip
		scaleManipFn = OpenMayaUI.MFnScaleManip(self.fScaleManip)
		try:
			scalePlug = transformNode.findPlug("scale")
			scaleManipFn.connectToScalePlug(scalePlug)
			scaleManipFn.displayWithNode(node)
		except: