コード例 #1
0
    def prepareForDraw(self, objPath, cameraPath, frameContext, oldData):
        data = oldData
        if not isinstance(data, GuideHandleData):
            data = GuideHandleData()

        controlNode = objPath.node()

        data.childPositions = OpenMaya.MPointArray()
        plug = OpenMaya.MPlug(controlNode, self.GuideClass.childPosition)
        fnData = OpenMaya.MFnNumericData()
        for i in xrange(plug.numElements()):
            handle = plug.elementByPhysicalIndex(i)
            fnData.setObject(handle.asMObject())
            pt = OpenMaya.MPoint(fnData.getData())
            data.childPositions.append(pt)

        plug.setAttribute(self.GuideClass.handleMatrix)
        handleMatrix = OpenMaya.MFnMatrixData(plug.asMObject()).matrix()
        data.inverseMatrix = handleMatrix.inverse()

        plug.setAttribute(self.GuideClass.handleColor)
        colorData = OpenMaya.MFnNumericData(plug.asMObject())
        data.handleColor = OpenMaya.MColor(colorData.getData())

        plug.setAttribute(self.GuideClass.jointMatrix)
        jointMatrix = OpenMaya.MFnMatrixData(plug.asMObject()).matrix()
        data.jointMatrix = jointMatrix * data.inverseMatrix

        plug.setAttribute(self.GuideClass.guide)
        data.hasGuide = plug.isConnected

        return data
コード例 #2
0
    def prepareForDraw(self, objPath, cameraPath, frameContext, oldData):
        depNode = om.MFnDependencyNode(objPath.node())
        obj = depNode.userNode()

        isSelected = isPathSelected(objPath)
        self.xray = obj.xray

        plug = om.MPlug(objPath.node(), zRigHandle.colorAttr)
        self.color = om.MColor(om.MFnNumericData(plug.asMObject()).getData())

        alpha = om.MPlug(objPath.node(), zRigHandle.alphaAttr).asFloat()
        self.color.a = alpha

        if isSelected:
            self.borderColor = omr.MGeometryUtilities.wireframeColor(objPath)
        else:
            plug = om.MPlug(objPath.node(), zRigHandle.borderColorAttr)
            self.borderColor = om.MColor(
                om.MFnNumericData(plug.asMObject()).getData())

            # If no color has been set and we're on the default of (-1,-1,-1), use the main color,
            # so in the common case where you want to use the same color you don't have to set both.
            if self.borderColor.r == -1 and self.borderColor.g == -1 and self.borderColor.b == -1:
                self.borderColor = om.MColor(self.color)

            self.borderColor.a = om.MPlug(
                objPath.node(), zRigHandle.borderAlphaAttr).asFloat()

        self.shape = obj.getShape()
コード例 #3
0
    def _getLocalTransform(self):
        node = self.thisMObject()

        transformPlug = om.MPlug(node, self.transformAttr)
        transform = om.MFnMatrixData(transformPlug.asMObject()).matrix()

        mat = om.MTransformationMatrix(transform)

        # Apply local translation.
        localTranslatePlug = om.MPlug(node, self.localTranslateAttr)
        localTranslation = om.MVector(
            *[localTranslatePlug.child(idx).asFloat() for idx in range(3)])
        mat.translateBy(localTranslation, om.MSpace.kObject)

        # Apply local rotation.
        localRotatePlug = om.MPlug(node, self.localRotateAttr)
        localRotatePlugs = [localRotatePlug.child(idx) for idx in range(3)]
        localRotate = om.MVector(
            *
            [localRotatePlugs[idx].asMAngle().asRadians() for idx in range(3)])
        mat.rotateBy(om.MEulerRotation(localRotate), om.MSpace.kObject)

        # Apply local scale.
        scalePlug = om.MPlug(node, self.localScaleAttr)
        scale = om.MFnNumericData(scalePlug.asMObject()).getData()
        mat.scaleBy(scale, om.MSpace.kObject)

        return mat.asMatrix()
コード例 #4
0
    def prepareForDraw(self, objPath, cameraPath, frameContext, oldData):
        data = oldData
        if not isinstance(data, GuideSpineData):
            data = GuideSpineData()

        controlNode = objPath.node()

        controlNode = objPath.node()
        plug = OpenMaya.MPlug(controlNode, self.GuideClass.boundingBoxCorner1)
        plugData = OpenMaya.MFnNumericData(plug.asMObject())
        corner1 = plugData.getData()
        plug = OpenMaya.MPlug(controlNode, self.GuideClass.boundingBoxCorner2)
        plugData.setObject(plug.asMObject())
        corner2 = plugData.getData()
        data.boundingBoxCorner1 = OpenMaya.MPoint(corner1[0], corner1[1],
                                                  corner1[2])
        data.boundingBoxCorner2 = OpenMaya.MPoint(corner2[0], corner2[1],
                                                  corner2[2])

        # data.outputPoints = OpenMaya.MPointArray()
        # plug = OpenMaya.MPlug(controlNode, self.GuideClass.handlePosition)
        # fnData = OpenMaya.MFnNumericData()
        # for i in xrange(plug.numElements()):
        #     handle = plug.elementByPhysicalIndex(i)
        #     fnData.setObject(handle.asMObject())
        #     pt = OpenMaya.MPoint(fnData.getData())
        #     data.outputPoints.append(pt)

        return data
