MStatus EntityNode::Initialize() { MAYA_START_EXCEPTION_HANDLING(); MStatus stat; //////////////////////////////////////////////////////////////////////////////////////////////////// // Create a string attribute "ArtFilePath" MFnTypedAttribute tAttr; s_ArtFilePath = tAttr.create("ArtFilePath", "afp", MFnData::kString, &stat); MCheckErr(stat, "Unable to create attr: ArtFilePath"); tAttr.setReadable(true); tAttr.setWritable(false); stat = addAttribute(s_ArtFilePath); MCheckErr(stat, "Unable to add attr: ArtFilePath"); //////////////////////////////////////////////////////////////////////////////////////////////////// // Create an array attribute "ImportNodes" MFnMessageAttribute mAttr; m_ImportNodes = mAttr.create( "ImortObjects", "ios", &stat ); MCheckErr(stat, "Unable to create attr: ImportNodes"); mAttr.setArray( true ); stat = addAttribute(m_ImportNodes); MCheckErr(stat, "Unable to add attr: ImportNodes"); MAYA_FINISH_EXCEPTION_HANDLING(); return MS::kSuccess; }
MStatus Layered::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. // baseShader = nAttr.createColor("baseShader", "baseShader"); CHECK_MSTATUS(addAttribute(baseShader)); layerWeight = nAttr.create("layerWeight", "layerWeight", MFnNumericData::kFloat, 0, &status); nAttr.setArray(true); CHECK_MSTATUS(addAttribute(layerWeight)); layerTexture = mAttr.create("layerTexture", "layerTexture"); mAttr.setArray(true); CHECK_MSTATUS(addAttribute(layerTexture)); layerShader = nAttr.createColor("layerShader", "layerShader"); nAttr.setArray(true); CHECK_MSTATUS(addAttribute(layerShader)); outColor = nAttr.createColor("outColor", "outColor"); CHECK_MSTATUS(addAttribute(outColor)); //---------------------------- automatically created attributes start ------------------------------------ //---------------------------- automatically created attributes end ------------------------------------ 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)); 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(outColor)); CHECK_MSTATUS(addAttribute(aOutTransparency)); CHECK_MSTATUS(addAttribute(aNormalCamera)); // Only add the parent of the compound CHECK_MSTATUS(addAttribute(aLightData)); CHECK_MSTATUS(attributeAffects(layerTexture, outColor)); CHECK_MSTATUS(attributeAffects(layerWeight, outColor)); CHECK_MSTATUS(attributeAffects(aTranslucenceCoeff, outColor)); CHECK_MSTATUS(attributeAffects(aDiffuseReflectivity, outColor)); CHECK_MSTATUS(attributeAffects(aColor, outColor)); CHECK_MSTATUS(attributeAffects(aInTransparency, aOutTransparency)); CHECK_MSTATUS(attributeAffects(aInTransparency, outColor)); CHECK_MSTATUS(attributeAffects(aIncandescence, outColor)); CHECK_MSTATUS(attributeAffects(aLightIntensityR, outColor)); CHECK_MSTATUS(attributeAffects(aLightIntensityB, outColor)); CHECK_MSTATUS(attributeAffects(aLightIntensityG, outColor)); CHECK_MSTATUS(attributeAffects(aLightIntensity, outColor)); CHECK_MSTATUS(attributeAffects(aNormalCameraX, outColor)); CHECK_MSTATUS(attributeAffects(aNormalCameraY, outColor)); CHECK_MSTATUS(attributeAffects(aNormalCameraZ, outColor)); CHECK_MSTATUS(attributeAffects(aNormalCamera, outColor)); CHECK_MSTATUS(attributeAffects(aLightDirectionX, outColor)); CHECK_MSTATUS(attributeAffects(aLightDirectionY, outColor)); CHECK_MSTATUS(attributeAffects(aLightDirectionZ, outColor)); CHECK_MSTATUS(attributeAffects(aLightDirection, outColor)); CHECK_MSTATUS(attributeAffects(aLightAmbient, outColor)); CHECK_MSTATUS(attributeAffects(aLightSpecular, outColor)); CHECK_MSTATUS(attributeAffects(aLightDiffuse, outColor)); CHECK_MSTATUS(attributeAffects(aLightShadowFraction, outColor)); CHECK_MSTATUS(attributeAffects(aPreShadowIntensity, outColor)); CHECK_MSTATUS(attributeAffects(aLightBlindData, outColor)); CHECK_MSTATUS(attributeAffects(aLightData, outColor)); return( MS::kSuccess ); }
MStatus MayaToAppleseedGlobals::initialize() { MayaRenderGlobalsNode::initialize(); MFnNumericAttribute nAttr; MFnTypedAttribute tAttr; MFnGenericAttribute gAttr; MFnEnumAttribute eAttr; MFnMessageAttribute mAttr; MStatus stat = MStatus::kSuccess; sampling_mode = eAttr.create("sampling_mode", "sampling_mode", 0, &stat); stat = eAttr.addField("qmc", 0); stat = eAttr.addField("rng", 1); CHECK_MSTATUS(addAttribute(sampling_mode)); tile_ordering = eAttr.create("tile_ordering", "tile_ordering", 2, &stat); stat = eAttr.addField("linear", 0); stat = eAttr.addField("spiral", 1); stat = eAttr.addField("hilbert", 2); stat = eAttr.addField("random", 3); CHECK_MSTATUS(addAttribute(tile_ordering)); bitdepth = eAttr.create( "bitdepth", "bitdepth", 3, &stat); stat = eAttr.addField( "8bit Integer", 0 ); stat = eAttr.addField( "16bit Integer", 1 ); stat = eAttr.addField( "32bit Integer", 2 ); stat = eAttr.addField( "16bit Float(Half)", 3 ); stat = eAttr.addField( "32bit Float", 4 ); stat = eAttr.addField( "64bit Double", 5 ); CHECK_MSTATUS(addAttribute( bitdepth )); pixel_renderer = eAttr.create( "pixel_renderer", "pixel_renderer", 0, &stat); stat = eAttr.addField( "adaptive", 0 ); stat = eAttr.addField( "uniform", 1 ); CHECK_MSTATUS(addAttribute( pixel_renderer )); colorSpace = eAttr.create( "colorSpace", "colorSpace", 0, &stat); stat = eAttr.addField( "linear_rgb", 0 ); stat = eAttr.addField( "srgb", 1 ); stat = eAttr.addField( "ciexyz", 2 ); CHECK_MSTATUS(addAttribute( colorSpace )); lightingEngine = eAttr.create( "lightingEngine", "lightingEngine", 0, &stat); stat = eAttr.addField( "Unidirectional Path tracing", 0 ); stat = eAttr.addField( "Distributed Raytracing", 1 ); stat = eAttr.addField( "Stochastic Progressive Photon Mapping", 2 ); CHECK_MSTATUS(addAttribute( lightingEngine )); clamping = nAttr.create("clamping", "clamping", MFnNumericData::kBoolean, false); CHECK_MSTATUS(addAttribute( clamping )); maxError = nAttr.create("maxError", "maxError", MFnNumericData::kFloat, 0.01f); CHECK_MSTATUS(addAttribute( maxError )); adaptiveQuality = nAttr.create("adaptiveQuality", "adaptiveQuality", MFnNumericData::kFloat, 3.0f); CHECK_MSTATUS(addAttribute( adaptiveQuality )); enable_caustics = nAttr.create("enable_caustics", "enable_caustics", MFnNumericData::kBoolean, false); CHECK_MSTATUS(addAttribute( enable_caustics )); enable_dl = nAttr.create("enable_dl", "enable_ibl", MFnNumericData::kBoolean, true); CHECK_MSTATUS(addAttribute( enable_dl )); enable_diagnostics = nAttr.create("enable_diagnostics", "enable_diagnostics", MFnNumericData::kBoolean, false); CHECK_MSTATUS(addAttribute( enable_diagnostics )); diffuseDepth = nAttr.create("diffuseDepth", "diffuseDepth", MFnNumericData::kInt, 4); CHECK_MSTATUS(addAttribute( diffuseDepth )); texCacheSize = nAttr.create("texCacheSize", "texCacheSize", MFnNumericData::kInt, 512); CHECK_MSTATUS(addAttribute( texCacheSize )); frameRendererPasses = nAttr.create("frameRendererPasses", "frameRendererPasses", MFnNumericData::kInt, 1); CHECK_MSTATUS(addAttribute( frameRendererPasses )); glossyDepth = nAttr.create("glossyDepth", "glossyDepth", MFnNumericData::kInt, 4); CHECK_MSTATUS(addAttribute( glossyDepth )); environmentSamples = nAttr.create("environmentSamples", "environmentSamples", MFnNumericData::kInt, 1); CHECK_MSTATUS(addAttribute( environmentSamples )); bsdfSamples = nAttr.create("bsdfSamples", "bsdfSamples", MFnNumericData::kInt, 1); CHECK_MSTATUS(addAttribute( bsdfSamples )); next_event_estimation = nAttr.create("next_event_estimation", "next_event_estimation", MFnNumericData::kBoolean, true); CHECK_MSTATUS(addAttribute( next_event_estimation )); assemblySBVH = nAttr.create("assemblySBVH", "assemblySBVH", MFnNumericData::kBoolean, false); CHECK_MSTATUS(addAttribute( assemblySBVH )); max_path_length = nAttr.create("max_path_length", "max_path_length", MFnNumericData::kFloat, 8.0f); CHECK_MSTATUS(addAttribute(max_path_length)); rr_min_path_length = nAttr.create("rr_min_path_length", "rr_min_path_length", MFnNumericData::kFloat, 3.0f); CHECK_MSTATUS(addAttribute( rr_min_path_length )); path_tracing_max_path_length = nAttr.create("path_tracing_max_path_length", "path_tracing_max_path_length", MFnNumericData::kFloat, 0.0f); CHECK_MSTATUS(addAttribute(path_tracing_max_path_length)); path_tracing_rr_min_path_length = nAttr.create("path_tracing_rr_min_path_length", "path_tracing_rr_min_path_length", MFnNumericData::kFloat, 8.0f); CHECK_MSTATUS(addAttribute(path_tracing_rr_min_path_length)); photon_tracing_max_path_length = nAttr.create("photon_tracing_max_path_length", "photon_tracing_max_path_length", MFnNumericData::kFloat, 8.0f); CHECK_MSTATUS(addAttribute(photon_tracing_max_path_length)); photon_tracing_rr_min_path_length = nAttr.create("photon_tracing_rr_min_path_length", "photon_tracing_rr_min_path_length", MFnNumericData::kFloat, 3.0f); CHECK_MSTATUS(addAttribute(photon_tracing_rr_min_path_length)); max_ray_intensity = nAttr.create("max_ray_intensity", "max_ray_intensity", MFnNumericData::kFloat, 0.0f); CHECK_MSTATUS(addAttribute( max_ray_intensity )); // reduced to auto because we do not need the others (I hope) remove the whole attribute in the next release assemblyExportType = eAttr.create( "assemblyExportType", "assemblyExportType", 0, &stat); stat = eAttr.addField( "Auto", 0 ); CHECK_MSTATUS(addAttribute( assemblyExportType )); assemblyPolyTheshold = nAttr.create("assemblyPolyTheshold", "assemblyPolyTheshold", MFnNumericData::kInt, 10000); CHECK_MSTATUS(addAttribute( assemblyPolyTheshold )); environmentType = eAttr.create( "environmentType", "environmentType", 0, &stat); stat = eAttr.addField("Constant", 0); stat = eAttr.addField("ConstantHemisphere", 1); stat = eAttr.addField("Gradient", 2); stat = eAttr.addField("Latitude Longitude", 3 ); stat = eAttr.addField("Mirror Ball", 4 ); stat = eAttr.addField("Physical Sky", 5); stat = eAttr.addField("OSL Environment", 6); CHECK_MSTATUS(addAttribute(environmentType)); environmentColor = nAttr.createColor("environmentColor", "environmentColor"); nAttr.setDefault(0.6f, 0.7f, 0.9f); nAttr.setConnectable(false); CHECK_MSTATUS(addAttribute( environmentColor )); gradientHorizon = nAttr.createColor("gradientHorizon", "gradientHorizon"); nAttr.setDefault(0.8f, 0.8f, 0.9f); nAttr.setConnectable(false); CHECK_MSTATUS(addAttribute( gradientHorizon )); gradientZenit = nAttr.createColor("gradientZenit", "gradientZenit"); nAttr.setDefault(0.2f, 0.3f, 0.6f); nAttr.setConnectable(false); CHECK_MSTATUS(addAttribute( gradientZenit )); environmentMap = nAttr.createColor("environmentMap", "environmentMap"); nAttr.setDefault(0.6f, 0.7f, 0.9f); CHECK_MSTATUS(addAttribute( environmentMap )); environmentIntensity = nAttr.create("environmentIntensity", "environmentIntensity", MFnNumericData::kFloat, 1.0f); nAttr.setConnectable(false); CHECK_MSTATUS(addAttribute( environmentIntensity )); directLightSamples = nAttr.create("directLightSamples", "directLightSamples", MFnNumericData::kFloat, 1.0f); CHECK_MSTATUS(addAttribute( directLightSamples )); latlongHoShift = nAttr.create("latlongHoShift", "latlongHoShift", MFnNumericData::kFloat, .0f); CHECK_MSTATUS(addAttribute( latlongHoShift )); latlongVeShift = nAttr.create("latlongVeShift", "latlongVeShift", MFnNumericData::kFloat, .0f); CHECK_MSTATUS(addAttribute( latlongVeShift )); AOVs = mAttr.create("AOVs", "AOVs"); mAttr.setArray(true); mAttr.indexMatters(false); CHECK_MSTATUS(addAttribute( AOVs )); ground_albedo = nAttr.create("ground_albedo", "ground_albedo", MFnNumericData::kFloat, .0f); CHECK_MSTATUS(addAttribute( ground_albedo )); horizon_shift = nAttr.create("horizon_shift", "horizon_shift", MFnNumericData::kFloat, -0.05f); CHECK_MSTATUS(addAttribute( horizon_shift )); luminance_multiplier = nAttr.create("luminance_multiplier", "luminance_multiplier", MFnNumericData::kFloat, 1.0f); CHECK_MSTATUS(addAttribute( luminance_multiplier )); saturation_multiplier = nAttr.create("saturation_multiplier", "saturation_multiplier", MFnNumericData::kFloat, 1.0f); CHECK_MSTATUS(addAttribute( saturation_multiplier )); sun_phi = nAttr.create("sun_phi", "sun_phi", MFnNumericData::kFloat, .0f); CHECK_MSTATUS(addAttribute( sun_phi )); sun_theta = nAttr.create("sun_theta", "sun_theta", MFnNumericData::kFloat, 60.0f); CHECK_MSTATUS(addAttribute( sun_theta )); turbidity = nAttr.create("turbidity", "turbidity", MFnNumericData::kFloat, 3.0f); CHECK_MSTATUS(addAttribute( turbidity )); turbidity_max = nAttr.create("turbidity_max", "turbidity_max", MFnNumericData::kFloat, 3.0f); CHECK_MSTATUS(addAttribute( turbidity_max )); turbidity_min = nAttr.create("turbidity_min", "turbidity_min", MFnNumericData::kFloat, 3.0f); CHECK_MSTATUS(addAttribute( turbidity_min )); skyModel = eAttr.create( "skyModel", "skyModel", 0, &stat); stat = eAttr.addField( "Preetham", 0 ); stat = eAttr.addField( "Hosek", 1 ); CHECK_MSTATUS(addAttribute( skyModel )); physicalSun = nAttr.create("physicalSun", "physicalSun", MFnNumericData::kBoolean, false); CHECK_MSTATUS(addAttribute( physicalSun )); physicalSunConnection = mAttr.create("physicalSunConnection", "physicalSunConnection"); CHECK_MSTATUS(addAttribute( physicalSunConnection )); sunTurbidity = nAttr.create("sunTurbidity", "sunTurbidity", MFnNumericData::kFloat, 3.0f); CHECK_MSTATUS(addAttribute( sunTurbidity )); sunExitanceMultiplier = nAttr.create("sunExitanceMultiplier", "sunExitanceMultiplier", MFnNumericData::kFloat, 1.0f); CHECK_MSTATUS(addAttribute( sunExitanceMultiplier )); sppmAlpha = nAttr.create("sppmAlpha", "sppmAlpha", MFnNumericData::kFloat, .8f); CHECK_MSTATUS(addAttribute( sppmAlpha )); dl_mode = eAttr.create("dl_mode", "dl_mode", 0, &stat); stat = eAttr.addField("RT Direct Lighting", 0); stat = eAttr.addField("SPPM Direct Lighting", 1); stat = eAttr.addField("No Direct Lighting", 2); CHECK_MSTATUS(addAttribute(dl_mode)); env_photons_per_pass = nAttr.create("env_photons_per_pass", "env_photons_per_pass", MFnNumericData::kInt, 100000); CHECK_MSTATUS(addAttribute( env_photons_per_pass )); initial_radius = nAttr.create("initial_radius", "initial_radius", MFnNumericData::kFloat, .5f); CHECK_MSTATUS(addAttribute( initial_radius )); light_photons_per_pass = nAttr.create("light_photons_per_pass", "light_photons_per_pass", MFnNumericData::kInt, 100000); CHECK_MSTATUS(addAttribute( light_photons_per_pass )); max_photons_per_estimate = nAttr.create("max_photons_per_estimate", "max_photons_per_estimate", MFnNumericData::kInt, 100); CHECK_MSTATUS(addAttribute( max_photons_per_estimate )); photons_per_pass = nAttr.create("photons_per_pass", "photons_per_pass", MFnNumericData::kInt, 100000); CHECK_MSTATUS(addAttribute( photons_per_pass )); photon_type = eAttr.create("photon_type", "photon_type", 1, &stat); stat = eAttr.addField("Monochromatic", 0); stat = eAttr.addField("Polychromatic", 1); CHECK_MSTATUS(addAttribute(photon_type)); return stat; }