MStatus ropeGenerator::initialize() { MStatus stat; MFnTypedAttribute tAttr; MFnNumericAttribute nAttr; MRampAttribute rAttr; inCurve = tAttr.create( "inCurve", "inCurve", MFnData::kNurbsCurve ); tAttr.setHidden( true); divisions = nAttr.create( "divisions", "divisions", MFnNumericData::kInt, 15 ); nAttr.setMin( 2 ); nAttr.setSoftMax( 100 ); nAttr.setWritable( true ); nAttr.setKeyable( true ); nAttr.setStorable( true ); createRope = nAttr.create( "createRope", "createRope", MFnNumericData::kBoolean, false ); nAttr.setWritable( true ); nAttr.setStorable( true ); nAttr.setKeyable( true ); ropesCount = nAttr.create( "ropesCount", "ropesCount", MFnNumericData::kInt, 5 ); nAttr.setMin( 3 ); nAttr.setSoftMax( 10 ); nAttr.setWritable( true ); nAttr.setKeyable( true ); nAttr.setStorable( true ); pointsPerRope = nAttr.create( "pointsPerRope", "pointsPerRope", MFnNumericData::kInt, 6 ); nAttr.setMin( 3 ); nAttr.setSoftMax( 15 ); nAttr.setWritable( true ); nAttr.setKeyable( true ); nAttr.setStorable( true ); ropesStrength = nAttr.create( "ropesStrength", "ropesStrength", MFnNumericData::kFloat, 1.0f ); nAttr.setMin( 0.0 ); nAttr.setMax( 1.0 ); nAttr.setWritable( true ); nAttr.setStorable( true ); nAttr.setKeyable( true ); pointsCount = nAttr.create( "pointsCount", "pointsCount", MFnNumericData::kInt, 5 ); nAttr.setMin(3); nAttr.setSoftMax( 20 ); nAttr.setWritable( true ); nAttr.setKeyable( true ); nAttr.setStorable( true ); radius = nAttr.create( "radius", "radius", MFnNumericData::kFloat, 1.0f ); nAttr.setMin( 0.0 ); nAttr.setSoftMax( 30.0 ); nAttr.setKeyable( true ); nAttr.setWritable( true ); nAttr.setStorable( true ); taperRamp = rAttr.createCurveRamp( "tapper", "tapper" ); twist = nAttr.create( "twist", "twist", MFnNumericData::kFloat, 0.0f ); nAttr.setSoftMin( -3600.0 ); nAttr.setSoftMax( 3600.0 ); nAttr.setWritable( true ); nAttr.setKeyable( true ); nAttr.setStorable( true ); twistRamp = rAttr.createCurveRamp( "twistRamp", "twistRamp" ); uvWidth = nAttr.create( "uvWidth", "uvWidth", MFnNumericData::kFloat, 1.0f ); nAttr.setWritable( true ); nAttr.setKeyable( true ); nAttr.setStorable( true ); uvHeight = nAttr.create( "uvHeight", "uvHeight", MFnNumericData::kFloat, 1.0f ); nAttr.setWritable( true ); nAttr.setKeyable( true ); nAttr.setStorable( true ); uvCapSize = nAttr.create( "uvCapSize", "uvCapSize", MFnNumericData::kFloat, 1.0f ); nAttr.setWritable( true ); nAttr.setKeyable( true ); nAttr.setStorable( true ); outMesh = tAttr.create( "outMesh", "outMesh", MFnData::kMesh ); tAttr.setWritable( false ); tAttr.setStorable( false ); stat = addAttribute( inCurve ); if (!stat) { stat.perror("addAttribute inCurve"); return stat;} stat = addAttribute( divisions ); if (!stat) { stat.perror("addAttribute divisions"); return stat;} stat = addAttribute( createRope ); if (!stat) { stat.perror("addAttribute createRope"); return stat;} stat = addAttribute( ropesCount ); if (!stat) { stat.perror("addAttribute ropesCount"); return stat;} stat = addAttribute( pointsPerRope ); if (!stat) { stat.perror("addAttribute pointsPerRope"); return stat;} stat = addAttribute( ropesStrength ); if (!stat) { stat.perror("addAttribute ropesStrength"); return stat;} stat = addAttribute( pointsCount ); if (!stat) { stat.perror("addAttribute pointsCount"); return stat;} stat = addAttribute( radius ); if (!stat) { stat.perror("addAttribute radius"); return stat;} stat = addAttribute( taperRamp ); if (!stat) { stat.perror("addAttribute taperRamp"); return stat;} stat = addAttribute( twist ); if (!stat) { stat.perror("addAttribute twist"); return stat;} stat = addAttribute( twistRamp ); if (!stat) { stat.perror("addAttribute twistRamp"); return stat;} stat = addAttribute( uvWidth ); if (!stat) { stat.perror("addAttribute uvWidth"); return stat;} stat = addAttribute( uvHeight ); if (!stat) { stat.perror("addAttribute uvHeight"); return stat;} stat = addAttribute( uvCapSize ); if (!stat) { stat.perror("addAttribute uvCapSize"); return stat;} stat = addAttribute( outMesh ); if (!stat) { stat.perror("addAttribute outMesh"); return stat;} stat = attributeAffects( inCurve, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( divisions, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( createRope, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( ropesCount, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( pointsPerRope, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( ropesStrength, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( pointsCount, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( radius, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( taperRamp, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( twist, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( twistRamp, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( uvWidth, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( uvHeight, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( uvCapSize, outMesh ); if (!stat) { stat.perror("attributeAffects"); return stat;} return MS::kSuccess; }
MStatus pointOnSubd::initialize() // // Description: // This method is called to create and initialize all of the attributes // and attribute dependencies for this node type. This is only called // once when the node type is registered with Maya. // // Return Values: // MS::kSuccess // MS::kFailure // { MStatus stat; MFnTypedAttribute subdAttr; aSubd = subdAttr.create( "subd", "s", MFnSubdData::kSubdSurface, &stat ); McheckErr( stat, "cannot create pointOnSubd::aSubd" ); subdAttr.setStorable(true); subdAttr.setKeyable(false); subdAttr.setReadable( true ); subdAttr.setWritable( true ); subdAttr.setCached( false ); stat = addAttribute( pointOnSubd::aSubd ); McheckErr( stat, "cannot add pointOnSubd::aSubd" ); MFnNumericAttribute faceFirstAttr; aFaceFirst = faceFirstAttr.create( "faceFirst", "ff", MFnNumericData::kLong, 0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aFaceFirst" ); faceFirstAttr.setStorable(true); faceFirstAttr.setKeyable(true); faceFirstAttr.setSoftMin( 0.0 ); faceFirstAttr.setReadable( true ); faceFirstAttr.setWritable( true ); faceFirstAttr.setCached( false ); stat = addAttribute( pointOnSubd::aFaceFirst ); McheckErr( stat, "cannot add pointOnSubd::aFaceFirst" ); MFnNumericAttribute faceSecondAttr; aFaceSecond = faceSecondAttr.create( "faceSecond", "fs", MFnNumericData::kLong, 0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aFaceSecond" ); faceSecondAttr.setStorable(true); faceSecondAttr.setKeyable(true); faceSecondAttr.setSoftMin( 0.0 ); faceSecondAttr.setReadable( true ); faceSecondAttr.setWritable( true ); faceSecondAttr.setCached( false ); stat = addAttribute( pointOnSubd::aFaceSecond ); McheckErr( stat, "cannot add pointOnSubd::aFaceSecond" ); MFnNumericAttribute uAttr; aU = uAttr.create( "uValue", "u", MFnNumericData::kDouble, 0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aU" ); uAttr.setStorable(true); uAttr.setKeyable(true); uAttr.setSoftMin( 0.0 ); uAttr.setSoftMax( 1.0 ); uAttr.setReadable( true ); uAttr.setWritable( true ); uAttr.setCached( false ); stat = addAttribute( aU ); McheckErr( stat, "cannot add pointOnSubd::aU" ); MFnNumericAttribute vAttr; aV = vAttr.create( "vValue", "v", MFnNumericData::kDouble, 0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aV" ); vAttr.setStorable(true); vAttr.setKeyable(true); vAttr.setSoftMin( 0.0 ); vAttr.setSoftMax( 1.0 ); vAttr.setReadable( true ); vAttr.setWritable( true ); vAttr.setCached( false ); stat = addAttribute( aV ); McheckErr( stat, "cannot add pointOnSubd::aV" ); MFnNumericAttribute relAttr; aRelativeUV = relAttr.create( "relative", "rel", MFnNumericData::kBoolean, 0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aRelativeUV" ); relAttr.setStorable(true); relAttr.setKeyable(true); relAttr.setSoftMin( 0.0 ); relAttr.setSoftMax( 1.0 ); relAttr.setReadable( true ); relAttr.setWritable( true ); relAttr.setCached( false ); stat = addAttribute( pointOnSubd::aRelativeUV ); McheckErr( stat, "cannot add pointOnSubd::aRelativeUV" ); MFnNumericAttribute pointXAttr; aPointX = pointXAttr.create( "pointX", "px", MFnNumericData::kDouble, 0.0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aPointX" ); pointXAttr.setWritable(false); pointXAttr.setStorable(false); pointXAttr.setReadable( true ); pointXAttr.setCached( true ); stat = addAttribute( aPointX ); McheckErr( stat, "cannot add pointOnSubd::aPointX" ); MFnNumericAttribute pointYAttr; aPointY = pointYAttr.create( "pointY", "py", MFnNumericData::kDouble, 0.0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aPointY" ); pointYAttr.setWritable(false); pointYAttr.setStorable(false); pointYAttr.setReadable( true ); pointYAttr.setCached( true ); stat = addAttribute( aPointY ); McheckErr( stat, "cannot add pointOnSubd::aPointY" ); MFnNumericAttribute pointZAttr; aPointZ = pointZAttr.create( "pointZ", "pz", MFnNumericData::kDouble, 0.0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aPointZ" ); pointZAttr.setWritable(false); pointZAttr.setStorable(false); pointZAttr.setReadable( true ); pointZAttr.setCached( true ); stat = addAttribute( aPointZ ); McheckErr( stat, "cannot add pointOnSubd::aPointZ" ); MFnNumericAttribute pointAttr; aPoint = pointAttr.create( "point", "p", aPointX, aPointY, aPointZ, &stat); McheckErr( stat, "cannot create pointOnSubd::aPoint" ); pointAttr.setWritable(false); pointAttr.setStorable(false); pointAttr.setReadable( true ); pointAttr.setCached( true ); stat = addAttribute( aPoint ); McheckErr( stat, "cannot add pointOnSubd::aPoint" ); MFnNumericAttribute normalXAttr; aNormalX = normalXAttr.create( "normalX", "nx", MFnNumericData::kDouble, 0.0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aNormal" ); normalXAttr.setWritable(false); normalXAttr.setStorable(false); normalXAttr.setReadable( true ); normalXAttr.setCached( true ); stat = addAttribute( aNormalX ); McheckErr( stat, "cannot add pointOnSubd::aNormalX" ); MFnNumericAttribute normalYAttr; aNormalY = normalYAttr.create( "normalY", "ny", MFnNumericData::kDouble, 0.0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aNormal" ); normalYAttr.setWritable(false); normalYAttr.setStorable(false); normalYAttr.setReadable( true ); normalYAttr.setCached( true ); stat = addAttribute( aNormalY ); McheckErr( stat, "cannot add pointOnSubd::aNormalY" ); MFnNumericAttribute normalZAttr; aNormalZ = normalZAttr.create( "normalZ", "nz", MFnNumericData::kDouble, 0.0, &stat ); McheckErr( stat, "cannot create pointOnSubd::aNormal" ); normalZAttr.setWritable(false); normalZAttr.setStorable(false); normalZAttr.setReadable( true ); normalZAttr.setCached( true ); stat = addAttribute( aNormalZ ); McheckErr( stat, "cannot add pointOnSubd::aNormalZ" ); MFnNumericAttribute normalAttr; aNormal = normalAttr.create("normal","n",aNormalX,aNormalY,aNormalZ,&stat); McheckErr( stat, "cannot create pointOnSubd::aNormal" ); normalAttr.setWritable(false); normalAttr.setStorable(false); normalAttr.setReadable( true ); normalAttr.setCached( true ); stat = addAttribute( aNormal ); McheckErr( stat, "cannot add pointOnSubd::aNormal" ); // Set up a dependency between the input and the output. This will cause // the output to be marked dirty when the input changes. The output will // then be recomputed the next time the value of the output is requested. // stat = attributeAffects( aSubd, aPoint ); stat = attributeAffects( aSubd, aPointX ); stat = attributeAffects( aSubd, aPointY ); stat = attributeAffects( aSubd, aPointZ ); stat = attributeAffects( aSubd, aNormal ); stat = attributeAffects( aSubd, aNormalX ); stat = attributeAffects( aSubd, aNormalY ); stat = attributeAffects( aSubd, aNormalZ ); stat = attributeAffects( aFaceFirst, aPoint ); stat = attributeAffects( aFaceFirst, aPointX ); stat = attributeAffects( aFaceFirst, aPointY ); stat = attributeAffects( aFaceFirst, aPointZ ); stat = attributeAffects( aFaceFirst, aNormal ); stat = attributeAffects( aFaceFirst, aNormalX ); stat = attributeAffects( aFaceFirst, aNormalY ); stat = attributeAffects( aFaceFirst, aNormalZ ); stat = attributeAffects( aFaceSecond, aPoint ); stat = attributeAffects( aFaceSecond, aPointX ); stat = attributeAffects( aFaceSecond, aPointY ); stat = attributeAffects( aFaceSecond, aPointZ ); stat = attributeAffects( aFaceSecond, aNormal ); stat = attributeAffects( aFaceSecond, aNormalX ); stat = attributeAffects( aFaceSecond, aNormalY ); stat = attributeAffects( aFaceSecond, aNormalZ ); stat = attributeAffects( aU, aPoint ); stat = attributeAffects( aU, aPointX ); stat = attributeAffects( aU, aPointY ); stat = attributeAffects( aU, aPointZ ); stat = attributeAffects( aU, aNormal ); stat = attributeAffects( aU, aNormalX ); stat = attributeAffects( aU, aNormalY ); stat = attributeAffects( aU, aNormalZ ); stat = attributeAffects( aV, aPoint ); stat = attributeAffects( aV, aPointX ); stat = attributeAffects( aV, aPointY ); stat = attributeAffects( aV, aPointZ ); stat = attributeAffects( aV, aNormal ); stat = attributeAffects( aV, aNormalX ); stat = attributeAffects( aV, aNormalY ); stat = attributeAffects( aV, aNormalZ ); stat = attributeAffects( aRelativeUV, aPoint ); stat = attributeAffects( aRelativeUV, aPointX ); stat = attributeAffects( aRelativeUV, aPointY ); stat = attributeAffects( aRelativeUV, aPointZ ); stat = attributeAffects( aRelativeUV, aNormal ); stat = attributeAffects( aRelativeUV, aNormalX ); stat = attributeAffects( aRelativeUV, aNormalY ); stat = attributeAffects( aRelativeUV, aNormalZ ); return MS::kSuccess; }
MStatus bruiseMapNode::initialize() { MStatus status; MFnNumericAttribute nAttr; MFnTypedAttribute tAttr; aBias = nAttr.create("bias", "bs", MFnNumericData::kFloat, 0.1f, &status); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable(true)); CHECK_MSTATUS( nAttr.setKeyable(true)); CHECK_MSTATUS( nAttr.setMin(0.f)); amapsize = nAttr.create( "mapsize", "mapsize", MFnNumericData::kInt, 1024 ); nAttr.setStorable(false); nAttr.setKeyable(false); addAttribute( amapsize ); auvset = tAttr.create("uvset", "uv", MFnData::kString, MObject::kNullObj, &status); CHECK_MSTATUS( status ); CHECK_MSTATUS( tAttr.setStorable(true)); CHECK_MSTATUS( tAttr.setKeyable(false)); tAttr.setCached( true ); tAttr.setInternal( true ); zWorks::createMatrixAttr(aworldSpace, "worldSpace", "ws"); aoutput = nAttr.create( "outval", "ov", MFnNumericData::kInt, 1 ); nAttr.setStorable(false); nAttr.setWritable(false); nAttr.setKeyable(false); addAttribute( aoutput ); zWorks::createTypedAttr(agrowth, MString("growMesh"), MString("gm"), MFnData::kMesh); zCheckStatus(addAttribute(agrowth), "ERROR adding grow mesh"); zWorks::createTypedAttr(aguide, MString("guideMesh"), MString("gdm"), MFnData::kMesh); zCheckStatus(addAttribute(aguide), "ERROR adding grow mesh"); astartframe = nAttr.create( "startFrame", "sf", MFnNumericData::kInt, 1 ); nAttr.setStorable(true); nAttr.setKeyable(true); addAttribute( astartframe ); zWorks::createTimeAttr(acurrenttime, MString("currentTime"), MString("ct"), 1.0); zCheckStatus(addAttribute(acurrenttime), "ERROR adding time"); asavemap = nAttr.create( "saveMap", "sm", MFnNumericData::kInt, 0); nAttr.setStorable(false); nAttr.setKeyable(true); addAttribute(asavemap); CHECK_MSTATUS( addAttribute(aBias)); CHECK_MSTATUS( addAttribute(auvset)); addAttribute(aworldSpace); attributeAffects( aBias, aoutput ); attributeAffects( amapsize, aoutput ); attributeAffects( agrowth, aoutput ); attributeAffects( astartframe, aoutput ); attributeAffects( acurrenttime, aoutput ); attributeAffects( aguide, aoutput ); attributeAffects( asavemap, aoutput ); return MS::kSuccess; }
MStatus NuiMayaDeviceGrabber::initialize() // // Description: // This method is called to create and initialize all of the attributes // and attribute dependencies for this node type. This is only called // once when the node type is registered with Maya. // // Return Values: // MS::kSuccess // MS::kFailure // { // This sample creates a single input float attribute and a single // output float attribute. // MFnNumericAttribute nAttr; MFnTypedAttribute typedAttr; MFnUnitAttribute unitAttr; MFnEnumAttribute enumAttr; MStatus stat; aTime = unitAttr.create( "time", "tm", MFnUnitAttribute::kTime, 0.0, &stat ); stat = addAttribute( aTime ); if (!stat) { stat.perror("addAttribute time"); return stat;} aUseCache = nAttr.create( "useCache", "uc", MFnNumericData::kBoolean, false ); // Attribute will be written to files when this type of node is stored nAttr.setStorable(true); // Attribute is keyable and will show up in the channel box stat = addAttribute( aUseCache ); if (!stat) { stat.perror("addAttribute"); return stat;} aDeviceOn = nAttr.create( "deviceOn", "do", MFnNumericData::kBoolean, false ); // Attribute will be written to files when this type of node is stored nAttr.setStorable(true); // Attribute is keyable and will show up in the channel box stat = addAttribute( aDeviceOn ); if (!stat) { stat.perror("addAttribute"); return stat;} aDeviceMode = enumAttr.create( "deviceMode", "dm", NuiRGBDDeviceController::EDeviceMode_VertexColorCamera, &stat ); if (!stat) { stat.perror("create DeviceMode attribute"); return stat;} stat = enumAttr.addField( "Depth,Color", NuiRGBDDeviceController::EDeviceMode_DepthColor ); if (!stat) { stat.perror("add enum type DepthColor"); return stat;} stat = enumAttr.addField( "Depth,Color,Player", NuiRGBDDeviceController::EDeviceMode_VertexColorCamera ); if (!stat) { stat.perror("add enum type DepthColorPlayer"); return stat;} stat = enumAttr.addField( "Depth,Color,Skeleton", NuiRGBDDeviceController::EDeviceMode_VertexColorSkeleton ); if (!stat) { stat.perror("add enum type DepthColorSkeleton"); return stat;} stat = enumAttr.addField( "Depth,Color,Skeleton,Face", NuiRGBDDeviceController::EDeviceMode_VertexColorSkeletonFace ); if (!stat) { stat.perror("add enum type DepthColorSkeletonFace"); return stat;} stat = enumAttr.addField( "Depth,Color,Skeleton,Gesture", NuiRGBDDeviceController::EDeviceMode_VertexColorSkeletonGesture ); if (!stat) { stat.perror("add enum type DepthColorSkeletonGesture"); return stat;} stat = enumAttr.addField( "Color", NuiRGBDDeviceController::EDeviceMode_Color ); if (!stat) { stat.perror("add enum type Color"); return stat;} stat = enumAttr.addField( "Depth", NuiRGBDDeviceController::EDeviceMode_Vertex ); if (!stat) { stat.perror("add enum type Depth"); return stat;} stat = enumAttr.addField( "Skeleton", NuiRGBDDeviceController::EDeviceMode_Skeleton ); if (!stat) { stat.perror("add enum type Skeleton"); return stat;} stat = enumAttr.addField( "Fusion", NuiRGBDDeviceController::EDeviceMode_Fusion ); if (!stat) { stat.perror("add enum type fusion"); return stat;} CHECK_MSTATUS( enumAttr.setHidden( false ) ); CHECK_MSTATUS( enumAttr.setKeyable( false ) ); stat = addAttribute( aDeviceMode ); if (!stat) { stat.perror("addAttribute"); return stat;} aNearMode = nAttr.create( "nearMode", "ne", MFnNumericData::kBoolean, false ); // Attribute will be written to files when this type of node is stored nAttr.setStorable(true); // Attribute is keyable and will show up in the channel box stat = addAttribute( aNearMode ); if (!stat) { stat.perror("addAttribute"); return stat;} aElevationAngle = nAttr.create( "elevationAngle", "ea", MFnNumericData::kInt, 0 ); // Attribute will be written to files when this type of node is stored nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setMin(-27); nAttr.setMax(27); // Attribute is keyable and will show up in the channel box stat = addAttribute( aElevationAngle ); if (!stat) { stat.perror("addAttribute"); return stat;} aPreviewerOn = nAttr.create( "previewerOn", "po", MFnNumericData::kBoolean, false ); // Attribute will be written to files when this type of node is stored nAttr.setStorable(true); // Attribute is keyable and will show up in the channel box stat = addAttribute( aPreviewerOn ); if (!stat) { stat.perror("addAttribute"); return stat;} aKinFuOn = nAttr.create( "fusionOn", "fo", MFnNumericData::kBoolean, false ); // Attribute will be written to files when this type of node is stored nAttr.setStorable(true); // Attribute is keyable and will show up in the channel box stat = addAttribute( aKinFuOn ); if (!stat) { stat.perror("addAttribute"); return stat;} aVolumeVoxelSize = nAttr.create( "volumeVoxelSize", "vvs", MFnNumericData::kFloat, 0.01f ); // Attribute will be written to files when this type of node is stored nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setMin(0.005f); nAttr.setMax(0.02f); // Attribute is keyable and will show up in the channel box stat = addAttribute( aVolumeVoxelSize ); if (!stat) { stat.perror("addAttribute"); return stat;} aShowInvalid = nAttr.create("showInvalid", "siv", MFnNumericData::kBoolean, false, &stat); MCHECKERROR( stat, "create showInvalid attribute" ) nAttr.setKeyable(true); ADD_ATTRIBUTE( aShowInvalid ); aShowOnlyBody = nAttr.create("showOnlyBody", "sc", MFnNumericData::kBoolean, false, &stat); MCHECKERROR( stat, "create showOnlyBody attribute" ) nAttr.setKeyable(true); ADD_ATTRIBUTE( aShowOnlyBody ); aShowMesh = nAttr.create("showMesh", "sm", MFnNumericData::kBoolean, false, &stat); MCHECKERROR( stat, "create showMesh attribute" ) nAttr.setKeyable(true); ADD_ATTRIBUTE( aShowMesh ); aMinDepth = nAttr.create( "nearPlane", "np", MFnNumericData::kShort, 400 ); // Attribute will be written to files when this type of node is stored nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setMin(400); nAttr.setMax(4500); // Attribute is keyable and will show up in the channel box stat = addAttribute( aMinDepth ); if (!stat) { stat.perror("addAttribute"); return stat;} aMaxDepth = nAttr.create( "farPlane", "fp", MFnNumericData::kShort, 4200 ); // Attribute will be written to files when this type of node is stored nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setMin(400); nAttr.setMax(4500); // Attribute is keyable and will show up in the channel box stat = addAttribute( aMaxDepth ); if (!stat) { stat.perror("addAttribute"); return stat;} // ----------------------- OUTPUTS ------------------------- aOutputMappable = typedAttr.create( "outputPointCloud", "opc", NuiMayaMappableData::id, MObject::kNullObj, &stat ); if (!stat) { stat.perror("create outputPointCloud attribute"); return stat;} typedAttr.setWritable( false ); typedAttr.setStorable(false); stat = addAttribute( aOutputMappable ); if (!stat) { stat.perror("addAttribute"); return stat;} aOutputSkeleton = typedAttr.create( "outputSkeleton", "osk", NuiMayaSkeletonData::id, MObject::kNullObj, &stat ); if (!stat) { stat.perror("create outputSkeleton attribute"); return stat;} typedAttr.setWritable( false ); typedAttr.setStorable(false); stat = addAttribute( aOutputSkeleton ); if (!stat) { stat.perror("addAttribute"); return stat;} aOutputMesh = typedAttr.create( "outputMesh", "om", MFnData::kMesh, MObject::kNullObj, &stat ); MCHECKERROR( stat, "create outputSurface attribute" ) typedAttr.setWritable( false ); ADD_ATTRIBUTE( aOutputMesh ); aOutputGesture = typedAttr.create( "outputGesture", "ogs", NuiMayaGestureData::id, MObject::kNullObj, &stat ); if (!stat) { stat.perror("create outputGesture attribute"); return stat;} typedAttr.setWritable( false ); typedAttr.setStorable(false); stat = addAttribute( aOutputGesture ); if (!stat) { stat.perror("addAttribute"); return stat;} aOutputFacialModel = typedAttr.create( "outputFacialModel", "ofm", NuiMayaFacialModelData::id, MObject::kNullObj, &stat ); if (!stat) { stat.perror("create outputFacialModel attribute"); return stat;} typedAttr.setWritable( false ); stat = addAttribute( aOutputFacialModel ); if (!stat) { stat.perror("addAttribute"); return stat;} aFaceRotateX = nAttr.create( "faceRotateX", "frX", MFnNumericData::kDouble, 0.0, &stat ); if (!stat) { stat.perror("create face rotateX attribute"); return stat;} nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); aFaceRotateY = nAttr.create( "faceRotateY", "frY", MFnNumericData::kDouble, 0.0, &stat ); if (!stat) { stat.perror("create face rotateY attribute"); return stat;} nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); aFaceRotateZ = nAttr.create( "faceRotateZ", "frZ", MFnNumericData::kDouble, 0.0, &stat ); if (!stat) { stat.perror("create rotateZ attribute"); return stat;} nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); aFaceRotate = nAttr.create( "faceRotate", "fr", aFaceRotateX, aFaceRotateY, aFaceRotateZ, &stat ); if (!stat) { stat.perror("create face rotate attribute"); return stat;} nAttr.setDefault(0.0f, 0.0f, 0.0f); nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); stat = addAttribute( aFaceRotate ); if (!stat) { stat.perror("addAttribute"); return stat;} aCameraRotateX = nAttr.create( "cameraRotateX", "crX", MFnNumericData::kDouble, 0.0, &stat ); if (!stat) { stat.perror("create cameraRotateX attribute"); return stat;} nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); aCameraRotateY = nAttr.create( "cameraRotateY", "crY", MFnNumericData::kDouble, 0.0, &stat ); if (!stat) { stat.perror("create rotateY attribute"); return stat;} nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); aCameraRotateZ = nAttr.create( "cameraRotateZ", "crZ", MFnNumericData::kDouble, 0.0, &stat ); if (!stat) { stat.perror("create rotateZ attribute"); return stat;} nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); aCameraRotate = nAttr.create( "cameraRotate", "cr", aCameraRotateX, aCameraRotateY, aCameraRotateZ, &stat ); if (!stat) { stat.perror("create cameraRotate attribute"); return stat;} nAttr.setDefault(0.0f, 0.0f, 0.0f); nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); stat = addAttribute( aCameraRotate ); if (!stat) { stat.perror("addAttribute"); return stat;} aCameraTranslateX = nAttr.create( "cameraTranslateX", "ctX", MFnNumericData::kDouble, 0.0, &stat ); if (!stat) { stat.perror("create cameraTranslateX attribute"); return stat;} nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); aCameraTranslateY = nAttr.create( "cameraTranslateY", "ctY", MFnNumericData::kDouble, 0.0, &stat ); if (!stat) { stat.perror("create cameraTranslateY attribute"); return stat;} nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); aCameraTranslateZ = nAttr.create( "cameraTranslateZ", "ctZ", MFnNumericData::kDouble, 0.0, &stat ); if (!stat) { stat.perror("create cameraTranslateZ attribute"); return stat;} nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); aCameraTranslate = nAttr.create( "cameraTranslate", "ct", aCameraTranslateX, aCameraTranslateY, aCameraTranslateZ, &stat ); if (!stat) { stat.perror("create cameraTranslate attribute"); return stat;} nAttr.setDefault(0.0f, 0.0f, 0.0f); nAttr.setReadable( true ); nAttr.setWritable( false ); nAttr.setStorable(true); stat = addAttribute( aCameraTranslate ); if (!stat) { stat.perror("addAttribute"); return stat;} // Set up a dependency between the input and the output. This will cause // the output to be marked dirty when the input changes. The output will // then be recomputed the next time the value of the output is requested. // stat = attributeAffects( aTime, aOutputMappable ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aOutputSkeleton ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aOutputFacialModel ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aFaceRotateX ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aFaceRotateY ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aFaceRotateZ ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aFaceRotate ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aCameraRotateX ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aCameraRotateY ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aCameraRotateZ ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aCameraRotate ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aCameraTranslateX ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aCameraTranslateY ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aCameraTranslateZ ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( aTime, aCameraTranslate ); if (!stat) { stat.perror("attributeAffects"); return stat;} return MS::kSuccess; }
MStatus curveColliderLocator::initialize() { MFnNumericAttribute nAttr; MStatus stat; colliderRadiusIn = nAttr.create( "radius", "rd", MFnNumericData::kDouble ); nAttr.setDefault(1.0); nAttr.setMin(0); nAttr.setKeyable(true); nAttr.setArray(true); nAttr.setStorable(true); nAttr.setWritable(true); stat = addAttribute(colliderRadiusIn); if (!stat) { stat.perror("Could not add colliderRadiusIn attribute"); return stat; } // CREATE AND ADD ".inCurve" ATTRIBUTE: MFnTypedAttribute inCurveAttrFn; colliderCurveIn = inCurveAttrFn.create("colliderCurve", "ic", MFnData::kNurbsCurve); inCurveAttrFn.setStorable(true); inCurveAttrFn.setKeyable(false); inCurveAttrFn.setReadable(true); inCurveAttrFn.setWritable(true); inCurveAttrFn.setCached(false); stat = addAttribute(colliderCurveIn); if (!stat) { stat.perror("Could not add colliderCurveIn attribute"); return stat; } MFnMatrixAttribute mAttr; colliderXform =mAttr.create("colliderXfm", "cx"); mAttr.setReadable(false); mAttr.setKeyable(false); mAttr.setConnectable(true); stat = addAttribute( colliderXform ); if (!stat) { stat.perror("Could not add colliderXform attribute"); return stat; } colliderColorR = nAttr.create( "colorR", "clr", MFnNumericData::kFloat ); nAttr.setDefault(0.2f); nAttr.setMin(0.0f); nAttr.setMax(1.0f); nAttr.setKeyable(true); nAttr.setStorable(true); nAttr.setReadable(true); nAttr.setWritable(true); stat = addAttribute(colliderColorR); if (!stat) { stat.perror("Could not add colliderColorR attribute"); return stat; } colliderColorG = nAttr.create( "colorG", "clg", MFnNumericData::kFloat ); nAttr.setDefault(0.2f); nAttr.setMin(0.0f); nAttr.setMax(1.0f); nAttr.setKeyable(true); nAttr.setStorable(true); nAttr.setReadable(true); nAttr.setWritable(true); stat = addAttribute(colliderColorG); if (!stat) { stat.perror("Could not add colliderColorG attribute"); return stat; } colliderColorB = nAttr.create( "colorB", "clb", MFnNumericData::kFloat ); nAttr.setDefault(0.8f); nAttr.setMin(0.0f); nAttr.setMax(1.0f); nAttr.setKeyable(true); nAttr.setStorable(true); nAttr.setReadable(true); nAttr.setWritable(true); stat = addAttribute(colliderColorB); if (!stat) { stat.perror("Could not add colliderColorB attribute"); return stat; } colliderTransparency = nAttr.create( "colorT", "clt", MFnNumericData::kFloat ); nAttr.setDefault(1.0f); nAttr.setMin(0.0f); nAttr.setMax(1.0f); nAttr.setKeyable(true); nAttr.setStorable(true); nAttr.setReadable(true); nAttr.setWritable(true); stat = addAttribute(colliderTransparency); if (!stat) { stat.perror("Could not add colliderTransparency attribute"); return stat; } return MS::kSuccess; }
MStatus CoronaSurface::initialize() { MFnNumericAttribute nAttr; MFnLightDataAttribute lAttr; MFnTypedAttribute tAttr; MFnGenericAttribute gAttr; MFnEnumAttribute eAttr; MFnMessageAttribute mAttr; MStatus status; // Status will be used to hold the MStatus value // returned by each api function call. It is important // to check the status returned by a call to aid in // debugging. Failed API calls can result in subtle // errors that can be difficult to track down, you may // wish to use the CHECK_MSTATUS macro for any API // call where you do not need to provide your own // error handling. // //---------------------------- automatically created attributes start ------------------------------------ emissionExponent = nAttr.create("emissionExponent", "emissionExponent", MFnNumericData::kFloat, 0.0); CHECK_MSTATUS(addAttribute( emissionExponent )); fresnelIor = nAttr.create("fresnelIor", "fresnelIor", MFnNumericData::kFloat, 1.0); CHECK_MSTATUS(addAttribute( fresnelIor )); roundCornersSamples = nAttr.create("roundCornersSamples", "roundCornersSamples", MFnNumericData::kInt, 10); CHECK_MSTATUS(addAttribute( roundCornersSamples )); emissionSharpnessFake = nAttr.create("emissionSharpnessFake", "emissionSharpnessFake", MFnNumericData::kBoolean, false); CHECK_MSTATUS(addAttribute( emissionSharpnessFake )); attenuationColor = nAttr.createColor("attenuationColor", "attenuationColor"); nAttr.setDefault(0,0,0); CHECK_MSTATUS(addAttribute( attenuationColor )); glassMode = eAttr.create("glassMode", "glassMode", 0, &status); status = eAttr.addField( "OneSided", 0 ); status = eAttr.addField( "TwoSided", 1 ); status = eAttr.addField( "Hybrid", 2 ); CHECK_MSTATUS(addAttribute( glassMode )); reflectivity = nAttr.createColor("reflectivity", "reflectivity"); nAttr.setDefault(0,0,0); CHECK_MSTATUS(addAttribute( reflectivity )); translucency = nAttr.createColor("translucency", "translucency"); nAttr.setDefault(0,0,0); CHECK_MSTATUS(addAttribute( translucency )); volumeEmissionColor = nAttr.createColor("volumeEmissionColor", "volumeEmissionColor"); nAttr.setDefault(0,0,0); CHECK_MSTATUS(addAttribute( volumeEmissionColor )); anisotropyRotation = nAttr.create("anisotropyRotation", "anisotropyRotation", MFnNumericData::kFloat, 0.0); CHECK_MSTATUS(addAttribute( anisotropyRotation )); reflectionGlossiness = nAttr.create("reflectionGlossiness", "reflectionGlossiness", MFnNumericData::kFloat, 1.0); CHECK_MSTATUS(addAttribute( reflectionGlossiness )); volumeEmissionDist = nAttr.create("volumeEmissionDist", "volumeEmissionDist", MFnNumericData::kFloat, 0.0); CHECK_MSTATUS(addAttribute( volumeEmissionDist )); roundCornersRadius = nAttr.create("roundCornersRadius", "roundCornersRadius", MFnNumericData::kFloat, 0.0); CHECK_MSTATUS(addAttribute( roundCornersRadius )); refractionGlossiness = nAttr.create("refractionGlossiness", "refractionGlossiness", MFnNumericData::kFloat, 1.0); CHECK_MSTATUS(addAttribute( refractionGlossiness )); diffuse = nAttr.createColor("diffuse", "diffuse"); nAttr.setDefault(0.7,0.7,0.7); CHECK_MSTATUS(addAttribute( diffuse )); refractivity = nAttr.createColor("refractivity", "refractivity"); nAttr.setDefault(0,0,0); CHECK_MSTATUS(addAttribute( refractivity )); brdfType = eAttr.create("brdfType", "brdfType", 0, &status); status = eAttr.addField( "Phong", 0 ); status = eAttr.addField( "Ward", 1 ); status = eAttr.addField( "Ashikmin", 2 ); status = eAttr.addField( "Fake Ward", 3 ); CHECK_MSTATUS(addAttribute( brdfType )); emissionColor = nAttr.createColor("emissionColor", "emissionColor"); nAttr.setDefault(0,0,0); CHECK_MSTATUS(addAttribute( emissionColor )); anisotropy = nAttr.create("anisotropy", "anisotropy", MFnNumericData::kFloat, 0.5); CHECK_MSTATUS(addAttribute( anisotropy )); refractionIndex = nAttr.create("refractionIndex", "refractionIndex", MFnNumericData::kFloat, 1.2); CHECK_MSTATUS(addAttribute( refractionIndex )); emissionDisableSampling = nAttr.create("emissionDisableSampling", "emissionDisableSampling", MFnNumericData::kBoolean, false); CHECK_MSTATUS(addAttribute( emissionDisableSampling )); attenuationDist = nAttr.create("attenuationDist", "attenuationDist", MFnNumericData::kFloat, 0.0); CHECK_MSTATUS(addAttribute( attenuationDist )); //---------------------------- automatically created attributes end ------------------------------------ // Input Attributes // aTranslucenceCoeff = nAttr.create( "translucenceCoeff", "tc", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 0.0f ) ); aDiffuseReflectivity = nAttr.create( "diffuseReflectivity", "drfl", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 0.8f ) ); aColor = nAttr.createColor( "color", "c", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 0.0f, 0.58824f, 0.644f ) ); aIncandescence = nAttr.createColor( "incandescence", "ic", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 0.0f, 0.0f, 0.0f ) ); aInTransparency = nAttr.createColor( "transparency", "it", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 0.0f, 0.0f, 0.0f ) ); // Color Output // aOutColor = nAttr.createColor( "outColor", "oc", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setHidden( false ) ); CHECK_MSTATUS( nAttr.setReadable( true ) ); CHECK_MSTATUS( nAttr.setWritable( false ) ); aOutTransparency = nAttr.createColor( "outTransparency", "ot", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setHidden( false ) ); CHECK_MSTATUS( nAttr.setReadable( true ) ); CHECK_MSTATUS( nAttr.setWritable( false ) ); // Camera Normals // aNormalCameraX = nAttr.create( "normalCameraX", "nx", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aNormalCameraY = nAttr.create( "normalCameraY", "ny", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aNormalCameraZ = nAttr.create( "normalCameraZ", "nz", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aNormalCamera = nAttr.create( "normalCamera","n", aNormalCameraX, aNormalCameraY, aNormalCameraZ, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f, 1.0f, 1.0f ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); // Light Direction // aLightDirectionX = nAttr.create( "lightDirectionX", "ldx", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightDirectionY = nAttr.create( "lightDirectionY", "ldy", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightDirectionZ = nAttr.create( "lightDirectionZ", "ldz", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightDirection = nAttr.create( "lightDirection", "ld", aLightDirectionX, aLightDirectionY, aLightDirectionZ, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f, 1.0f, 1.0f ) ); // Light Intensity // aLightIntensityR = nAttr.create( "lightIntensityR", "lir", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightIntensityG = nAttr.create( "lightIntensityG", "lig", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightIntensityB = nAttr.create( "lightIntensityB", "lib", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightIntensity = nAttr.create( "lightIntensity", "li", aLightIntensityR, aLightIntensityG, aLightIntensityB, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f, 1.0f, 1.0f ) ); // Light // aLightAmbient = nAttr.create( "lightAmbient", "la", MFnNumericData::kBoolean, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( true ) ); aLightDiffuse = nAttr.create( "lightDiffuse", "ldf", MFnNumericData::kBoolean, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( true ) ); aLightSpecular = nAttr.create( "lightSpecular", "ls", MFnNumericData::kBoolean, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( false ) ); aLightShadowFraction = nAttr.create( "lightShadowFraction", "lsf", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aPreShadowIntensity = nAttr.create( "preShadowIntensity", "psi", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightBlindData = nAttr.createAddr( "lightBlindData", "lbld", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); aLightData = lAttr.create( "lightDataArray", "ltd", aLightDirection, aLightIntensity, aLightAmbient, aLightDiffuse, aLightSpecular, aLightShadowFraction, aPreShadowIntensity, aLightBlindData, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( lAttr.setArray( true ) ); CHECK_MSTATUS( lAttr.setStorable( false ) ); CHECK_MSTATUS( lAttr.setHidden( true ) ); CHECK_MSTATUS( lAttr.setDefault( 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, true, true, false, 1.0f, 1.0f, NULL ) ); // Next we will add the attributes we have defined to the node // CHECK_MSTATUS( addAttribute( aTranslucenceCoeff ) ); CHECK_MSTATUS( addAttribute( aDiffuseReflectivity ) ); CHECK_MSTATUS( addAttribute( aColor ) ); CHECK_MSTATUS( addAttribute( aIncandescence ) ); CHECK_MSTATUS( addAttribute( aInTransparency ) ); CHECK_MSTATUS( addAttribute( aOutColor ) ); CHECK_MSTATUS( addAttribute( aOutTransparency ) ); CHECK_MSTATUS( addAttribute( aNormalCamera ) ); // Only add the parent of the compound CHECK_MSTATUS( addAttribute( aLightData ) ); // The attributeAffects() method is used to indicate when the input // attribute affects the output attribute. This knowledge allows Maya // to optimize dependencies in the graph in more complex nodes where // there may be several inputs and outputs, but not all the inputs // affect all the outputs. // CHECK_MSTATUS( attributeAffects( aTranslucenceCoeff, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aDiffuseReflectivity, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aColor, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aInTransparency, aOutTransparency ) ); CHECK_MSTATUS( attributeAffects( aInTransparency, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aIncandescence, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightIntensityR, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightIntensityB, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightIntensityG, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightIntensity, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aNormalCameraX, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aNormalCameraY, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aNormalCameraZ, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aNormalCamera, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightDirectionX, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightDirectionY, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightDirectionZ, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightDirection, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightAmbient, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightSpecular, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightDiffuse, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightShadowFraction, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aPreShadowIntensity, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightBlindData, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightData, aOutColor ) ); return( MS::kSuccess ); }
MStatus testGlassCmd::doIt(const MArgList &args) { MStatus stat=MStatus::kSuccess; MSelectionList list; MFnDependencyNode meshDependFn; MFnDependencyNode materialDependFn; MDGModifier dgMod; //create a new material node, here is the test glass node MObject testGNode=dgMod.createNode(testGlassNode::id); materialDependFn.setObject(testGNode); MString testName=materialDependFn.name(); MGlobal::displayInfo(testName+" god, please give me the node first time"); //find the mesh node(s) from selected object(s) //create a new "yafaray material" attribute if the mesh node(s) dont have //then conect the material node to the mesh node(s) MGlobal::getActiveSelectionList( list ); MItSelectionList iter( list, MFn::kMesh ); for( ; !iter.isDone(); iter.next()) { MObject meshDependNode; MFnNumericAttribute numAttr; iter.getDependNode( meshDependNode ); meshDependFn.setObject( meshDependNode ); //MString dependName=dependFn.name(); //MGlobal::displayInfo(dependName+" is here\n"); if( !meshDependFn.hasAttribute("YafarayMaterial") ) { MObject attrYafarayMaterial=numAttr.create("YafarayMaterial","yama",MFnNumericData::kBoolean); numAttr.setDefault( true ); numAttr.setStorable( true ); meshDependFn.addAttribute(attrYafarayMaterial,MFnDependencyNode::kLocalDynamicAttr); } //find the source plug and the result plug, then connect them //if the result plug as already had a sourse plug connected to it, disconnect first MPlug glassPlug=materialDependFn.findPlug("OutGlass"); MPlug meshPlug=meshDependFn.findPlug("YafarayMaterial"); MPlugArray srcMeshPlug; if(meshPlug.connectedTo(srcMeshPlug, true, false)) { MPlug srcPlug; //if(srcMeshPlug.length!=0) //{ srcPlug=srcMeshPlug[0]; //} dgMod.disconnect(srcPlug, meshPlug); } dgMod.connect(glassPlug,meshPlug); } dgMod.doIt(); //why still cant got the name here? MGlobal::displayInfo(testName+" god, please give me the node second time"); return stat; }
MStatus buildRotation::initialize() { MFnNumericAttribute nAttr; MFnMatrixAttribute mAttr; MFnUnitAttribute uAttr; MFnEnumAttribute eAttr; MStatus stat; // Set up inputs // upX = nAttr.create( "upX", "ux", MFnNumericData::kDouble ); nAttr.setStorable(false); upY = nAttr.create( "upY", "uy", MFnNumericData::kDouble ); nAttr.setStorable(false); upZ = nAttr.create( "upZ", "uz", MFnNumericData::kDouble ); nAttr.setStorable(false); up = nAttr.create( "up", "u", upX, upY, upZ ); nAttr.setDefault( 0.0, 1.0, 0.0 ); nAttr.setStorable(false); forwardX = nAttr.create( "forwardX", "fx", MFnNumericData::kDouble, 0.0 ); nAttr.setStorable(false); forwardY = nAttr.create( "forwardY", "fy", MFnNumericData::kDouble, 0.0 ); nAttr.setStorable(false); forwardZ = nAttr.create( "forwardZ", "fz", MFnNumericData::kDouble, 1.0 ); nAttr.setStorable(false); forward = nAttr.create( "forward", "f", forwardX, forwardY, forwardZ ); nAttr.setDefault( 0.0, 0.0, 1.0 ); nAttr.setStorable(false); rotateOrder = eAttr.create( "rotateOrder", "ro", ROTATE_ORDER_XYZ); eAttr.addField("xyz", ROTATE_ORDER_XYZ); eAttr.addField("yzx", ROTATE_ORDER_YZX); eAttr.addField("zxy", ROTATE_ORDER_ZXY); eAttr.addField("xzy", ROTATE_ORDER_XZY); eAttr.addField("yxz", ROTATE_ORDER_YXZ); eAttr.addField("zyx", ROTATE_ORDER_ZYX); eAttr.setStorable(false); // Set up outputs // rotateX = uAttr.create( "rotateX", "rx", MFnUnitAttribute::kAngle, 0.0 ); nAttr.setStorable(false); rotateY = uAttr.create( "rotateY", "ry", MFnUnitAttribute::kAngle, 0.0 ); nAttr.setStorable(false); rotateZ = uAttr.create( "rotateZ", "rz", MFnUnitAttribute::kAngle, 0.0 ); nAttr.setStorable(false); rotate = nAttr.create( "rotate", "r", rotateX, rotateY, rotateZ ); nAttr.setStorable(false); rotateMatrix = mAttr.create( "rotateMatrix", "rm" ); nAttr.setStorable(false); nAttr.setConnectable(true); stat = addAttribute( up ); if (!stat) { stat.perror("addAttribute"); return stat;} stat = addAttribute( forward ); if (!stat) { stat.perror("addAttribute"); return stat;} stat = addAttribute( rotate ); if (!stat) { stat.perror("addAttribute"); return stat;} stat = addAttribute( rotateOrder ); if (!stat) { stat.perror("addAttribute"); return stat;} stat = addAttribute( rotateMatrix ); if (!stat) { stat.perror("addAttribute"); return stat;} stat = attributeAffects( up, rotate ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( up, rotateMatrix ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( forward, rotate ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( forward, rotateMatrix ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( rotateOrder, rotate ); if (!stat) { stat.perror("attributeAffects"); return stat;} stat = attributeAffects( rotateOrder, rotateMatrix ); if (!stat) { stat.perror("attributeAffects"); return stat;} return MS::kSuccess; }
MStatus AimNode::initialize() { MStatus status; MFnNumericAttribute nAttr; MFnMatrixAttribute mAttr; MFnUnitAttribute uAttr; aDriverMatrix = mAttr.create("driverMatrix", "dvm"); mAttr.setStorable(true); mAttr.setKeyable(true); mAttr.setWritable(true); addAttribute(aDriverMatrix); aUpVectorMatrix = mAttr.create("upVectorMatrix", "uvm"); mAttr.setStorable(true); mAttr.setKeyable(true); mAttr.setWritable(true); addAttribute(aUpVectorMatrix); //translateX aInputTranslateX = nAttr.create("translateX", "tx", MFnNumericData::kDouble, 0); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setWritable(true); addAttribute(aInputTranslateX); //translateY aInputTranslateY = nAttr.create("translateY", "ty", MFnNumericData::kDouble, 0); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setWritable(true); addAttribute(aInputTranslateY); //translateZ aInputTranslateZ = nAttr.create("translateZ", "tz", MFnNumericData::kDouble, 0); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setWritable(true); addAttribute(aInputTranslateZ); //translate aInputTranslate = nAttr.create("translate", "t", aInputTranslateX, aInputTranslateY, aInputTranslateZ); addAttribute(aInputTranslate); //rotateX aOutputRotateX = uAttr.create("rotateX", "rx", MFnUnitAttribute::kAngle, 0); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setWritable(true); addAttribute(aOutputRotateX); //rotateY aOutputRotateY = uAttr.create("rotateY", "ry", MFnUnitAttribute::kAngle, 0); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setWritable(true); addAttribute(aOutputRotateY); //rotateZ aOutputRotateZ = uAttr.create("rotateZ", "rz", MFnUnitAttribute::kAngle, 0); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setWritable(true); addAttribute(aOutputRotateZ); //rotate aOutputRotate = nAttr.create("rotate", "ro", aOutputRotateX, aOutputRotateY, aOutputRotateZ); addAttribute(aOutputRotate); //parent inverse matrix aParentInverseMatrix = mAttr.create("parentInverse", "parinv"); mAttr.setDefault(MMatrix::identity); addAttribute(aParentInverseMatrix); attributeAffects(aParentInverseMatrix, aOutputRotate); attributeAffects(aDriverMatrix, aOutputRotate); attributeAffects(aUpVectorMatrix, aOutputRotate); attributeAffects(aInputTranslate, aOutputRotate); return MS::kSuccess; }
// INIT ========================================= MStatus gear_rollSplineKine::initialize() { MFnMatrixAttribute mAttr; MFnNumericAttribute nAttr; MStatus stat; // Inputs Matrices ctlParent = mAttr.create( "ctlParent", "ctlp", MFnMatrixAttribute::kDouble ); mAttr.setStorable(true); mAttr.setReadable(false); mAttr.setIndexMatters(false); mAttr.setArray(true); addAttribute( ctlParent ); inputs = mAttr.create( "inputs", "in", MFnMatrixAttribute::kDouble ); mAttr.setStorable(true); mAttr.setReadable(false); mAttr.setIndexMatters(false); mAttr.setArray(true); addAttribute( inputs ); inputsRoll = nAttr.create ( "inputsRoll", "inr", MFnNumericData::kFloat, 0.0 ); nAttr.setArray(true); nAttr.setStorable(true); addAttribute ( inputsRoll ); outputParent = mAttr.create( "outputParent", "outp" ); mAttr.setStorable(true); mAttr.setKeyable(true); mAttr.setConnectable(true); stat = addAttribute( outputParent ); if (!stat) {stat.perror("addAttribute"); return stat;} // Inputs Sliders u = nAttr.create("u", "u", MFnNumericData::kFloat, 0.0); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setMin(0); nAttr.setMax(1); stat = addAttribute( u ); if (!stat) {stat.perror("addAttribute"); return stat;} resample = nAttr.create("resample", "re", MFnNumericData::kBoolean, false); nAttr.setStorable(true); nAttr.setKeyable(true); stat = addAttribute( resample ); if (!stat) {stat.perror("addAttribute"); return stat;} subdiv = nAttr.create("subdiv", "sd", MFnNumericData::kShort, 10); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setMin(3); stat = addAttribute( subdiv ); if (!stat) {stat.perror("addAttribute"); return stat;} absolute = nAttr.create("absolute", "abs", MFnNumericData::kBoolean, false); nAttr.setStorable(true); nAttr.setKeyable(true); stat = addAttribute( absolute ); if (!stat) {stat.perror("addAttribute"); return stat;} // Outputs output = mAttr.create( "output", "out" ); mAttr.setStorable(false); mAttr.setKeyable(false); mAttr.setConnectable(true); stat = addAttribute( output ); if (!stat) {stat.perror("addAttribute"); return stat;} // Connections stat = attributeAffects ( ctlParent, output ); if (!stat) {stat.perror("attributeAffects"); return stat;} stat = attributeAffects ( inputs, output ); if (!stat) {stat.perror("attributeAffects"); return stat;} stat = attributeAffects ( inputsRoll, output ); if (!stat) {stat.perror("attributeAffects"); return stat;} stat = attributeAffects ( outputParent, output ); if (!stat) {stat.perror("attributeAffects"); return stat;} stat = attributeAffects ( u, output ); if (!stat) {stat.perror("attributeAffects"); return stat;} stat = attributeAffects ( resample, output ); if (!stat) {stat.perror("attributeAffects"); return stat;} stat = attributeAffects ( subdiv, output ); if (!stat) {stat.perror("attributeAffects"); return stat;} stat = attributeAffects ( absolute, output ); if (!stat) {stat.perror("attributeAffects"); return stat;} return MS::kSuccess; }
// // DESCRIPTION: /////////////////////////////////////////////////////// MStatus PhongNode::initialize() { MFnNumericAttribute nAttr; MFnLightDataAttribute lAttr; aTranslucenceCoeff = nAttr.create("translucenceCoeff", "tc", MFnNumericData::kFloat); MAKE_INPUT(nAttr); aDiffuseReflectivity = nAttr.create("diffuseReflectivity", "drfl", MFnNumericData::kFloat); MAKE_INPUT(nAttr); CHECK_MSTATUS ( nAttr.setDefault(0.8f) ); aColor = nAttr.createColor( "color", "c" ); MAKE_INPUT(nAttr); CHECK_MSTATUS ( nAttr.setDefault(0.0f, 0.58824f, 0.644f) ); aIncandescence = nAttr.createColor( "incandescence", "ic" ); MAKE_INPUT(nAttr); aOutColor = nAttr.createColor( "outColor", "oc" ); MAKE_OUTPUT(nAttr); aPointCamera = nAttr.createPoint( "pointCamera", "pc" ); MAKE_INPUT(nAttr); CHECK_MSTATUS ( nAttr.setDefault(1.0f, 1.0f, 1.0f) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); aPower = nAttr.create( "power", "pow", MFnNumericData::kFloat); MAKE_INPUT(nAttr); CHECK_MSTATUS ( nAttr.setMin(0.0f) ); CHECK_MSTATUS ( nAttr.setMax(200.0f) ); CHECK_MSTATUS ( nAttr.setDefault(10.0f) ); aSpecularity = nAttr.create( "specularity", "spc", MFnNumericData::kFloat); MAKE_INPUT(nAttr); CHECK_MSTATUS ( nAttr.setMin(0.0f) ); CHECK_MSTATUS ( nAttr.setMax(1.0f) ) ; CHECK_MSTATUS ( nAttr.setDefault(0.5f) ); aReflectGain = nAttr.create( "reflectionGain", "rg", MFnNumericData::kFloat); MAKE_INPUT(nAttr); CHECK_MSTATUS ( nAttr.setMin(0.0f) ); CHECK_MSTATUS ( nAttr.setMax(1.0f) ); CHECK_MSTATUS ( nAttr.setDefault(0.5f) ); aNormalCamera = nAttr.createPoint( "normalCamera", "n" ); MAKE_INPUT(nAttr); CHECK_MSTATUS ( nAttr.setDefault(1.0f, 1.0f, 1.0f) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); aTriangleNormalCamera = nAttr.createPoint( "triangleNormalCamera", "tn" ); MAKE_INPUT(nAttr); CHECK_MSTATUS ( nAttr.setDefault(1.0f, 1.0f, 1.0f)); CHECK_MSTATUS ( nAttr.setHidden(true)); aLightDirection = nAttr.createPoint( "lightDirection", "ld" ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS ( nAttr.setDefault(1.0f, 1.0f, 1.0f) ); aLightIntensity = nAttr.createColor( "lightIntensity", "li" ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS ( nAttr.setDefault(1.0f, 1.0f, 1.0f) ); aLightAmbient = nAttr.create( "lightAmbient", "la", MFnNumericData::kBoolean); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); aLightDiffuse = nAttr.create( "lightDiffuse", "ldf", MFnNumericData::kBoolean); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); aLightSpecular = nAttr.create( "lightSpecular", "ls", MFnNumericData::kBoolean); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); aLightShadowFraction = nAttr.create("lightShadowFraction", "lsf", MFnNumericData::kFloat); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); aPreShadowIntensity = nAttr.create("preShadowIntensity", "psi", MFnNumericData::kFloat); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); aLightBlindData = nAttr.createAddr("lightBlindData", "lbld"); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); aLightData = lAttr.create( "lightDataArray", "ltd", aLightDirection, aLightIntensity, aLightAmbient, aLightDiffuse, aLightSpecular, aLightShadowFraction, aPreShadowIntensity, aLightBlindData); CHECK_MSTATUS ( lAttr.setArray(true) ); CHECK_MSTATUS ( lAttr.setStorable(false) ); CHECK_MSTATUS ( lAttr.setHidden(true) ); CHECK_MSTATUS ( lAttr.setDefault(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, true, true, false, 0.0f, 1.0f, NULL) ); // rayOrigin MObject RayX = nAttr.create( "rayOx", "rxo", MFnNumericData::kFloat, 0.0 ); MObject RayY = nAttr.create( "rayOy", "ryo", MFnNumericData::kFloat, 0.0 ); MObject RayZ = nAttr.create( "rayOz", "rzo", MFnNumericData::kFloat, 0.0 ); aRayOrigin = nAttr.create( "rayOrigin", "rog", RayX, RayY, RayZ ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(false) ); // rayDirection RayX = nAttr.create( "rayDirectionX", "rdx", MFnNumericData::kFloat, 1.0 ); RayY = nAttr.create( "rayDirectionY", "rdy", MFnNumericData::kFloat, 0.0 ); RayZ = nAttr.create( "rayDirectionZ", "rdz", MFnNumericData::kFloat, 0.0 ); aRayDirection = nAttr.create( "rayDirection", "rad", RayX, RayY, RayZ ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(false) ); // objectId aObjectId = nAttr.createAddr( "objectId", "oi" ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(false) ); // raySampler aRaySampler = nAttr.createAddr("raySampler", "rtr"); CHECK_MSTATUS ( nAttr.setStorable(false)); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(false) ); // rayDepth aRayDepth = nAttr.create( "rayDepth", "rd", MFnNumericData::kShort, 0.0 ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS (nAttr.setHidden(true) ) ; CHECK_MSTATUS ( nAttr.setReadable(false) ); CHECK_MSTATUS ( addAttribute(aTranslucenceCoeff) ); CHECK_MSTATUS ( addAttribute(aDiffuseReflectivity) ); CHECK_MSTATUS ( addAttribute(aColor) ); CHECK_MSTATUS ( addAttribute(aIncandescence) ); CHECK_MSTATUS ( addAttribute(aPointCamera) ); CHECK_MSTATUS ( addAttribute(aNormalCamera) ); CHECK_MSTATUS ( addAttribute(aTriangleNormalCamera) ); CHECK_MSTATUS ( addAttribute(aLightData) ); CHECK_MSTATUS ( addAttribute(aPower) ); CHECK_MSTATUS ( addAttribute(aSpecularity) ); CHECK_MSTATUS ( addAttribute(aOutColor) ); CHECK_MSTATUS ( addAttribute(aRayOrigin) ); CHECK_MSTATUS ( addAttribute(aRayDirection) ); CHECK_MSTATUS ( addAttribute(aObjectId) ); CHECK_MSTATUS ( addAttribute(aRaySampler) ); CHECK_MSTATUS ( addAttribute(aRayDepth) ); CHECK_MSTATUS ( addAttribute(aReflectGain) ); CHECK_MSTATUS ( attributeAffects (aTranslucenceCoeff, aOutColor)); CHECK_MSTATUS ( attributeAffects (aDiffuseReflectivity, aOutColor)); CHECK_MSTATUS ( attributeAffects (aLightIntensity, aOutColor)); CHECK_MSTATUS ( attributeAffects (aIncandescence, aOutColor)); CHECK_MSTATUS ( attributeAffects (aPointCamera, aOutColor)); CHECK_MSTATUS ( attributeAffects (aNormalCamera, aOutColor)); CHECK_MSTATUS ( attributeAffects (aTriangleNormalCamera, aOutColor)); CHECK_MSTATUS ( attributeAffects (aLightData, aOutColor)); CHECK_MSTATUS ( attributeAffects (aLightAmbient, aOutColor)); CHECK_MSTATUS ( attributeAffects (aLightSpecular, aOutColor)); CHECK_MSTATUS ( attributeAffects (aLightDiffuse, aOutColor)); CHECK_MSTATUS ( attributeAffects (aLightDirection, aOutColor)); CHECK_MSTATUS ( attributeAffects (aLightShadowFraction, aOutColor)); CHECK_MSTATUS ( attributeAffects (aPreShadowIntensity, aOutColor)); CHECK_MSTATUS ( attributeAffects (aLightBlindData, aOutColor)); CHECK_MSTATUS ( attributeAffects (aPower, aOutColor)); CHECK_MSTATUS ( attributeAffects (aSpecularity, aOutColor)); CHECK_MSTATUS ( attributeAffects (aColor, aOutColor)); CHECK_MSTATUS ( attributeAffects (aRayOrigin,aOutColor)); CHECK_MSTATUS ( attributeAffects (aRayDirection,aOutColor)); CHECK_MSTATUS ( attributeAffects (aObjectId,aOutColor)); CHECK_MSTATUS ( attributeAffects (aRaySampler,aOutColor)); CHECK_MSTATUS ( attributeAffects (aRayDepth,aOutColor)); CHECK_MSTATUS ( attributeAffects (aReflectGain,aOutColor) ); return MS::kSuccess; }
MStatus inNull::initialize() { MFnNumericAttribute nAttr; MFnLightDataAttribute lAttr; MFnTypedAttribute tAttr; MFnGenericAttribute gAttr; MFnEnumAttribute eAttr; MFnMessageAttribute mAttr; MStatus status; // Status will be used to hold the MStatus value // returned by each api function call. It is important // to check the status returned by a call to aid in // debugging. Failed API calls can result in subtle // errors that can be difficult to track down, you may // wish to use the CHECK_MSTATUS macro for any API // call where you do not need to provide your own // error handling. // //---------------------------- automatically created attributes start ------------------------------------ backface_emit = nAttr.create("backface_emit", "backface_emit", MFnNumericData::kBoolean, false); CHECK_MSTATUS(addAttribute( backface_emit )); //---------------------------- automatically created attributes end ------------------------------------ // Input Attributes // aTranslucenceCoeff = nAttr.create( "translucenceCoeff", "tc", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 0.0f ) ); aDiffuseReflectivity = nAttr.create( "diffuseReflectivity", "drfl", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 0.8f ) ); aColor = nAttr.createColor( "color", "c", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 0.0f, 0.58824f, 0.644f ) ); aIncandescence = nAttr.createColor( "incandescence", "ic", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 0.0f, 0.0f, 0.0f ) ); aInTransparency = nAttr.createColor( "transparency", "it", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 0.0f, 0.0f, 0.0f ) ); // Color Output // aOutColor = nAttr.createColor( "outColor", "oc", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setHidden( false ) ); CHECK_MSTATUS( nAttr.setReadable( true ) ); CHECK_MSTATUS( nAttr.setWritable( false ) ); aOutTransparency = nAttr.createColor( "outTransparency", "ot", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setHidden( false ) ); CHECK_MSTATUS( nAttr.setReadable( true ) ); CHECK_MSTATUS( nAttr.setWritable( false ) ); // Camera Normals // aNormalCameraX = nAttr.create( "normalCameraX", "nx", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aNormalCameraY = nAttr.create( "normalCameraY", "ny", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aNormalCameraZ = nAttr.create( "normalCameraZ", "nz", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aNormalCamera = nAttr.create( "normalCamera","n", aNormalCameraX, aNormalCameraY, aNormalCameraZ, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f, 1.0f, 1.0f ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); // Light Direction // aLightDirectionX = nAttr.create( "lightDirectionX", "ldx", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightDirectionY = nAttr.create( "lightDirectionY", "ldy", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightDirectionZ = nAttr.create( "lightDirectionZ", "ldz", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightDirection = nAttr.create( "lightDirection", "ld", aLightDirectionX, aLightDirectionY, aLightDirectionZ, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f, 1.0f, 1.0f ) ); // Light Intensity // aLightIntensityR = nAttr.create( "lightIntensityR", "lir", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightIntensityG = nAttr.create( "lightIntensityG", "lig", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightIntensityB = nAttr.create( "lightIntensityB", "lib", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightIntensity = nAttr.create( "lightIntensity", "li", aLightIntensityR, aLightIntensityG, aLightIntensityB, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f, 1.0f, 1.0f ) ); // Light // aLightAmbient = nAttr.create( "lightAmbient", "la", MFnNumericData::kBoolean, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( true ) ); aLightDiffuse = nAttr.create( "lightDiffuse", "ldf", MFnNumericData::kBoolean, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( true ) ); aLightSpecular = nAttr.create( "lightSpecular", "ls", MFnNumericData::kBoolean, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( false ) ); aLightShadowFraction = nAttr.create( "lightShadowFraction", "lsf", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aPreShadowIntensity = nAttr.create( "preShadowIntensity", "psi", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightBlindData = nAttr.createAddr( "lightBlindData", "lbld", &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS ( nAttr.setStorable(false) ); CHECK_MSTATUS ( nAttr.setHidden(true) ); CHECK_MSTATUS ( nAttr.setReadable(true) ); CHECK_MSTATUS ( nAttr.setWritable(false) ); aLightData = lAttr.create( "lightDataArray", "ltd", aLightDirection, aLightIntensity, aLightAmbient, aLightDiffuse, aLightSpecular, aLightShadowFraction, aPreShadowIntensity, aLightBlindData, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( lAttr.setArray( true ) ); CHECK_MSTATUS( lAttr.setStorable( false ) ); CHECK_MSTATUS( lAttr.setHidden( true ) ); CHECK_MSTATUS( lAttr.setDefault( 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, true, true, false, 1.0f, 1.0f, NULL ) ); // Next we will add the attributes we have defined to the node // CHECK_MSTATUS( addAttribute( aTranslucenceCoeff ) ); CHECK_MSTATUS( addAttribute( aDiffuseReflectivity ) ); CHECK_MSTATUS( addAttribute( aColor ) ); CHECK_MSTATUS( addAttribute( aIncandescence ) ); CHECK_MSTATUS( addAttribute( aInTransparency ) ); CHECK_MSTATUS( addAttribute( aOutColor ) ); CHECK_MSTATUS( addAttribute( aOutTransparency ) ); CHECK_MSTATUS( addAttribute( aNormalCamera ) ); // Only add the parent of the compound CHECK_MSTATUS( addAttribute( aLightData ) ); // The attributeAffects() method is used to indicate when the input // attribute affects the output attribute. This knowledge allows Maya // to optimize dependencies in the graph in more complex nodes where // there may be several inputs and outputs, but not all the inputs // affect all the outputs. // CHECK_MSTATUS( attributeAffects( aTranslucenceCoeff, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aDiffuseReflectivity, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aColor, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aInTransparency, aOutTransparency ) ); CHECK_MSTATUS( attributeAffects( aInTransparency, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aIncandescence, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightIntensityR, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightIntensityB, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightIntensityG, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightIntensity, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aNormalCameraX, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aNormalCameraY, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aNormalCameraZ, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aNormalCamera, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightDirectionX, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightDirectionY, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightDirectionZ, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightDirection, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightAmbient, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightSpecular, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightDiffuse, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightShadowFraction, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aPreShadowIntensity, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightBlindData, aOutColor ) ); CHECK_MSTATUS( attributeAffects( aLightData, aOutColor ) ); return( MS::kSuccess ); }
MStatus finalproject::initialize() { // local attribute initialization MStatus status; MFnTypedAttribute mAttr; deformingMesh=mAttr.create( "deformingMesh", "dm", MFnMeshData::kMesh); MFnNumericAttribute nAttrt; transX = nAttrt.create( "transX", "tx", MFnNumericData::kDouble); nAttrt.setStorable(true); status = addAttribute( transX ); MCheckStatus(status, "ERROR in addAttribute\n"); status = attributeAffects( transX, outputGeom ); MCheckStatus(status, "ERROR in attributeAffects\n"); transY = nAttrt.create( "transY", "ty", MFnNumericData::kDouble); nAttrt.setStorable(true); status = addAttribute( transY ); MCheckStatus(status, "ERROR in addAttribute\n"); status = attributeAffects( transY, outputGeom ); MCheckStatus(status, "ERROR in attributeAffects\n"); transZ = nAttrt.create( "transZ", "tz", MFnNumericData::kDouble); nAttrt.setStorable(true); status = addAttribute( transZ ); MCheckStatus(status, "ERROR in addAttribute\n"); status = attributeAffects( transZ, outputGeom ); MCheckStatus(status, "ERROR in attributeAffects\n"); tesla = nAttrt.create( "tesla", "tes", MFnNumericData::kDouble); nAttrt.setStorable(true); nAttrt.setKeyable(true); nAttrt.setDefault(0.0); nAttrt.setMin(0.0); nAttrt.setMax(300.0); status = addAttribute( tesla ); MCheckStatus(status, "ERROR in addAttribute\n"); status = attributeAffects( tesla, outputGeom ); MCheckStatus(status, "ERROR in attributeAffects\n"); positivelycharged = nAttrt.create( "positivelycharged", "pc", MFnNumericData::kBoolean); nAttrt.setStorable(true); nAttrt.setKeyable(true); nAttrt.setDefault(true); status = addAttribute( positivelycharged ); MCheckStatus(status, "ERROR in addAttribute\n"); MCheckStatus(status, "ERROR in attributeAffects\n"); MFnNumericAttribute nAttrO; offload=nAttrO.create( "offload", "ol", MFnNumericData::kBoolean); nAttrO.setStorable(true); nAttrO.setDefault(false); nAttrO.setKeyable(true); // deformation attributes status = addAttribute( deformingMesh ); MCheckStatus(status, "ERROR in addAttribute\n"); status = attributeAffects( deformingMesh, outputGeom ); MCheckStatus(status, "ERROR in attributeAffects\n"); status = addAttribute( offload ); MCheckStatus(status, "ERROR in addAttribute\n"); status = attributeAffects( offload, outputGeom ); MCheckStatus(status, "ERROR in attributeAffects\n"); return MStatus::kSuccess; }
// // DESCRIPTION: /////////////////////////////////////////////////////// MStatus VolumeNode::initialize() { MFnNumericAttribute nAttr; // Inputs aColor = nAttr.createColor( "color", "c" ); CHECK_MSTATUS( nAttr.setKeyable( true ) ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setHidden(false) ); CHECK_MSTATUS( nAttr.setDefault(1.0f, 1.0f, 1.0f) ); aInputValue = nAttr.create( "distance", "d", MFnNumericData::kFloat); CHECK_MSTATUS( nAttr.setMin(0.0f) ); CHECK_MSTATUS(nAttr.setMax(100000.0f) ); CHECK_MSTATUS( nAttr.setSoftMax(1000.0f) ); CHECK_MSTATUS( nAttr.setSoftMax(1000.0f) ); CHECK_MSTATUS( nAttr.setKeyable(true) ); CHECK_MSTATUS(nAttr.setStorable(true) ); CHECK_MSTATUS( nAttr.setDefault(1.0f) ); aToggleCamera = nAttr.create( "cameraSpace", "cs", MFnNumericData::kBoolean); CHECK_MSTATUS( nAttr.setKeyable(true) ); CHECK_MSTATUS( nAttr.setStorable(true) ); CHECK_MSTATUS( nAttr.setHidden(false) ); CHECK_MSTATUS( nAttr.setDefault(false) ); aToggleObject = nAttr.create( "objectSpace", "os", MFnNumericData::kBoolean); CHECK_MSTATUS( nAttr.setKeyable(true) ); CHECK_MSTATUS( nAttr.setStorable(true) ); CHECK_MSTATUS( nAttr.setHidden(false) ); CHECK_MSTATUS( nAttr.setDefault(false) ); aToggleWorld = nAttr.create( "worldSpace", "ws", MFnNumericData::kBoolean); CHECK_MSTATUS(nAttr.setKeyable(true) ); CHECK_MSTATUS( nAttr.setStorable(true) ); CHECK_MSTATUS(nAttr.setHidden(false) ); CHECK_MSTATUS( nAttr.setDefault(true) ); aFarPointC = nAttr.createPoint("farPointCamera", "fc" ); CHECK_MSTATUS(nAttr.setStorable(false) ); CHECK_MSTATUS( nAttr.setHidden(true) ); CHECK_MSTATUS( nAttr.setReadable(true) ); CHECK_MSTATUS( nAttr.setWritable(true) ); aFarPointO = nAttr.createPoint("farPointObj", "fo" ); CHECK_MSTATUS( nAttr.setStorable(false) ); CHECK_MSTATUS(nAttr.setHidden(true) ); CHECK_MSTATUS( nAttr.setReadable(true) ); CHECK_MSTATUS( nAttr.setWritable(true) ); aFarPointW = nAttr.createPoint("farPointWorld", "fw" ); CHECK_MSTATUS( nAttr.setStorable(false) ); CHECK_MSTATUS( nAttr.setHidden(true) ); CHECK_MSTATUS(nAttr.setReadable(true) ); CHECK_MSTATUS( nAttr.setWritable(true) ); aPointC = nAttr.createPoint("pointCamera", "p" ); CHECK_MSTATUS( nAttr.setStorable(false) ); CHECK_MSTATUS( nAttr.setHidden(true) ); CHECK_MSTATUS( nAttr.setReadable(true) ); CHECK_MSTATUS( nAttr.setWritable(true) ); aPointO = nAttr.createPoint("pointObj", "po" ); CHECK_MSTATUS( nAttr.setStorable(false) ); CHECK_MSTATUS( nAttr.setHidden(true) ); CHECK_MSTATUS( nAttr.setReadable(true) ); CHECK_MSTATUS( nAttr.setWritable(true) ); aPointW = nAttr.createPoint("pointWorld", "pw" ); CHECK_MSTATUS( nAttr.setStorable(false) ); CHECK_MSTATUS( nAttr.setHidden(true) ); CHECK_MSTATUS( nAttr.setReadable(true) ); CHECK_MSTATUS( nAttr.setWritable(true) ); // Outputs aOutColor = nAttr.createColor( "outColor", "oc" ); CHECK_MSTATUS( nAttr.setStorable(false) ); CHECK_MSTATUS( nAttr.setHidden(false) ); CHECK_MSTATUS( nAttr.setReadable(true) ); CHECK_MSTATUS( nAttr.setWritable(false) ); aOutTransparency = nAttr.createColor( "outTransparency", "ot" ); CHECK_MSTATUS( nAttr.setStorable(false) ); CHECK_MSTATUS( nAttr.setHidden(false) ); CHECK_MSTATUS( nAttr.setReadable(true) ); CHECK_MSTATUS( nAttr.setWritable(false) ); aOutAlpha = nAttr.create( "outAlpha", "oa", MFnNumericData::kFloat); CHECK_MSTATUS( nAttr.setStorable(false) ); CHECK_MSTATUS( nAttr.setHidden(false) ); CHECK_MSTATUS( nAttr.setReadable(true) ); CHECK_MSTATUS( nAttr.setWritable(false) ); CHECK_MSTATUS( addAttribute(aColor) ); CHECK_MSTATUS( addAttribute(aInputValue) ); CHECK_MSTATUS( addAttribute(aFarPointC) ); CHECK_MSTATUS( addAttribute(aFarPointO) ); CHECK_MSTATUS( addAttribute(aFarPointW) ); CHECK_MSTATUS( addAttribute(aPointC) ); CHECK_MSTATUS( addAttribute(aPointO) ); CHECK_MSTATUS( addAttribute(aPointW) ); CHECK_MSTATUS( addAttribute(aToggleCamera) ); CHECK_MSTATUS( addAttribute(aToggleObject) ); CHECK_MSTATUS( addAttribute(aToggleWorld) ); CHECK_MSTATUS( addAttribute(aOutColor) ); CHECK_MSTATUS( addAttribute(aOutTransparency) ); CHECK_MSTATUS( addAttribute(aOutAlpha) ); CHECK_MSTATUS( attributeAffects(aColor, aOutColor) ); CHECK_MSTATUS( attributeAffects(aColor, aOutTransparency) ); CHECK_MSTATUS( attributeAffects(aFarPointC, aOutColor) ); CHECK_MSTATUS( attributeAffects(aFarPointO, aOutColor) ); CHECK_MSTATUS( attributeAffects(aFarPointW, aOutColor) ); CHECK_MSTATUS( attributeAffects(aPointC, aOutColor) ); CHECK_MSTATUS( attributeAffects(aPointO, aOutColor) ); CHECK_MSTATUS( attributeAffects(aPointW, aOutColor) ); CHECK_MSTATUS( attributeAffects(aToggleCamera, aOutColor) ); CHECK_MSTATUS( attributeAffects(aToggleObject, aOutColor) ); CHECK_MSTATUS( attributeAffects(aToggleWorld, aOutColor) ); return MS::kSuccess; }
MStatus AlembicNode::initialize() { MStatus status; MFnUnitAttribute uAttr; MFnTypedAttribute tAttr, tAttr2; MFnNumericAttribute nAttr; MFnGenericAttribute gAttr; MFnEnumAttribute eAttr; // add the input attributes: time, file, sequence time mTimeAttr = uAttr.create("time", "tm", MFnUnitAttribute::kTime, 0.0); status = uAttr.setStorable(true); status = addAttribute(mTimeAttr); // input file name MFnStringData fileFnStringData; MObject fileNameDefaultObject = fileFnStringData.create(""); mAbcFileNameAttr = tAttr.create("abc_File", "fn", MFnData::kString, fileNameDefaultObject); status = tAttr.setStorable(true); status = tAttr.setUsedAsFilename(true); status = addAttribute(mAbcFileNameAttr); // input layer file names MFnStringArrayData fileFnStringArrayData; MStringArray dummyStringArray; MObject layerFileNamesDefaultObject = fileFnStringArrayData.create(dummyStringArray); mAbcLayerFileNamesAttr = tAttr2.create("abc_layerFiles", "fns", MFnData::kStringArray, layerFileNamesDefaultObject); status = tAttr2.setStorable(true); status = tAttr2.setUsedAsFilename(true); status = tAttr2.setKeyable(false); status = tAttr2.setWritable(true); status = addAttribute(mAbcLayerFileNamesAttr); // playback speed mSpeedAttr = nAttr.create("speed", "sp", MFnNumericData::kDouble, 1.0, &status); status = nAttr.setWritable(true); status = nAttr.setStorable(true); status = nAttr.setKeyable(true); status = addAttribute(mSpeedAttr); // frame offset mOffsetAttr = nAttr.create("offset", "of", MFnNumericData::kDouble, 0, &status); status = nAttr.setWritable(true); status = nAttr.setStorable(true); status = nAttr.setKeyable(true); status = addAttribute(mOffsetAttr); // cycle type mCycleTypeAttr = eAttr.create("cycleType", "ct", 0, &status ); status = eAttr.addField("Hold", PLAYTYPE_HOLD); status = eAttr.addField("Loop", PLAYTYPE_LOOP); status = eAttr.addField("Reverse", PLAYTYPE_REVERSE); status = eAttr.addField("Bounce", PLAYTYPE_BOUNCE); status = eAttr.setWritable(true); status = eAttr.setStorable(true); status = eAttr.setKeyable(true); status = addAttribute(mCycleTypeAttr); // Regex Filter // This is a hidden variable to preserve a regexIncludefilter string // into a .ma file. mIncludeFilterAttr = tAttr.create("regexIncludeFilter", "ift", MFnData::kString); status = tAttr.setStorable(true); status = tAttr.setHidden(true); status = addAttribute(mIncludeFilterAttr); // Regex Filter // This is a hidden variable to preserve a regexExcludefilter string // into a .ma file. mExcludeFilterAttr = tAttr.create("regexExcludeFilter", "eft", MFnData::kString); status = tAttr.setStorable(true); status = tAttr.setHidden(true); status = addAttribute(mExcludeFilterAttr); // sequence min and max in frames mStartFrameAttr = nAttr.create("startFrame", "sf", MFnNumericData::kDouble, 0, &status); status = nAttr.setWritable(false); status = nAttr.setStorable(true); status = addAttribute(mStartFrameAttr); mEndFrameAttr = nAttr.create("endFrame", "ef", MFnNumericData::kDouble, 0, &status); status = nAttr.setWritable(false); status = nAttr.setStorable(true); status = addAttribute(mEndFrameAttr); // add the output attributes // sampled subD mesh MFnMeshData fnMeshData; MObject meshDefaultObject = fnMeshData.create(&status); mOutSubDArrayAttr = tAttr.create("outSubDMesh", "osubd", MFnData::kMesh, meshDefaultObject); status = tAttr.setStorable(false); status = tAttr.setWritable(false); status = tAttr.setKeyable(false); status = tAttr.setArray(true); status = tAttr.setUsesArrayDataBuilder(true); status = addAttribute(mOutSubDArrayAttr); // sampled poly mesh mOutPolyArrayAttr = tAttr.create("outPolyMesh", "opoly", MFnData::kMesh, meshDefaultObject); status = tAttr.setStorable(false); status = tAttr.setWritable(false); status = tAttr.setKeyable(false); status = tAttr.setArray(true); status = tAttr.setUsesArrayDataBuilder(true); status = addAttribute(mOutPolyArrayAttr); // sampled nurbs surface MFnNurbsSurfaceData fnNSData; MObject nsDefaultObject = fnNSData.create(&status); mOutNurbsSurfaceArrayAttr = tAttr.create("outNSurface", "ons", MFnData::kNurbsSurface, nsDefaultObject); status = tAttr.setStorable(false); status = tAttr.setWritable(false); status = tAttr.setKeyable(false); status = tAttr.setArray(true); status = tAttr.setUsesArrayDataBuilder(true); status = addAttribute(mOutNurbsSurfaceArrayAttr); // sampled nurbs curve group MFnNurbsCurveData fnNCData; MObject ncDefaultObject = fnNCData.create(&status); mOutNurbsCurveGrpArrayAttr = tAttr.create("outNCurveGrp", "onc", MFnData::kNurbsCurve, ncDefaultObject); status = tAttr.setStorable(false); status = tAttr.setWritable(false); status = tAttr.setKeyable(false); status = tAttr.setArray(true); status = tAttr.setUsesArrayDataBuilder(true); status = addAttribute(mOutNurbsCurveGrpArrayAttr); // sampled locator mOutLocatorPosScaleArrayAttr = nAttr.create("outLoc", "olo", MFnNumericData::kDouble, 0.0, &status); status = nAttr.setStorable(false); status = nAttr.setWritable(false); status = nAttr.setArray(true); status = nAttr.setUsesArrayDataBuilder(true); status = addAttribute(mOutLocatorPosScaleArrayAttr); // sampled transform operations mOutTransOpArrayAttr = nAttr.create("transOp", "to", MFnNumericData::kDouble, 0.0, &status); status = nAttr.setStorable(false); status = nAttr.setWritable(false); status = nAttr.setArray(true); status = nAttr.setUsesArrayDataBuilder(true); status = addAttribute(mOutTransOpArrayAttr); // sampled camera // assume the boolean variables cannot be keyed mOutCameraArrayAttr = nAttr.create("outCamera", "ocam", MFnNumericData::kDouble, 0.0, &status); status = nAttr.setStorable(false); status = nAttr.setWritable(false); status = nAttr.setArray(true); status = nAttr.setUsesArrayDataBuilder(true); status = addAttribute(mOutCameraArrayAttr); // sampled custom-attributes mOutPropArrayAttr = gAttr.create("prop", "pr", &status); status = gAttr.addNumericDataAccept(MFnNumericData::kBoolean); status = gAttr.addNumericDataAccept(MFnNumericData::kByte); status = gAttr.addNumericDataAccept(MFnNumericData::kShort); status = gAttr.addNumericDataAccept(MFnNumericData::k2Short); status = gAttr.addNumericDataAccept(MFnNumericData::k3Short); status = gAttr.addNumericDataAccept(MFnNumericData::kInt); status = gAttr.addNumericDataAccept(MFnNumericData::k2Int); status = gAttr.addNumericDataAccept(MFnNumericData::k3Int); status = gAttr.addNumericDataAccept(MFnNumericData::kFloat); status = gAttr.addNumericDataAccept(MFnNumericData::k2Float); status = gAttr.addNumericDataAccept(MFnNumericData::k3Float); status = gAttr.addNumericDataAccept(MFnNumericData::kDouble); status = gAttr.addNumericDataAccept(MFnNumericData::k2Double); status = gAttr.addNumericDataAccept(MFnNumericData::k3Double); status = gAttr.addNumericDataAccept(MFnNumericData::k4Double); status = gAttr.addDataAccept(MFnData::kString); status = gAttr.addDataAccept(MFnData::kIntArray); status = gAttr.addDataAccept(MFnData::kDoubleArray); status = gAttr.addDataAccept(MFnData::kVectorArray); status = gAttr.addDataAccept(MFnData::kPointArray); status = gAttr.setWritable(false); status = gAttr.setKeyable(false); status = gAttr.setArray(true); status = gAttr.setUsesArrayDataBuilder(true); status = addAttribute(mOutPropArrayAttr); // set up affection relationships status = attributeAffects(mTimeAttr, mOutSubDArrayAttr); status = attributeAffects(mTimeAttr, mOutPolyArrayAttr); status = attributeAffects(mTimeAttr, mOutNurbsSurfaceArrayAttr); status = attributeAffects(mTimeAttr, mOutNurbsCurveGrpArrayAttr); status = attributeAffects(mTimeAttr, mOutTransOpArrayAttr); status = attributeAffects(mTimeAttr, mOutCameraArrayAttr); status = attributeAffects(mTimeAttr, mOutPropArrayAttr); status = attributeAffects(mTimeAttr, mOutLocatorPosScaleArrayAttr); status = attributeAffects(mSpeedAttr, mOutSubDArrayAttr); status = attributeAffects(mSpeedAttr, mOutPolyArrayAttr); status = attributeAffects(mSpeedAttr, mOutNurbsSurfaceArrayAttr); status = attributeAffects(mSpeedAttr, mOutNurbsCurveGrpArrayAttr); status = attributeAffects(mSpeedAttr, mOutTransOpArrayAttr); status = attributeAffects(mSpeedAttr, mOutCameraArrayAttr); status = attributeAffects(mSpeedAttr, mOutPropArrayAttr); status = attributeAffects(mSpeedAttr, mOutLocatorPosScaleArrayAttr); status = attributeAffects(mOffsetAttr, mOutSubDArrayAttr); status = attributeAffects(mOffsetAttr, mOutPolyArrayAttr); status = attributeAffects(mOffsetAttr, mOutNurbsSurfaceArrayAttr); status = attributeAffects(mOffsetAttr, mOutNurbsCurveGrpArrayAttr); status = attributeAffects(mOffsetAttr, mOutTransOpArrayAttr); status = attributeAffects(mOffsetAttr, mOutCameraArrayAttr); status = attributeAffects(mOffsetAttr, mOutPropArrayAttr); status = attributeAffects(mOffsetAttr, mOutLocatorPosScaleArrayAttr); status = attributeAffects(mCycleTypeAttr, mOutSubDArrayAttr); status = attributeAffects(mCycleTypeAttr, mOutPolyArrayAttr); status = attributeAffects(mCycleTypeAttr, mOutNurbsSurfaceArrayAttr); status = attributeAffects(mCycleTypeAttr, mOutNurbsCurveGrpArrayAttr); status = attributeAffects(mCycleTypeAttr, mOutTransOpArrayAttr); status = attributeAffects(mCycleTypeAttr, mOutCameraArrayAttr); status = attributeAffects(mCycleTypeAttr, mOutPropArrayAttr); status = attributeAffects(mCycleTypeAttr, mOutLocatorPosScaleArrayAttr); MGlobal::executeCommand( UITemplateMELScriptStr ); return status; }
// initializes attribute information MStatus shiftNode::initialize() { MStatus stat; MFnNumericAttribute nAttr; // shift aShift = nAttr.create( "shift", "sh", MFnNumericData::kBoolean, false ); stat = addAttribute( aShift ); PERRORfail( stat, "addAttribute shift" ); // distance aDist = nAttr.create( "distance", "dis", MFnNumericData::kFloat, 0.0 ); stat = addAttribute( aDist ); PERRORfail( stat, "addAttribute dist" ); // inColor aColor = nAttr.createColor( "color", "c" ); nAttr.setStorable(false); stat = addAttribute( aColor ); PERRORfail( stat, "addAttribute inColor" ); // refPointCamera aRefPointCamera = nAttr.createPoint( "refPointCamera", "rpc" ); nAttr.setStorable(false); nAttr.setWritable(true); nAttr.setRenderSource(true); nAttr.setHidden(true); stat = addAttribute( aRefPointCamera ); PERRORfail( stat, "addAttribute refPointCamera" ); // uv MObject u = nAttr.create( "uCoord", "u", MFnNumericData::kFloat, 0.0 ); MObject v = nAttr.create( "vCoord", "v", MFnNumericData::kFloat, 0.0 ); aUv = nAttr.create( "uvCoord", "uv", u, v ); nAttr.setStorable(false); nAttr.setWritable(true); nAttr.setRenderSource(true); nAttr.setHidden(true); stat = addAttribute( aUv ); PERRORfail( stat, "addAttribute uv" ); // create output attributes here aOutColor = nAttr.createColor( "outColor", "oc" ); PERRORfail(stat, "initialize create outColor attribute"); nAttr.setReadable( true ); nAttr.setWritable( false ); stat = addAttribute( aOutColor ); PERRORfail(stat, "addAttribute(outColor)"); // attribute affects attributeAffects ( aShift, aOutColor ); attributeAffects ( aDist, aOutColor ); attributeAffects ( aColor, aOutColor ); attributeAffects ( aRefPointCamera, aOutColor ); attributeAffects ( aUv, aOutColor ); // we need to do the followings to cause other input attributes // to evaluate with the new values we set attributeAffects ( aUv, aUv ); attributeAffects ( aRefPointCamera, aRefPointCamera ); return MS::kSuccess; }
MStatus liqSurfaceNode::initialize() { MFnTypedAttribute tAttr; MFnStringData tDefault; MFnNumericAttribute nAttr; MFnEnumAttribute eAttr; MFnLightDataAttribute lAttr; MStatus status; // Create input attributes aRmanShader = tAttr.create( MString("rmanShader"), MString("rms"), MFnData::kString, aRmanShader, &status ); MAKE_INPUT(tAttr); aRmanShaderType = tAttr.create( MString("rmanShaderType"), MString("rst"), MFnData::kString, aRmanShaderType, &status ); MAKE_INPUT(tAttr); aRmanShaderLong = tAttr.create( MString("rmanShaderLong"), MString("rml"), MFnData::kString, aRmanShaderLong, &status ); MAKE_INPUT(tAttr); aRmanShaderLif = tAttr.create( MString("rmanShaderLif"), MString("lif"), MFnData::kString, aRmanShaderLif, &status ); MAKE_INPUT(tAttr); aRmanParams = tAttr.create( MString("rmanParams"), MString("rpr"), MFnData::kStringArray, aRmanParams, &status ); MAKE_INPUT(tAttr); aRmanDetails = tAttr.create( MString("rmanDetails"), MString("rdt"), MFnData::kStringArray, aRmanDetails, &status ); MAKE_INPUT(tAttr); aRmanTypes = tAttr.create( MString("rmanTypes"), MString("rty"), MFnData::kStringArray, aRmanTypes, &status ); MAKE_INPUT(tAttr); aRmanDefaults = tAttr.create( MString("rmanDefaults"), MString("rdf"), MFnData::kStringArray, aRmanDefaults, &status ); MAKE_INPUT(tAttr); aRmanArraySizes = tAttr.create( MString("rmanArraySizes"), MString("ras"), MFnData::kIntArray, aRmanArraySizes, &status ); MAKE_INPUT(tAttr); aRmanLifCmds = tAttr.create( MString("rmanLifCmds"), MString("rlc"), MFnData::kStringArray, aRmanLifCmds, &status ); MAKE_INPUT(tAttr); aRmanMethods = tAttr.create( MString("rmanMethods"), MString("rmt"), MFnData::kStringArray, aRmanMethods, &status ); MAKE_INPUT(tAttr); aRmanIsOutput = tAttr.create( MString("rmanIsOutput"), MString("rio"), MFnData::kIntArray, aRmanIsOutput, &status ); MAKE_INPUT(tAttr); aRmanAccept = tAttr.create( MString("rmanAccept"), MString("rma"), MFnData::kStringArray, aRmanAccept, &status ); MAKE_INPUT(tAttr); aPreviewPrimitive = eAttr.create( "previewPrimitive", "pvp", 7, &status ); eAttr.addField( "Sphere", 0 ); eAttr.addField( "Cube", 1 ); eAttr.addField( "Cylinder", 2 ); eAttr.addField( "Torus", 3 ); eAttr.addField( "Plane", 4 ); eAttr.addField( "Teapot", 5 ); eAttr.addField( "Custom", 6 ); eAttr.addField( "(globals)",7 ); MAKE_NONKEYABLE_INPUT(eAttr); CHECK_MSTATUS(eAttr.setConnectable(false ) ); aPreviewCustomPrimitive = tAttr.create( MString("previewCustomPrimitive"), MString("pcp"), MFnData::kString, aPreviewCustomPrimitive, &status ); MAKE_INPUT(tAttr); aPreviewCustomBackplane = tAttr.create( MString("previewCustomBackplane"), MString("pcb"), MFnData::kString, aPreviewCustomBackplane, &status ); MAKE_INPUT(tAttr); aPreviewCustomLightRig = tAttr.create( MString("previewCustomLights"), MString("pcl"), MFnData::kString, aPreviewCustomLightRig, &status ); MAKE_INPUT(tAttr); aPreviewObjectSize = nAttr.create("previewObjectSize", "pos", MFnNumericData::kDouble, 1.0, &status); MAKE_NONKEYABLE_INPUT(nAttr); CHECK_MSTATUS(nAttr.setConnectable(false ) ); aPreviewShadingRate = nAttr.create("previewShadingRate", "psr", MFnNumericData::kDouble, 1.0, &status); MAKE_NONKEYABLE_INPUT(nAttr); CHECK_MSTATUS(nAttr.setConnectable(false ) ); aPreviewBackplane = nAttr.create("previewBackplane", "pbp", MFnNumericData::kBoolean, true, &status); MAKE_NONKEYABLE_INPUT(nAttr); CHECK_MSTATUS(nAttr.setConnectable(false ) ); aPreviewIntensity = nAttr.create("previewIntensity", "pi", MFnNumericData::kDouble, 1.0, &status); MAKE_NONKEYABLE_INPUT(nAttr); CHECK_MSTATUS(nAttr.setConnectable(false ) ); aGLPreviewTexture = nAttr.createColor("GLPreviewTexture", "gpt"); nAttr.setDefault( -1.0, -1.0, -1.0 ); nAttr.setDisconnectBehavior( MFnAttribute::kReset ); MAKE_INPUT(nAttr); aColor = nAttr.createColor("color", "cs"); nAttr.setDefault( 1.0, 1.0, 1.0 ); nAttr.setDisconnectBehavior( MFnAttribute::kReset ); MAKE_INPUT(nAttr); aOpacity = nAttr.createColor("opacity", "os"); nAttr.setDefault( 1.0, 1.0, 1.0 ); MAKE_INPUT(nAttr); aTransparency = nAttr.createColor("transparency", "ts"); // Needed by Maya for Open Gl preview in "5" mode, invert opacity in compute nAttr.setDefault( 0.0, 0.0, 0.0 ); MAKE_INPUT(nAttr); aShaderSpace = tAttr.create( MString("shaderSpace"), MString("ssp"), MFnData::kString, aShaderSpace, &status ); MAKE_INPUT(tAttr); aDisplacementBound = nAttr.create("displacementBound", "db", MFnNumericData::kDouble, 0.0, &status); MAKE_INPUT(nAttr); MObject defaultSpaceObj = tDefault.create( MString("shader"), &status); aDisplacementBoundSpace = tAttr.create( MString("displacementBoundSpace"), MString("dbs"), MFnData::kString, defaultSpaceObj, &status ); MAKE_INPUT(tAttr); aOutputInShadow = nAttr.create("outputInShadow", "ois", MFnNumericData::kBoolean, 0.0, &status); MAKE_NONKEYABLE_INPUT(nAttr); aVisiblePoints = nAttr.create( "useVisiblePoints", "uvp", MFnNumericData::kBoolean, false, &status ); MAKE_NONKEYABLE_INPUT(nAttr); CHECK_MSTATUS( nAttr.setConnectable(false ) ); // resolution attribute for maya's hardware renderer aResolution = nAttr.create("resolution", "res", MFnNumericData::kInt, 32, &status); CHECK_MSTATUS(nAttr.setStorable( true ) ); CHECK_MSTATUS(nAttr.setReadable( true ) ); CHECK_MSTATUS(nAttr.setWritable( true ) ); CHECK_MSTATUS(nAttr.setHidden( true ) ); // refreshPreview must be true to allow refresh aRefreshPreview = nAttr.create("refreshPreview", "rfp", MFnNumericData::kBoolean, 0.0, &status); MAKE_NONKEYABLE_INPUT(nAttr); CHECK_MSTATUS(nAttr.setHidden(true ) ); // dynamic shader attr //aCi = nAttr.createColor("Ci", "ci"); //nAttr.setDefault( 1.0, 1.0, 1.0 ); //MAKE_INPUT(nAttr); //aOi = nAttr.createColor("Oi", "oi"); //nAttr.setDefault( 1.0, 1.0, 1.0 ); //MAKE_INPUT(nAttr); // create attributes for maya renderer // lambertian control aMayaIgnoreLights = nAttr.create("mayaIgnoreLights", "mil", MFnNumericData::kBoolean, 0.0, &status); MAKE_INPUT(nAttr); aMayaKa = nAttr.create("mayaKa", "mka", MFnNumericData::kFloat, 0.2, &status); MAKE_INPUT(nAttr); aMayaKd = nAttr.create("mayaKd", "mkd", MFnNumericData::kFloat, 0.8, &status); MAKE_INPUT(nAttr); // Camera Normals aNormalCameraX = nAttr.create( "normalCameraX", "nx", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aNormalCameraY = nAttr.create( "normalCameraY", "ny", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aNormalCameraZ = nAttr.create( "normalCameraZ", "nz", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aNormalCamera = nAttr.create( "normalCamera","n", aNormalCameraX, aNormalCameraY, aNormalCameraZ, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f, 1.0f, 1.0f ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); // Light Direction aLightDirectionX = nAttr.create( "lightDirectionX", "ldx", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightDirectionY = nAttr.create( "lightDirectionY", "ldy", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightDirectionZ = nAttr.create( "lightDirectionZ", "ldz", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightDirection = nAttr.create( "lightDirection", "ld", aLightDirectionX, aLightDirectionY, aLightDirectionZ, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f, 1.0f, 1.0f ) ); // Light Intensity aLightIntensityR = nAttr.create( "lightIntensityR", "lir", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightIntensityG = nAttr.create( "lightIntensityG", "lig", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightIntensityB = nAttr.create( "lightIntensityB", "lib", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aLightIntensity = nAttr.create( "lightIntensity", "li", aLightIntensityR, aLightIntensityG, aLightIntensityB, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f, 1.0f, 1.0f ) ); // Light aLightAmbient = nAttr.create( "lightAmbient", "la", MFnNumericData::kBoolean, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( true ) ); aLightDiffuse = nAttr.create( "lightDiffuse", "ldf", MFnNumericData::kBoolean, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( true ) ); aLightSpecular = nAttr.create( "lightSpecular", "ls", MFnNumericData::kBoolean, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( false ) ); aLightShadowFraction = nAttr.create( "lightShadowFraction", "lsf", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setReadable( true ) ); CHECK_MSTATUS( nAttr.setWritable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); aPreShadowIntensity = nAttr.create( "preShadowIntensity", "psi", MFnNumericData::kFloat, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); #if MAYA_API_VERSION >= 800 aLightBlindData = nAttr.createAddr( "lightBlindData", "lbld", 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( (void*) 0 ) ); #else aLightBlindData = nAttr.create( "lightBlindData", "lbld", MFnNumericData::kLong, 0, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( false ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( false ) ); CHECK_MSTATUS( nAttr.setDefault( 0 ) ); #endif aLightData = lAttr.create( "lightDataArray", "ltd", aLightDirection, aLightIntensity, aLightAmbient, aLightDiffuse, aLightSpecular, aLightShadowFraction, aPreShadowIntensity, aLightBlindData, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( lAttr.setArray( true ) ); CHECK_MSTATUS( lAttr.setStorable( false ) ); CHECK_MSTATUS( lAttr.setHidden( true ) ); CHECK_MSTATUS( lAttr.setDefault( 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, true, true, false, 1.0f, 1.0f, 0 ) ); aEvaluateAtEveryFrame = nAttr.create("evaluateAtEveryFrame", "def", MFnNumericData::kBoolean, 0.0, &status); MAKE_NONKEYABLE_INPUT(nAttr); aPreviewGamma = nAttr.create( "previewGamma", "pg", MFnNumericData::kFloat, 1, &status ); CHECK_MSTATUS( status ); CHECK_MSTATUS( nAttr.setStorable( true ) ); CHECK_MSTATUS( nAttr.setHidden( true ) ); CHECK_MSTATUS( nAttr.setReadable( true ) ); CHECK_MSTATUS( nAttr.setDefault( 1.0f ) ); // Create output attributes aOutColor = nAttr.createColor("outColor", "oc"); MAKE_OUTPUT(nAttr); aOutTransparency = nAttr.createColor("outTransparency", "ot"); MAKE_OUTPUT(nAttr); CHECK_MSTATUS( addAttribute( aRmanShader ) ); CHECK_MSTATUS( addAttribute( aRmanShaderType ) ); CHECK_MSTATUS( addAttribute( aRmanShaderLong ) ); CHECK_MSTATUS( addAttribute( aRmanShaderLif ) ); CHECK_MSTATUS( addAttribute( aRmanParams ) ); CHECK_MSTATUS( addAttribute( aRmanDetails ) ); CHECK_MSTATUS( addAttribute( aRmanTypes ) ); CHECK_MSTATUS( addAttribute( aRmanDefaults ) ); CHECK_MSTATUS( addAttribute( aRmanArraySizes ) ); CHECK_MSTATUS( addAttribute( aRmanLifCmds ) ); CHECK_MSTATUS( addAttribute(aRmanMethods) ); CHECK_MSTATUS( addAttribute(aRmanIsOutput) ); CHECK_MSTATUS( addAttribute( aRmanAccept) ); CHECK_MSTATUS( addAttribute( aPreviewPrimitive ) ); CHECK_MSTATUS( addAttribute( aPreviewCustomPrimitive ) ); CHECK_MSTATUS( addAttribute( aPreviewCustomBackplane ) ); CHECK_MSTATUS( addAttribute( aPreviewCustomLightRig ) ); CHECK_MSTATUS( addAttribute( aPreviewObjectSize ) ); CHECK_MSTATUS( addAttribute( aPreviewShadingRate ) ); CHECK_MSTATUS( addAttribute( aPreviewBackplane ) ); CHECK_MSTATUS( addAttribute( aPreviewIntensity ) ); CHECK_MSTATUS( addAttribute(aGLPreviewTexture)); //CHECK_MSTATUS( addAttribute( aCi ) ); //CHECK_MSTATUS( addAttribute( aOi ) ); CHECK_MSTATUS( addAttribute( aColor ) ); CHECK_MSTATUS( addAttribute( aTransparency ) ); CHECK_MSTATUS( addAttribute( aOpacity ) ); CHECK_MSTATUS( addAttribute( aShaderSpace ) ); CHECK_MSTATUS( addAttribute( aDisplacementBound ) ); CHECK_MSTATUS( addAttribute( aDisplacementBoundSpace ) ); CHECK_MSTATUS( addAttribute( aOutputInShadow ) ); CHECK_MSTATUS( addAttribute( aVisiblePoints ) ); CHECK_MSTATUS( addAttribute( aResolution ) ); CHECK_MSTATUS( addAttribute( aRefreshPreview ) ); CHECK_MSTATUS( addAttribute( aMayaIgnoreLights ) ); CHECK_MSTATUS( addAttribute( aMayaKa ) ); CHECK_MSTATUS( addAttribute( aMayaKd ) ); CHECK_MSTATUS( addAttribute( aNormalCamera ) ); CHECK_MSTATUS( addAttribute( aLightData ) ); CHECK_MSTATUS( addAttribute( aEvaluateAtEveryFrame ) ); CHECK_MSTATUS( addAttribute( aPreviewGamma ) ); CHECK_MSTATUS( addAttribute( aOutColor ) ); CHECK_MSTATUS( addAttribute( aOutTransparency ) ); CHECK_MSTATUS(attributeAffects( aGLPreviewTexture, aOutColor )); CHECK_MSTATUS(attributeAffects( aColor, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aOpacity, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aMayaIgnoreLights, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aMayaKa, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aMayaKd, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightIntensityR, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightIntensityB, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightIntensityG, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightIntensity, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aNormalCameraX, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aNormalCameraY, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aNormalCameraZ, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aNormalCamera, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightDirectionX, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightDirectionY, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightDirectionZ, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightDirection, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightAmbient, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightSpecular, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightDiffuse, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightShadowFraction, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aPreShadowIntensity, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightBlindData, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aLightData, aOutColor ) ); CHECK_MSTATUS(attributeAffects( aOpacity, aOutTransparency ) ); return MS::kSuccess; }
MStatus octreeVizNode::initialize() { MStatus status; MFnNumericAttribute numAttr; MFnTypedAttribute tAttr; alevel = numAttr.create("alevel","alr",MFnNumericData::kShort); numAttr.setDefault( 4 ); numAttr.setMin( 0 ); numAttr.setMax( 10 ); numAttr.setKeyable( true ); numAttr.setReadable( true ); numAttr.setWritable( true ); numAttr.setStorable( true ); status = addAttribute(alevel); CHECK_MSTATUS( status ); aarea = numAttr.create("aarea","aar",MFnNumericData::kFloat); numAttr.setDefault( 10.0 ); numAttr.setKeyable( true ); numAttr.setReadable( true ); numAttr.setWritable( true ); numAttr.setStorable( true ); status = addAttribute(aarea); CHECK_MSTATUS( status ); acount = numAttr.create("acount","aco",MFnNumericData::kInt); numAttr.setDefault( 100 ); numAttr.setKeyable( true ); numAttr.setReadable( true ); numAttr.setWritable( true ); numAttr.setStorable( true ); status = addAttribute(acount); CHECK_MSTATUS( status ); adefinepositionX = numAttr.create("adefinepositionX","poX",MFnNumericData::kFloat); numAttr.setDefault( 0.0 ); numAttr.setKeyable( true ); numAttr.setReadable( true ); numAttr.setWritable( true ); numAttr.setStorable( true ); status = addAttribute(adefinepositionX); CHECK_MSTATUS( status ); adefinepositionY = numAttr.create("adefinepositionY","poY",MFnNumericData::kFloat); numAttr.setDefault( 0.0 ); numAttr.setKeyable( true ); numAttr.setReadable( true ); numAttr.setWritable( true ); numAttr.setStorable( true ); status = addAttribute(adefinepositionY); CHECK_MSTATUS( status ); adefinepositionZ= numAttr.create("adefinepositionZ","poZ",MFnNumericData::kFloat); numAttr.setDefault( 0.0 ); numAttr.setKeyable( true ); numAttr.setReadable( true ); numAttr.setWritable( true ); numAttr.setStorable( true ); status = addAttribute(adefinepositionZ); CHECK_MSTATUS( status ); afuzz = numAttr.create( "fuzz", "fuzz", MFnNumericData::kFloat, 0.0 ); numAttr.setStorable(true); numAttr.setKeyable(true); addAttribute(afuzz); alengthnoise = numAttr.create("kink", "kink", MFnNumericData::kFloat, 0.f, &status); CHECK_MSTATUS( status ); CHECK_MSTATUS( numAttr.setStorable(true)); CHECK_MSTATUS( numAttr.setKeyable(true)); addAttribute(alengthnoise); aSize = numAttr.create("clumping", "clp", MFnNumericData::kFloat, 0.f, &status); CHECK_MSTATUS( status ); CHECK_MSTATUS( numAttr.setStorable(true)); CHECK_MSTATUS( numAttr.setKeyable(true)); CHECK_MSTATUS( numAttr.setDefault(0.f)); numAttr.setCached( true ); addAttribute(aSize); astep = numAttr.create( "drawStep", "dsp", MFnNumericData::kInt, 1 ); numAttr.setStorable(true); numAttr.setKeyable(true); addAttribute(astep); aHDRName = tAttr.create("cachePath", "cp", MFnData::kString, MObject::kNullObj, &status); CHECK_MSTATUS( status ); CHECK_MSTATUS( tAttr.setStorable(true)); CHECK_MSTATUS( tAttr.setKeyable(false)); tAttr.setCached( true ); zWorks::createMatrixAttr(aworldSpace, "worldSpace", "ws"); aoutput = numAttr.create( "outval", "ov", MFnNumericData::kInt, 1 ); numAttr.setStorable(false); numAttr.setWritable(false); numAttr.setKeyable(false); addAttribute( aoutput ); zWorks::createTypedAttr(agrowth, MString("growMesh"), MString("gm"), MFnData::kMesh); zCheckStatus(addAttribute(agrowth), "ERROR adding grow mesh"); zWorks::createTypedArrayAttr(aguide, MString("guideMesh"), MString("gdm"), MFnData::kMesh); zCheckStatus(addAttribute(aguide), "ERROR adding guide mesh"); astartframe = numAttr.create( "startFrame", "sf", MFnNumericData::kInt, 1 ); numAttr.setStorable(true); numAttr.setKeyable(true); addAttribute( astartframe ); zWorks::createTimeAttr(acurrenttime, MString("currentTime"), MString("ct"), 1.0); zCheckStatus(addAttribute(acurrenttime), "ERROR adding time"); asavemap = numAttr.create( "saveMap", "sm", MFnNumericData::kInt, 0); numAttr.setStorable(false); numAttr.setKeyable(true); addAttribute(asavemap); aalternativepatch = numAttr.create( "patchOrder", "pod", MFnNumericData::kInt, 0); numAttr.setStorable(true); numAttr.setKeyable(true); addAttribute(aalternativepatch); CHECK_MSTATUS( addAttribute(aHDRName)); addAttribute(aworldSpace); attributeAffects( alengthnoise, aoutput ); attributeAffects( aSize, aoutput ); attributeAffects( aworldSpace, aoutput ); attributeAffects( agrowth, aoutput ); attributeAffects( aguide, aoutput ); attributeAffects( astartframe, aoutput ); attributeAffects( acurrenttime, aoutput ); attributeAffects( asavemap, aoutput ); attributeAffects( afuzz, aoutput ); attributeAffects( astep, aoutput ); attributeAffects( aalternativepatch, aoutput ); attributeAffects( alevel, aoutput ); attributeAffects( aarea, aoutput ); attributeAffects( acount, aoutput ); attributeAffects( adefinepositionX, aoutput ); attributeAffects( adefinepositionY, aoutput ); attributeAffects( adefinepositionZ, aoutput ); attributeAffects( aHDRName, aoutput ); return MS::kSuccess; }
// // DESCRIPTION: /////////////////////////////////////////////////////// MStatus ShadowMatte::initialize() { MFnNumericAttribute nAttr; MFnLightDataAttribute lAttr; // Outputs aViewColor = nAttr.create( "viewColor", "vc", MFnNumericData::kBoolean); nAttr.setKeyable(true); nAttr.setStorable(true); nAttr.setHidden(false); nAttr.setDefault(true); aOutColor = nAttr.createColor( "outColor", "oc"); nAttr.setStorable(false); nAttr.setHidden(false); nAttr.setReadable(true); nAttr.setWritable(false); aOutTransparency = nAttr.createColor( "outTransparency", "ot" ); nAttr.setStorable(false); nAttr.setHidden(false); nAttr.setReadable(true); nAttr.setWritable(false); // Inputs aLightDirection = nAttr.createPoint( "lightDirection", "ld" ); nAttr.setStorable(false); nAttr.setHidden(true); nAttr.setReadable(true); nAttr.setWritable(false); nAttr.setDefault(1.0f, 1.0f, 1.0f); aLightIntensity = nAttr.createColor( "lightIntensity", "li" ); nAttr.setStorable(false); nAttr.setHidden(true); nAttr.setReadable(true); nAttr.setWritable(false); nAttr.setDefault(1.0f, 1.0f, 1.0f); aLightAmbient = nAttr.create( "lightAmbient", "la", MFnNumericData::kBoolean); nAttr.setStorable(false); nAttr.setHidden(true); nAttr.setReadable(true); nAttr.setWritable(false); nAttr.setDefault(true); aLightDiffuse = nAttr.create( "lightDiffuse", "ldf", MFnNumericData::kBoolean); nAttr.setStorable(false); nAttr.setHidden(true); nAttr.setReadable(true); nAttr.setWritable(false); nAttr.setDefault(true); aLightSpecular = nAttr.create( "lightSpecular", "ls", MFnNumericData::kBoolean); nAttr.setStorable(false); nAttr.setHidden(true); nAttr.setReadable(true); nAttr.setWritable(false); nAttr.setDefault(false); aLightShadowFraction = nAttr.create("lightShadowFraction", "lsf", MFnNumericData::kFloat); nAttr.setStorable(false); nAttr.setHidden(true); nAttr.setReadable(true); nAttr.setWritable(false); nAttr.setDefault(0.0f); aPreShadowIntensity = nAttr.create("preShadowIntensity", "psi", MFnNumericData::kFloat); nAttr.setStorable(false); nAttr.setHidden(true); nAttr.setReadable(true); nAttr.setWritable(false); nAttr.setDefault(0.0f); aLightBlindData = nAttr.createAddr("lightBlindData", "lbld"); nAttr.setStorable(false); nAttr.setHidden(true); nAttr.setReadable(true); nAttr.setWritable(false); aLightData = lAttr.create( "lightDataArray", "ltd", aLightDirection, aLightIntensity, aLightAmbient, aLightDiffuse, aLightSpecular, aLightShadowFraction, aPreShadowIntensity, aLightBlindData); lAttr.setArray(true); lAttr.setStorable(false); lAttr.setHidden(true); lAttr.setDefault(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, true, true, false, 0.0f, 1.0f, NULL); addAttribute(aLightData); addAttribute(aOutColor); addAttribute(aOutTransparency); addAttribute(aViewColor); attributeAffects (aViewColor, aOutColor); attributeAffects (aLightIntensity, aOutColor); attributeAffects (aLightData, aOutColor); attributeAffects (aLightAmbient, aOutColor); attributeAffects (aLightSpecular, aOutColor); attributeAffects (aLightDiffuse, aOutColor); attributeAffects (aLightDirection, aOutColor); attributeAffects (aLightShadowFraction, aOutColor); attributeAffects (aPreShadowIntensity, aOutColor); attributeAffects (aLightBlindData, aOutColor); attributeAffects (aViewColor, aOutTransparency); attributeAffects (aLightIntensity, aOutTransparency); attributeAffects (aLightData, aOutTransparency); attributeAffects (aLightAmbient, aOutTransparency); attributeAffects (aLightSpecular, aOutTransparency); attributeAffects (aLightDiffuse, aOutTransparency); attributeAffects (aLightDirection, aOutTransparency); attributeAffects (aLightShadowFraction, aOutTransparency); attributeAffects (aPreShadowIntensity, aOutTransparency); attributeAffects (aLightBlindData, aOutTransparency); return MS::kSuccess; }
// Initialize the plug-in. Called once when the plug-in is loaded. // This mostly involve creating attributes. MStatus hwDecalBumpShader_NV20::initialize() { MFnNumericAttribute nAttr; MStatus status; MFnTypedAttribute sAttr; // For string attributes // Create input attributes colorR = nAttr.create( "colorR", "cr",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f); colorG = nAttr.create( "colorG", "cg",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(0.5f); colorB = nAttr.create( "colorB", "cb",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(0.5f); color = nAttr.create( "color", "c", colorR, colorG, colorB); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f, 0.5f, 0.5f); nAttr.setUsedAsColor(true); bumpR = nAttr.create( "bumpR", "c2r",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f); bumpG = nAttr.create( "bumpG", "c2g",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f); bumpB = nAttr.create( "bumpB", "c2b",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f); bump = nAttr.create( "bump", "c2", bumpR, bumpG, bumpB); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f, 1.0f, 1.0f); nAttr.setUsedAsColor(true); uCoord = nAttr.create( "uCoord", "u", MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(0.5f); vCoord = nAttr.create( "vCoord", "v", MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(0.5f); uvCoord = nAttr.create( "uvCoord","uv", uCoord, vCoord); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(0.5f, 0.5f ); nAttr.setHidden(true); uBias = nAttr.create( "uBias", "bu", MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setMin(0.0f); nAttr.setMax(1.0f); nAttr.setKeyable(true); nAttr.setDefault(0.5f); vBias = nAttr.create( "vBias", "bv", MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setMin(0.0f); nAttr.setMax(1.0f); nAttr.setDefault(0.5f); uvFilterSizeX = nAttr.create( "uvFilterSizeX", "fsx", MFnNumericData::kFloat); nAttr.setStorable(false); nAttr.setReadable(true); nAttr.setWritable(true); nAttr.setHidden(true); uvFilterSizeY = nAttr.create( "uvFilterSizeY", "fsy", MFnNumericData::kFloat); nAttr.setStorable(false); nAttr.setReadable(true); nAttr.setWritable(true); nAttr.setHidden(true); uvFilterSize = nAttr.create("uvFilterSize","fs",uvFilterSizeX,uvFilterSizeY); nAttr.setStorable(false); nAttr.setReadable(true); nAttr.setWritable(true); nAttr.setHidden(true); lightX = nAttr.create( "lightX", "lgtx",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(0.0f); lightY = nAttr.create( "lightY", "lgty",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f); lightZ = nAttr.create( "lightZ", "lgtz",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f); light = nAttr.create( "light", "lgt", lightX, lightY, lightZ); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(0.0f, 1.0f, 1.0f); cameraX = nAttr.create( "cameraX", "camx",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(0.0f); cameraY = nAttr.create( "cameraY", "camy",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(0.0f); cameraZ = nAttr.create( "cameraZ", "camz",MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f); camera = nAttr.create( "camera", "cam", cameraX, cameraY, cameraZ); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(0.0f, 0.0f, 1.0f); shininess = nAttr.create( "shininess", "sn", MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setMin(0.0f); nAttr.setMax(1.0f); nAttr.setDefault(0.5f); lightColorR = nAttr.create( "lightColorR", "lcr", MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f); lightColorG = nAttr.create( "lightColorG", "lcg", MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f); lightColorB = nAttr.create( "lightColorB", "lcb", MFnNumericData::kFloat); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f); lightColor = nAttr.create( "lightColor", "lc", lightColorR, lightColorG, lightColorB); nAttr.setStorable(true); nAttr.setKeyable(true); nAttr.setDefault(1.0f, 1.0f, 1.0f); nAttr.setUsedAsColor(true); // create output attributes here // outColor is the only output attribute and it is inherited // so we do not need to create or add it. // // Add the attributes here addAttribute(color); addAttribute(bump); addAttribute(uvCoord); addAttribute(uBias); addAttribute(vBias); addAttribute(uvFilterSize); addAttribute(light); addAttribute(camera); addAttribute(shininess); addAttribute(lightColor); attributeAffects (colorR, outColor); attributeAffects (colorG, outColor); attributeAffects (colorB, outColor); attributeAffects (color, outColor); attributeAffects (bumpR, outColor); attributeAffects (bumpG, outColor); attributeAffects (bumpB, outColor); attributeAffects (bump, outColor); attributeAffects (uCoord, outColor); attributeAffects (vCoord, outColor); attributeAffects (uvCoord, outColor); attributeAffects (uBias, outColor); attributeAffects (vBias, outColor); attributeAffects (lightX, outColor); attributeAffects (lightY, outColor); attributeAffects (lightZ, outColor); attributeAffects (light, outColor); attributeAffects (cameraX, outColor); attributeAffects (cameraY, outColor); attributeAffects (cameraZ, outColor); attributeAffects (camera, outColor); attributeAffects (shininess, outColor); attributeAffects (lightColorR, outColor); attributeAffects (lightColorG, outColor); attributeAffects (lightColorB, outColor); attributeAffects (lightColor, outColor); return MS::kSuccess; }