コード例 #5
0
    def set_kNumeric(plug, value):
        # all of the dynamic mental ray attributes fail here, but i have no idea why they are numeric attrs and not message attrs.
        # cmds.getAttr returns None, so we will too.
        try:
            dataObj = plug.asMObject()
            numFn = api2.MFnNumericData(dataObj)
        except RuntimeError:
            if plug.isArray():
                raise TypeError(
                    "%s: numeric arrays are not supported" %
                    plug.partialName(True, True, True, False, True, True))
            else:
                raise TypeError(
                    "%s: attribute type is numeric, but its "
                    "data cannot be interpreted numerically" %
                    plug.partialName(True, True, True, False, True, True))
        except:
            return None

        dataType = numFn.numericType()
        try:
            dataFunc = _numericDataTypes_functions[dataType][1]
        except KeyError:
            raise TypeError(
                "%s: Unsupported typed attribute: %s" % (plug.partialName(
                    True, True, True, False, True, True), dataType))

        return dataFunc(plug, value)
コード例 #6
0
    def boundingBox(self, objPath, cameraPath):
        controlNode = objPath.node()
        c1Plug = OpenMaya.MPlug(controlNode, self.GuideClass.boundingBoxCorner1)
        c2Plug = OpenMaya.MPlug(controlNode, self.GuideClass.boundingBoxCorner2)

        corner1Object = c1Plug.asMObject()
        corner2Object = c2Plug.asMObject()

        fnData = OpenMaya.MFnNumericData()
        fnData.setObject(corner1Object)
        corner1 = fnData.getData()
        fnData.setObject(corner2Object)
        corner2 = fnData.getData()

        corner1Point = OpenMaya.MPoint(corner1[0], corner1[1], corner1[2])
        corner2Point = OpenMaya.MPoint(corner2[0], corner2[1], corner2[2])
        return OpenMaya.MBoundingBox(corner1Point, corner2Point)
コード例 #7
0
ファイル: limb.py プロジェクト: kyleMR/BoneForge
    def prepareForDraw(self, objPath, cameraPath, frameContext, oldData):
        data = oldData
        if not isinstance(data, GuideLimbData):
            data = GuideLimbData()

        controlNode = objPath.node()

        controlNode = objPath.node()
        plug = OpenMaya.MPlug(controlNode, self.GuideClass.boundingBoxCorner1)
        plugData = OpenMaya.MFnNumericData(plug.asMObject())
        corner1 = plugData.getData()
        plug = OpenMaya.MPlug(controlNode, self.GuideClass.boundingBoxCorner2)
        plugData.setObject(plug.asMObject())
        corner2 = plugData.getData()
        data.boundingBoxCorner1 = OpenMaya.MPoint(corner1[0], corner1[1], corner1[2])
        data.boundingBoxCorner2 = OpenMaya.MPoint(corner2[0], corner2[1], corner2[2])

        plug.setAttribute(self.GuideClass.guideMatrix)
        guideMatrix = OpenMaya.MFnMatrixData(plug.asMObject()).matrix()
        guideInverse = guideMatrix.inverse()

        plug.setAttribute(self.GuideClass.baseMatrix)
        baseMatrix = OpenMaya.MFnMatrixData(plug.asMObject()).matrix()
        baseMatrix *= guideInverse
        data.basePosition = OpenMaya.MPoint(
            OpenMaya.MTransformationMatrix(baseMatrix).translation(OpenMaya.MSpace.kPostTransform)
        )

        plug.setAttribute(self.GuideClass.hingeMatrix)
        hingeMatrix = OpenMaya.MFnMatrixData(plug.asMObject()).matrix()
        hingeMatrix *= guideInverse
        data.midPosition = OpenMaya.MPoint(
            OpenMaya.MTransformationMatrix(hingeMatrix).translation(
                OpenMaya.MSpace.kPostTransform))

        plug.setAttribute(self.GuideClass.endMatrix)
        endMatrix = OpenMaya.MFnMatrixData(plug.asMObject()).matrix()
        endMatrix *= guideInverse
        data.endPosition = OpenMaya.MPoint(
            OpenMaya.MTransformationMatrix(endMatrix).translation(OpenMaya.MSpace.kPostTransform)
        )

        return data
