// =========================================================================== // Copyright 2018 Autodesk, Inc. All rights reserved. // // Use of this software is subject to the terms of the Autodesk license // agreement provided at the time of installation or download, or which // otherwise accompanies this software in either electronic or hard copy form. // =========================================================================== // // provided at the time of installation or download, or which otherwise accompanies // // Procedures specifying the UI layout for ilrBssrdfShader // in Maya's Attribute Editor // global proc AEilrBssrdfShaderNormalNew(string $attr) { attrNavigationControlGrp -l "Bump Mapping" -dragCallback "AEdragCallback" AEilrBssrdfShaderNormalControl; AEilrBssrdfShaderNormalReplace $attr; } global proc AEilrBssrdfShaderNormalReplace(string $attr) { attrNavigationControlGrp -edit -at $attr AEilrBssrdfShaderNormalControl; } global proc AEilrUpdateBssrdfShader(string $node) { int $dim = (!`getAttr ($node + ".blockerEnabled")`); editorTemplate -dimControl $node "blockerAbsorbColor" $dim; editorTemplate -dimControl $node "blockerAbsorbIntensity" $dim; editorTemplate -dimControl $node "blockerAbsorbExponent" $dim; } global proc AEilrBssrdfShaderTemplate(string $node) { editorTemplate -beginScrollLayout; editorTemplate -beginLayout "Common Attributes" -collapse false; editorTemplate -l "Base Color" -ac "color"; editorTemplate -l "Ambient Color" -ac "ambientColor"; editorTemplate -l "Incandescence" -ac "incandescence"; editorTemplate -callCustom "AEilrBssrdfShaderNormalNew" "AEilrBssrdfShaderNormalReplace" "normalCamera"; editorTemplate -s "normalCamera"; editorTemplate -endLayout; editorTemplate -beginLayout "Specular Attributes" -collapse false; editorTemplate -l "Eccentricity" -ac "eccentricity"; editorTemplate -l "Specular Roll Off" -ac "specularRollOff"; editorTemplate -l "Specular Color" -ac "specularColor"; editorTemplate -l "Reflectivity" -ac "reflectivity"; editorTemplate -l "Reflected Color" -ac "reflectedColor"; editorTemplate -l "Reflection Limit" -ac "reflectionLimit"; editorTemplate -l "Reflection Specularity" -ac "reflectionSpecularity"; editorTemplate -endLayout; editorTemplate -beginLayout "Scattering Attributes" -collapse false; editorTemplate -l "Material Presets" -ac "presets" "ilrSetBssrdfPresets"; editorTemplate -l "Diffuse Reflectance" -ac "diffuseRefl" "ilrCheckBssrdfPresets"; editorTemplate -l "Scatter Length" -ac "scatterLength" "ilrCheckBssrdfPresets"; editorTemplate -l "Scatter Length Scale" -ac "scatterLengthScale"; editorTemplate -l "Intensity" -ac "intensity"; editorTemplate -as; editorTemplate -l "Distribution Type" -ac "triDist"; editorTemplate -l "Approximation" -ac "accuracy"; editorTemplate -l "Sample Density" -ac "sampleDensity"; editorTemplate -as; editorTemplate -l "Enable Blocking Geometry" -ac "blockerEnabled" "AEilrUpdateBssrdfShader"; editorTemplate -l "Absorption Color" -ac "blockerAbsorbColor"; editorTemplate -l "Absorption Intensity" -ac "blockerAbsorbIntensity"; editorTemplate -l "Absorption Exponent" -ac "blockerAbsorbExponent"; editorTemplate -endLayout; // include/call base class/node attributes AEdependNodeTemplate $node; // suppressed attributes editorTemplate -s "version"; editorTemplate -addExtraControls; editorTemplate -endScrollLayout; } global proc ilrSetBssrdfPresets(string $node) { int $preset = `getAttr ($node+".presets")`; switch ($preset) { case 1 : // Apple setAttr ($node+".diffuseRefl") -type float3 0.85 0.84 0.53; setAttr ($node+".scatterLength") -type float3 6.9611 6.4002 1.8959; break; case 2 : // Cream setAttr ($node+".diffuseRefl") -type float3 0.98 0.90 0.73; setAttr ($node+".scatterLength") -type float3 15.0276 4.6640 2.5414; break; case 3 : // Ketchup setAttr ($node+".diffuseRefl") -type float3 0.16 0.01 0.0; setAttr ($node+".scatterLength") -type float3 4.7617 0.5748 0.3941; break; case 4 : // Marble setAttr ($node+".diffuseRefl") -type float3 0.83 0.79 0.75; setAttr ($node+".scatterLength") -type float3 8.5094 5.5662 3.9513; break; case 5 : // Potato setAttr ($node+".diffuseRefl") -type float3 0.77 0.62 0.21; setAttr ($node+".scatterLength") -type float3 14.2664 7.2276 2.0362; break; case 6 : // Skimmilk setAttr ($node+".diffuseRefl") -type float3 0.81 0.81 0.69; setAttr ($node+".scatterLength") -type float3 18.4244 10.4435 3.5019; break; case 7 : // Skin1 setAttr ($node+".diffuseRefl") -type float3 0.44 0.22 0.13; setAttr ($node+".scatterLength") -type float3 3.6733 1.3665 0.6827; break; case 8 : // Skin2 setAttr ($node+".diffuseRefl") -type float3 0.63 0.44 0.34; setAttr ($node+".scatterLength") -type float3 4.8215 1.6937 1.0900; break; case 9 : // Wholemilk setAttr ($node+".diffuseRefl") -type float3 0.91 0.88 0.76; setAttr ($node+".scatterLength") -type float3 10.8988 6.5754 2.5084; break; } } global proc ilrCheckBssrdfPresets(string $node) { int $presets = `getAttr ($node+".presets")`; float $diffuseRefl[] = `getAttr ($node+".diffuseRefl")`; int $diffuseReflScaled0 = (int) 100.0 * $diffuseRefl[0]; int $diffuseReflScaled1 = (int) 100.0 * $diffuseRefl[1]; int $diffuseReflScaled2 = (int) 100.0 * $diffuseRefl[2]; float $scatterLength[] = `getAttr ($node+".scatterLength")`; int $scatterLength0 = (int) 10000.0 * $scatterLength[0]; int $scatterLength1 = (int) 10000.0 * $scatterLength[1]; int $scatterLength2 = (int) 10000.0 * $scatterLength[2]; if ($diffuseReflScaled0 == 85 && $diffuseReflScaled1 == 83 && $diffuseReflScaled2 == 52 && $scatterLength0 == 69611 && $scatterLength1 == 64001 && $scatterLength2 == 18959) { if ($presets != 1) { setAttr ($node+".presets") 1; } } else if ($diffuseReflScaled0 == 98 && $diffuseReflScaled1 == 89 && $diffuseReflScaled2 == 73 && $scatterLength0 == 150276 && $scatterLength1 == 46640 && $scatterLength2 == 25413) { if ($presets != 2) { setAttr ($node+".presets") 2; } } else if ($diffuseReflScaled0 == 15 && $diffuseReflScaled1 == 0 && $diffuseReflScaled2 == 0 && $scatterLength0 == 47617 && $scatterLength1 == 5748 && $scatterLength2 == 3941) { if ($presets != 3) { setAttr ($node+".presets") 3; } } else if ($diffuseReflScaled0 == 82 && $diffuseReflScaled1 == 79 && $diffuseReflScaled2 == 75 && $scatterLength0 == 85094 && $scatterLength1 == 55661 && $scatterLength2 == 39512) { if ($presets != 4) { setAttr ($node+".presets") 4; } } else if ($diffuseReflScaled0 == 76 && $diffuseReflScaled1 == 62 && $diffuseReflScaled2 == 20 && $scatterLength0 == 142664 && $scatterLength1 == 72276 && $scatterLength2 == 20362) { if ($presets != 5) { setAttr ($node+".presets") 5; } } else if ($diffuseReflScaled0 == 81 && $diffuseReflScaled1 == 81 && $diffuseReflScaled2 == 68 && $scatterLength0 == 184244 && $scatterLength1 == 104434 && $scatterLength2 == 35018) { if ($presets != 6) { setAttr ($node+".presets") 6; } } else if ($diffuseReflScaled0 == 43 && $diffuseReflScaled1 == 21 && $diffuseReflScaled2 == 12 && $scatterLength0 == 36733 && $scatterLength1 == 13665 && $scatterLength2 == 6826) { if ($presets != 7) { setAttr ($node+".presets") 7; } } else if ($diffuseReflScaled0 == 62 && $diffuseReflScaled1 == 43 && $diffuseReflScaled2 == 34 && $scatterLength0 == 48214 && $scatterLength1 == 16936 && $scatterLength2 == 10900) { if ($presets != 8) { setAttr ($node+".presets") 8; } } else if ($diffuseReflScaled0 == 91 && $diffuseReflScaled1 == 87 && $diffuseReflScaled2 == 75 && $scatterLength0 == 108987 && $scatterLength1 == 65753 && $scatterLength2 == 25083) { if ($presets != 9) { setAttr ($node+".presets") 9; } } else { if ($presets != 0) { setAttr ($node+".presets") 0; } } }