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
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()
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()
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
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)
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)
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
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
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
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))
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
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)
def set_kNumericData(plug, value): dataObj = plug.asMObject() numFn = api2.MFnNumericData(dataObj) return numFn.setData(value)
def get_kNumericData(plug): dataObj = plug.asMObject() numFn = api2.MFnNumericData(dataObj) return numFn.getData()
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 '''
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)