コード例 #8
0
ファイル: block.py プロジェクト: kyleMR/BoneForge
    def prepareForDraw(self, objPath, cameraPath, frameContext, oldData):
        data = oldData
        if not isinstance(data, GuideBlockData):
            data = GuideBlockData()

        controlNode = objPath.node()

        controlNode = objPath.node()
        plug = OpenMaya.MPlug(controlNode, self.GuideClass.boundingBoxCorner1)
        plugData = OpenMaya.MFnNumericData(plug.asMObject())
        corner1 = plugData.getData()
        plug = OpenMaya.MPlug(controlNode, self.GuideClass.boundingBoxCorner2)
        plugData.setObject(plug.asMObject())
        corner2 = plugData.getData()
        data.boundingBoxCorner1 = OpenMaya.MPoint(corner1[0], corner1[1],
                                                  corner1[2])
        data.boundingBoxCorner2 = OpenMaya.MPoint(corner2[0], corner2[1],
                                                  corner2[2])

        plug.setAttribute(self.GuideClass.guideMatrix)
        guideMatrix = OpenMaya.MFnMatrixData(plug.asMObject()).matrix()
        guideInverse = guideMatrix.inverse()

        return data
コード例 #9
0
    def prepareForDraw(self, objPath, cameraPath, frameContext, oldData):
        data = oldData
        if not isinstance(data, uiDrawManagerData):
            data = uiDrawManagerData()

        uiDrawManagerNode = objPath.node()
        if uiDrawManagerNode.isNull():
            return

        ## retrieve uiType
        plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aUIType)
        data.fUIType = plug.asShort()

        ## common attributes
        ## retrieve color
        plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aPrimitiveColor)
        o = plug.asMObject()
        nData = om.MFnNumericData(o)
        data.fColor = om.MColor(nData.getData())

        ## retrieve transparency
        plug = om.MPlug(uiDrawManagerNode,
                        uiDrawManager.aPrimitiveTransparency)
        data.fColor.a = 1.0 - plug.asFloat()

        ## retrieve line width
        plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aLineWidth)
        data.fLineWidth = plug.asFloat()

        ## retrieve line style
        plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aLineStyle)
        data.fLineStyle = plug.asShort()

        ## retrieve filled flag
        plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aIsFilled)
        data.fIsFilled = plug.asBool()

        ## retrieve radius
        plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aRadius)
        data.fRadius = plug.asDouble()

        ## retrieve 2D flag
        plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aDraw2D)
        data.fDraw2D = plug.asBool()

        ## retrieve screen position
        plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aPosition)
        o = plug.asMObject()
        nData = om.MFnNumericData(o)
        data.fPosition = om.MPoint(nData.getData())
        data.fPosition.w = 1.0

        if data.fUIType == kText:
            ## retrieve text
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aText)
            data.fText = plug.asString()

            ## retrieve text font size
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aTextFontSize)
            data.fTextFontSize = max(plug.asInt(), 0)

            ## retrieve font face index
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aFontFaceName)
            data.fFontFaceIndex = plug.asInt()

            ## retrieve text alignment
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aTextAlignment)
            data.fTextAlignment = plug.asShort()

            ## retrieve text incline
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.eTextIncline)
            data.fTextIncline = plug.asInt()

            ## retrieve text weight
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aTextWeight)
            data.fTextWeight = plug.asInt()

            ## retrieve text stretch
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aTextStretch)
            data.fTextStretch = plug.asInt()

            ## retrieve text line
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aTextLine)
            data.fTextLine = plug.asInt()

            ## retrieve text box size
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aTextBoxSize)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fTextBoxSize = nData.getData()

            ## retrieve text box color
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aTextBoxColor)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fTextBoxColor = om.MColor(nData.getData())

            ## retrieve text box transparency
            plug = om.MPlug(uiDrawManagerNode,
                            uiDrawManager.aTextBoxTransparency)
            data.fTextBoxColor.a = 1.0 - plug.asFloat()

        elif data.fUIType == kPoint:
            ## retrieve point size
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aPointSize)
            data.fPointSize = plug.asFloat()

        elif data.fUIType == kLine:
            ## retrieve line start point
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aLineStartPoint)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fLineStartPoint = om.MPoint(nData.getData())
            data.fLineStartPoint.w = 1.0

            ## retrieve line end point
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aLineEndPoint)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fLineEndPoint = om.MPoint(nData.getData())
            data.fLineEndPoint.w = 1.0

        elif data.fUIType == kRect:
            ## retrieve rect up vector
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aRectUp)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fRectUp = om.MVector(nData.getData())

            ## retrieve rect normal vector
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aRectNormal)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fRectNormal = om.MVector(nData.getData())

            ## retrieve rect scale
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aRectScale)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fRectScale = nData.getData()

        elif data.fUIType == kQuad:
            ## retrieve quad vertices
            for i in range(4):
                plug = om.MPlug(uiDrawManagerNode,
                                uiDrawManager.aQuadVertex[i])
                o = plug.asMObject()
                nData = om.MFnNumericData(o)
                data.fQuadVertex[i] = om.MPoint(nData.getData())

        elif data.fUIType == kCircle:
            ## retrieve circle normal
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aCircleNormal)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fCircleNormal = om.MVector(nData.getData())

        elif data.fUIType == kArc:
            ## retrieve arc start vector
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aArcStart)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fArcStart = om.MVector(nData.getData())

            ## retrieve arc end vector
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aArcEnd)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fArcEnd = om.MVector(nData.getData())

            ## retrieve arc normal
            plug = om.MPlug(uiDrawManagerNode, uiDrawManager.aArcNormal)
            o = plug.asMObject()
            nData = om.MFnNumericData(o)
            data.fArcNormal = om.MVector(nData.getData())

        elif data.fUIType == kSphere:
            pass

        else:
            sys.stderr.write("unhandled ui type.\n")

        return data
コード例 #10
0
ファイル: plugs.py プロジェクト: kthulhu/zoocore_maya
def setPlugValue(plug, value):
    """
    Sets the given plug's value to the passed in value.

    :param plug: MPlug, The node plug.
    :param value: type, Any value of any data type.
    """

    if plug.isArray:
        count = plug.evaluateNumElements()
        if count != len(value):
            return
        for i in range(count):
            setPlugValue(plug.elementByPhysicalIndex(i), value[i])
        return
    elif plug.isCompound:
        count = plug.numChildren()
        if count != len(value):
            return
        for i in range(count):
            setPlugValue(plug.child(i), value[i])
        return
    obj = plug.attribute()
    if obj.hasFn(om2.MFn.kUnitAttribute):
        attr = om2.MFnUnitAttribute(obj)
        ut = attr.unitType()
        if ut == om2.MFnUnitAttribute.kDistance:
            plug.setMDistance(om2.MDistance(value))
        elif ut == om2.MFnUnitAttribute.kTime:
            plug.setMTime(om2.MTime(value))
        elif ut == om2.MFnUnitAttribute.kAngle:
            plug.setMAngle(om2.MAngle(value))
    elif obj.hasFn(om2.MFn.kNumericAttribute):
        attr = om2.MFnNumericAttribute(obj)
        at = attr.numericType()
        if at in (om2.MFnNumericData.k2Double, om2.MFnNumericData.k2Float,
                  om2.MFnNumericData.k2Int, om2.MFnNumericData.k2Long,
                  om2.MFnNumericData.k2Short, om2.MFnNumericData.k3Double,
                  om2.MFnNumericData.k3Float, om2.MFnNumericData.k3Int,
                  om2.MFnNumericData.k3Long, om2.MFnNumericData.k3Short,
                  om2.MFnNumericData.k4Double):
            data = om2.MFnNumericData().create(value)
            plug.setMObject(data.object())
        elif at == om2.MFnNumericData.kDouble:
            plug.setDouble(value)
        elif at == om2.MFnNumericData.kFloat:
            plug.setFloat(value)
        elif at == om2.MFnNumericData.kBoolean:
            plug.setBool(value)
        elif at == om2.MFnNumericData.kChar:
            plug.setChar(value)
        elif at in (om2.MFnNumericData.kInt, om2.MFnNumericData.kInt64,
                    om2.MFnNumericData.kLong, om2.MFnNumericData.kLast):
            plug.setInt(value)
        elif at == om2.MFnNumericData.kShort:
            plug.setInt(value)

    elif obj.hasFn(om2.MFn.kEnumAttribute):
        plug.setInt(value)

    elif obj.hasFn(om2.MFn.kTypedAttribute):
        attr = om2.MFnTypedAttribute(obj)
        at = attr.attrType()
        if at == om2.MFnData.kMatrix:
            mat = om2.MFnMatrixData().create(om2.MMatrix(value))
            plug.setMObject(mat)
        elif at == om2.MFnData.kString:
            plug.setString(value)

    elif obj.hasFn(om2.MFn.kMatrixAttribute):
        mat = om2.MFnMatrixData().create(om2.MMatrix(value))
        plug.setMObject(mat)
    elif obj.hasFn(om2.MFn.kMessageAttribute) and isinstance(value, om2.MPlug):
        # connect the message attribute
        connectPlugs(plug, value)
    else:
        raise ValueError(
            "Currently we don't support dataType ->{} contact the developers to get this implemented"
            .format(obj.apiTypeStr))
コード例 #11
0
ファイル: plugs.py プロジェクト: kthulhu/zoocore_maya
def getNumericValue(plug):
    """Returns the maya numeric type and value from the given plug

    :param plug: The plug to get the value from
    :type plug: om2.MPlug
    :rtype: attrtypes.kType,
    """
    obj = plug.attribute()
    nAttr = om2.MFnNumericAttribute(obj)
    dataType = nAttr.numericType()
    if dataType == om2.MFnNumericData.kBoolean:
        return attrtypes.kMFnNumericBoolean, plug.asBool()
    elif dataType == om2.MFnNumericData.kByte:
        return attrtypes.kMFnNumericByte, plug.asBool()
    elif dataType == om2.MFnNumericData.kShort:
        return attrtypes.kMFnNumericShort, plug.asShort()
    elif dataType == om2.MFnNumericData.kInt:
        return attrtypes.kMFnNumericInt, plug.asInt()
    elif dataType == om2.MFnNumericData.kLong:
        return attrtypes.kMFnNumericLong, plug.asInt()
    elif dataType == om2.MFnNumericData.kDouble:
        return attrtypes.kMFnNumericDouble, plug.asDouble()
    elif dataType == om2.MFnNumericData.kFloat:
        return attrtypes.kMFnNumericFloat, plug.asFloat()
    elif dataType == om2.MFnNumericData.kAddr:
        return attrtypes.kMFnNumericAddr, plug.asAddr()
    elif dataType == om2.MFnNumericData.kChar:
        return attrtypes.kMFnNumericChar, plug.asChar()
    elif dataType == om2.MFnNumericData.k2Double:
        return attrtypes.kMFnNumeric2Double, om2.MFnNumericData(
            plug.asMObject()).getData()
    elif dataType == om2.MFnNumericData.k2Float:
        return attrtypes.kMFnNumeric2Float, om2.MFnNumericData(
            plug.asMObject()).getData()
    elif dataType == om2.MFnNumericData.k2Int:
        return attrtypes.kMFnNumeric2Int, om2.MFnNumericData(
            plug.asMObject()).getData()
    elif dataType == om2.MFnNumericData.k2Long:
        return attrtypes.kMFnNumeric2Long, om2.MFnNumericData(
            plug.asMObject()).getData()
    elif dataType == om2.MFnNumericData.k2Short:
        return attrtypes.kMFnNumeric2Short, om2.MFnNumericData(
            plug.asMObject()).getData()
    elif dataType == om2.MFnNumericData.k3Double:
        return attrtypes.kMFnNumeric3Double, om2.MFnNumericData(
            plug.asMObject()).getData()
    elif dataType == om2.MFnNumericData.k3Float:
        return attrtypes.kMFnNumeric3Float, om2.MFnNumericData(
            plug.asMObject()).getData()
    elif dataType == om2.MFnNumericData.k3Int:
        return attrtypes.kMFnNumeric3Int, om2.MFnNumericData(
            plug.asMObject()).getData()
    elif dataType == om2.MFnNumericData.k3Long:
        return attrtypes.kMFnNumeric3Long, om2.MFnNumericData(
            plug.asMObject()).getData()
    elif dataType == om2.MFnNumericData.k3Short:
        return attrtypes.kMFnNumeric3Short, om2.MFnNumericData(
            plug.asMObject()).getData()
    elif dataType == om2.MFnNumericData.k4Double:
        return attrtypes.kMFnNumeric4Double, om2.MFnNumericData(
            plug.asMObject()).getData()
    return None, None
コード例 #12
0
    def initialize():
        mtxMFnAttr = om2.MFnMatrixAttribute()
        compoundMFnAttr = om2.MFnCompoundAttribute()
        numericMFnAttr = om2.MFnNumericAttribute()
        numMFnAttr = om2.MFnNumericAttribute()
        mFnNumericData = om2.MFnNumericData()

        Vectors2Matrix.mtxOut = mtxMFnAttr.create('matrixOut', 'mtxOut')
        mtxMFnAttr.readable = True
        Vectors2Matrix.addAttribute(Vectors2Matrix.mtxOut)

        Vectors2Matrix.row0 = compoundMFnAttr.create('row0', 'row0')
        r0XChild = numMFnAttr.create("r0X", "r0X", mFnNumericData.kFloat, 1.0)
        r0YChild = numMFnAttr.create("r0Y", "r0Y", mFnNumericData.kFloat, 0.0)
        r0ZChild = numMFnAttr.create("r0Z", "r0Z", mFnNumericData.kFloat, 0.0)
        mtxMFnAttr.readable = True
        mtxMFnAttr.writable = True
        mtxMFnAttr.storable = True
        compoundMFnAttr.addChild(r0XChild)
        compoundMFnAttr.addChild(r0YChild)
        compoundMFnAttr.addChild(r0ZChild)
        Vectors2Matrix.addAttribute(Vectors2Matrix.row0)

        Vectors2Matrix.row0W = numericMFnAttr.create('row0W', 'row0W',
                                                     mFnNumericData.kFloat,
                                                     0.0)
        mtxMFnAttr.readable = True
        mtxMFnAttr.writable = True
        mtxMFnAttr.storable = True
        Vectors2Matrix.addAttribute(Vectors2Matrix.row0W)

        Vectors2Matrix.row1 = compoundMFnAttr.create('row1', 'row1')
        r1xChild = numMFnAttr.create("r1X", "r1X", mFnNumericData.kFloat, 0.0)
        r1yChild = numMFnAttr.create("r1Y", "r1Y", mFnNumericData.kFloat, 1.0)
        r1zChild = numMFnAttr.create("r1Z", "r1Z", mFnNumericData.kFloat, 0.0)
        mtxMFnAttr.readable = True
        mtxMFnAttr.writable = True
        mtxMFnAttr.storable = True
        compoundMFnAttr.addChild(r1xChild)
        compoundMFnAttr.addChild(r1yChild)
        compoundMFnAttr.addChild(r1zChild)
        Vectors2Matrix.addAttribute(Vectors2Matrix.row1)

        Vectors2Matrix.row1W = numericMFnAttr.create('row1W', 'row1W',
                                                     mFnNumericData.kFloat,
                                                     0.0)
        mtxMFnAttr.readable = True
        mtxMFnAttr.writable = True
        mtxMFnAttr.storable = True
        Vectors2Matrix.addAttribute(Vectors2Matrix.row1W)

        Vectors2Matrix.row2 = compoundMFnAttr.create('row2', 'row2')
        r2xChild = numMFnAttr.create("r2X", "r2X", mFnNumericData.kFloat, 0.0)
        r2yChild = numMFnAttr.create("r2Y", "r2Y", mFnNumericData.kFloat, 0.0)
        r2zChild = numMFnAttr.create("r2Z", "r2Z", mFnNumericData.kFloat, 1.0)
        mtxMFnAttr.readable = True
        mtxMFnAttr.writable = True
        mtxMFnAttr.storable = True
        compoundMFnAttr.addChild(r2xChild)
        compoundMFnAttr.addChild(r2yChild)
        compoundMFnAttr.addChild(r2zChild)
        Vectors2Matrix.addAttribute(Vectors2Matrix.row2)

        Vectors2Matrix.row2W = numericMFnAttr.create('row2W', 'row2W',
                                                     mFnNumericData.kFloat,
                                                     0.0)
        mtxMFnAttr.readable = True
        mtxMFnAttr.writable = True
        mtxMFnAttr.storable = True
        Vectors2Matrix.addAttribute(Vectors2Matrix.row2W)

        Vectors2Matrix.row3 = compoundMFnAttr.create('row3', 'row3')
        r3xChild = numMFnAttr.create("r3X", "r3X", mFnNumericData.kFloat, 0.0)
        r3yChild = numMFnAttr.create("r3Y", "r3Y", mFnNumericData.kFloat, 0.0)
        r3zChild = numMFnAttr.create("r3Z", "r3Z", mFnNumericData.kFloat, 0.0)
        mtxMFnAttr.readable = True
        mtxMFnAttr.writable = True
        mtxMFnAttr.storable = True
        compoundMFnAttr.addChild(r3xChild)
        compoundMFnAttr.addChild(r3yChild)
        compoundMFnAttr.addChild(r3zChild)
        Vectors2Matrix.addAttribute(Vectors2Matrix.row3)

        Vectors2Matrix.row3W = numericMFnAttr.create('row3W', 'row3W',
                                                     mFnNumericData.kFloat,
                                                     1.0)
        mtxMFnAttr.readable = True
        mtxMFnAttr.writable = True
        mtxMFnAttr.storable = True
        Vectors2Matrix.addAttribute(Vectors2Matrix.row3W)

        Vectors2Matrix.attributeAffects(Vectors2Matrix.row0,
                                        Vectors2Matrix.mtxOut)
        Vectors2Matrix.attributeAffects(Vectors2Matrix.row0W,
                                        Vectors2Matrix.mtxOut)

        Vectors2Matrix.attributeAffects(Vectors2Matrix.row1,
                                        Vectors2Matrix.mtxOut)
        Vectors2Matrix.attributeAffects(Vectors2Matrix.row1W,
                                        Vectors2Matrix.mtxOut)

        Vectors2Matrix.attributeAffects(Vectors2Matrix.row2,
                                        Vectors2Matrix.mtxOut)
        Vectors2Matrix.attributeAffects(Vectors2Matrix.row2W,
                                        Vectors2Matrix.mtxOut)

        Vectors2Matrix.attributeAffects(Vectors2Matrix.row3,
                                        Vectors2Matrix.mtxOut)
        Vectors2Matrix.attributeAffects(Vectors2Matrix.row3W,
                                        Vectors2Matrix.mtxOut)
コード例 #13
0
    def set_kNumericData(plug, value):
        dataObj = plug.asMObject()
        numFn = api2.MFnNumericData(dataObj)

        return numFn.setData(value)
コード例 #14
0
    def get_kNumericData(plug):
        dataObj = plug.asMObject()
        numFn = api2.MFnNumericData(dataObj)

        return numFn.getData()
コード例 #15
0
ファイル: annotate.py プロジェクト: matthieuCantat/python
    def initialize(cls):
        print('initialize')
        nData = ompy.MFnNumericData()
        cData = ompy.MFnNurbsCurveData()
        mData = ompy.MFnMeshData()
        sData = ompy.MFnStringData()

        nAttr = ompy.MFnNumericAttribute()
        eAttr = ompy.MFnEnumAttribute()
        mAttr = ompy.MFnMatrixAttribute()
        gAttr = ompy.MFnGenericAttribute()
        tAttr = ompy.MFnTypedAttribute()
        sAttr = ompy.MFnTypedAttribute()

        cls.inAttrs = []
        # OUT ATTR
        cls.inAttrs.append(mAttr.create('camMatrix', 'camMatrix',
                                        nData.kFloat))

        drawPlaneMode_choices = ['none', 'foreground', 'background']
        cls.inAttrs.append(eAttr.create('drawPlaneMode', 'drawPlaneMode', 0))
        for i in range(0, len(drawPlaneMode_choices)):
            eAttr.addField(drawPlaneMode_choices[i], i)
        eAttr.channelBox = True

        cls.inAttrs.append(nAttr.create('shapes', 'shapes', nData.kInt, 0))
        nAttr.array = True
        #nAttr.dynamic = True
        nAttr.usesArrayDataBuilder = True

        cls.inAttrs.append(nAttr.createPoint('coords', 'coords'))
        nAttr.array = True
        #nAttr.dynamic = True
        nAttr.usesArrayDataBuilder = True

        cls.inAttrs.append(
            nAttr.createPoint('screenSpaceOffsets', 'screenSpaceOffsets'))
        nAttr.array = True
        #nAttr.dynamic = True
        nAttr.usesArrayDataBuilder = True

        cls.inAttrs.append(nAttr.create('sizes', 'sizes', nData.kFloat, 1.0))
        nAttr.array = True
        #nAttr.dynamic = True
        nAttr.usesArrayDataBuilder = True

        cls.inAttrs.append(
            nAttr.create('thicknesses', 'thicknesses', nData.kFloat, 1.0))
        nAttr.array = True
        #nAttr.dynamic = True
        nAttr.usesArrayDataBuilder = True

        cls.inAttrs.append(nAttr.createPoint('colors', 'colors'))
        nAttr.array = True
        #nAttr.dynamic = True
        nAttr.usesArrayDataBuilder = True

        cls.inAttrs.append(tAttr.create('names', 'names', sData.kString))
        tAttr.array = True
        #nAttr.dynamic = True
        tAttr.usesArrayDataBuilder = True
        '''
        cls.attrOutTrig = nAttr.create( 'outTrig', 'outTrig' , nData.kFloat  )   
        nAttr.setReadable(True) 
        nAttr.setStorable(True)
        nAttr.setConnectable(True) 
        '''

        for i in range(0, len(cls.inAttrs)):
            cls.addAttribute(cls.inAttrs[i])

        #INFLUENCE
        '''
コード例 #16
0
    def initialize():
        mtxMFnAttr = om2.MFnMatrixAttribute()
        compoundMFnAttr = om2.MFnCompoundAttribute()
        numericMFnAttr = om2.MFnNumericAttribute()
        numMFnAttr = om2.MFnNumericAttribute()
        mFnNumericData = om2.MFnNumericData()

        Matrix2Vectors.mtxIn = mtxMFnAttr.create('matrixIn', 'mtxIn')
        mtxMFnAttr.readable = True
        mtxMFnAttr.writable = True
        mtxMFnAttr.storable = True
        Matrix2Vectors.addAttribute(Matrix2Vectors.mtxIn)

        Matrix2Vectors.row0 = compoundMFnAttr.create('row0', 'row0')
        r0XChild = numMFnAttr.create("r0X", "r0X", mFnNumericData.kFloat)
        r0YChild = numMFnAttr.create("r0Y", "r0Y", mFnNumericData.kFloat)
        r0ZChild = numMFnAttr.create("r0Z", "r0Z", mFnNumericData.kFloat)
        compoundMFnAttr.readable = True
        compoundMFnAttr.addChild(r0XChild)
        compoundMFnAttr.addChild(r0YChild)
        compoundMFnAttr.addChild(r0ZChild)
        Matrix2Vectors.addAttribute(Matrix2Vectors.row0)

        Matrix2Vectors.row0W = numericMFnAttr.create('row0W', 'row0W', mFnNumericData.kFloat, 0.0)
        compoundMFnAttr.readable = True
        Matrix2Vectors.addAttribute(Matrix2Vectors.row0W)

        Matrix2Vectors.row1 = compoundMFnAttr.create('row1', 'row1')
        r1xChild = numMFnAttr.create("r1X", "r1X", mFnNumericData.kFloat)
        r1yChild = numMFnAttr.create("r1Y", "r1Y", mFnNumericData.kFloat)
        r1zChild = numMFnAttr.create("r1Z", "r1Z", mFnNumericData.kFloat)
        compoundMFnAttr.readable = True
        compoundMFnAttr.addChild(r1xChild)
        compoundMFnAttr.addChild(r1yChild)
        compoundMFnAttr.addChild(r1zChild)
        Matrix2Vectors.addAttribute(Matrix2Vectors.row1)

        Matrix2Vectors.row1W = numericMFnAttr.create('row1W', 'row1W', mFnNumericData.kFloat, 0.0)
        compoundMFnAttr.readable = True
        Matrix2Vectors.addAttribute(Matrix2Vectors.row1W)

        Matrix2Vectors.row2 = compoundMFnAttr.create('row2', 'row2')
        r2xChild = numMFnAttr.create("r2X", "r2X", mFnNumericData.kFloat)
        r2yChild = numMFnAttr.create("r2Y", "r2Y", mFnNumericData.kFloat)
        r2zChild = numMFnAttr.create("r2Z", "r2Z", mFnNumericData.kFloat)
        compoundMFnAttr.readable = True
        compoundMFnAttr.addChild(r2xChild)
        compoundMFnAttr.addChild(r2yChild)
        compoundMFnAttr.addChild(r2zChild)
        Matrix2Vectors.addAttribute(Matrix2Vectors.row2)

        Matrix2Vectors.row2W = numericMFnAttr.create('row2W', 'row2W', mFnNumericData.kFloat, 0.0)
        compoundMFnAttr.readable = True
        Matrix2Vectors.addAttribute(Matrix2Vectors.row2W)

        Matrix2Vectors.row3 = compoundMFnAttr.create('row3', 'row3')
        r3xChild = numMFnAttr.create("r3X", "r3X", mFnNumericData.kFloat)
        r3yChild = numMFnAttr.create("r3Y", "r3Y", mFnNumericData.kFloat)
        r3zChild = numMFnAttr.create("r3Z", "r3Z", mFnNumericData.kFloat)
        compoundMFnAttr.readable = True
        compoundMFnAttr.addChild(r3xChild)
        compoundMFnAttr.addChild(r3yChild)
        compoundMFnAttr.addChild(r3zChild)
        Matrix2Vectors.addAttribute(Matrix2Vectors.row3)

        Matrix2Vectors.row3W = numericMFnAttr.create('row3W', 'row3W', mFnNumericData.kFloat, 0.0)
        compoundMFnAttr.readable = True
        Matrix2Vectors.addAttribute(Matrix2Vectors.row3W)

        Matrix2Vectors.attributeAffects(Matrix2Vectors.mtxIn, Matrix2Vectors.row0)
        Matrix2Vectors.attributeAffects(Matrix2Vectors.mtxIn, Matrix2Vectors.row0W)

        Matrix2Vectors.attributeAffects(Matrix2Vectors.mtxIn, Matrix2Vectors.row1)
        Matrix2Vectors.attributeAffects(Matrix2Vectors.mtxIn, Matrix2Vectors.row1W)

        Matrix2Vectors.attributeAffects(Matrix2Vectors.mtxIn, Matrix2Vectors.row2)
        Matrix2Vectors.attributeAffects(Matrix2Vectors.mtxIn, Matrix2Vectors.row2W)

        Matrix2Vectors.attributeAffects(Matrix2Vectors.mtxIn, Matrix2Vectors.row3)
        Matrix2Vectors.attributeAffects(Matrix2Vectors.mtxIn, Matrix2Vectors.row3W)