// =========================================================================== // 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. // =========================================================================== // // Procedure Name: // AEnonExtendedLightShapeDepthMapAttr // // Description: // Creates attribute editor controls in split files // for the nonExtendedLightShapeNode // // Input Value: // nodeName // // Output Value: // None // // // Procedure Name: // showReuseDmap // global proc showReuseDmap( string $readDmapAttr, string $reuseDmapAttr ) { setUITemplate -pushTemplate attributeEditorTemplate; optionMenuGrp -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kDiskBasedDmaps")) -cw 2 230 saveToDiskMenu; menuItem -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kOff")) "doNotDmap"; menuItem -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kOverwriteExistingDmaps")) "writeDmap"; menuItem -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kReuseExistingDmaps")) "reuseDmap"; showReuseDmapChange( $readDmapAttr, $reuseDmapAttr ); setUITemplate -popTemplate; } global proc updateReuseDmapMenu( string $nodeName, string $layout ) // // this is called by a scriptJob whenever the attributes change value { string $value1 = `getAttr ($nodeName+".reuseDmap")`; string $value2 = `getAttr ($nodeName+".writeDmap")`; setParent $layout; if ( $value1 == 1 ) { optionMenuGrp -e -select 3 saveToDiskMenu; } else if ( $value2 == 1 ) { optionMenuGrp -e -select 2 saveToDiskMenu; } else { optionMenuGrp -e -select 1 saveToDiskMenu; } } global proc updateFromDmapMenu( string $nodeName, string $layout ) // // This is called to insure the display of attributes is correct // whenever dimming events might occur. { setParent $layout; int $val = `optionMenuGrp -q -sl saveToDiskMenu`; int $value = `getAttr ($nodeName+".useDepthMapShadows")`; int $set; if ($value) { $set = false; } else { $set = true; } if ( $val == 3 ){ editorTemplate -dimControl $nodeName dmapUseMacro $set; editorTemplate -dimControl $nodeName dmapName $set; editorTemplate -dimControl $nodeName dmapSceneName $set; editorTemplate -dimControl $nodeName dmapLightName $set; editorTemplate -dimControl $nodeName dmapFrameExt $set; } else if ( $val == 2){ editorTemplate -dimControl $nodeName dmapUseMacro true; editorTemplate -dimControl $nodeName dmapName $set; editorTemplate -dimControl $nodeName dmapSceneName $set; editorTemplate -dimControl $nodeName dmapLightName $set; editorTemplate -dimControl $nodeName dmapFrameExt $set; } else { editorTemplate -dimControl $nodeName dmapUseMacro true; editorTemplate -dimControl $nodeName dmapName true; editorTemplate -dimControl $nodeName dmapSceneName true; editorTemplate -dimControl $nodeName dmapLightName true; editorTemplate -dimControl $nodeName dmapFrameExt true; } } global proc setDmapAttrs( string $nodeName, string $layout ) // This is called whenever the user changes the menu { int $val = `optionMenuGrp -q -sl saveToDiskMenu`; if ( $val == 3 ){ setAttr ($nodeName+".reuseDmap") 1; setAttr ($nodeName+".writeDmap") 0; } else if ( $val == 2){ setAttr ($nodeName+".reuseDmap") 0; setAttr ($nodeName+".writeDmap") 1; } else { setAttr ($nodeName+".reuseDmap") 0; setAttr ($nodeName+".writeDmap") 0; } updateFromDmapMenu( $nodeName, $layout ); } global proc showReuseDmapChange( string $readDmapAttr, string $reuseDmapAttr ) { string $buffer[]; tokenize($readDmapAttr,".",$buffer); if ( size($buffer)==0 ) return; string $layout = `setParent -q`; // create the change command for the menu // optionMenuGrp -e -cc ("setDmapAttrs " + $buffer[0] + " " + $layout ) saveToDiskMenu; // create the script job to update the menu if the attribute is changed elsewhere. // Each one is parented to a different control so that they can be replace properly // when needed. // scriptJob -rp -p saveToDiskMenu -ac $readDmapAttr ("updateReuseDmapMenu "+$buffer[0]+" "+ $layout ); scriptJob -rp -p $layout -ac $reuseDmapAttr ("updateReuseDmapMenu "+$buffer[0]+" "+ $layout ); updateFromDmapMenu($buffer[0], $layout); updateReuseDmapMenu($buffer[0], $layout); } // Procedure Name: // checkUseDepthMapShadows // global proc checkUseDepthMapShadows ( string $nodeName ) { string $nodeAttr = $nodeName + ".useDepthMapShadows"; int $value = `getAttr $nodeAttr`; string $layout = `setParent -q`; if ( $value == 1 ) { editorTemplate -dimControl $nodeName "dmapFilterSize" false; editorTemplate -dimControl $nodeName "dmapResolution" false; editorTemplate -dimControl $nodeName "dmapBias" false; editorTemplate -dimControl $nodeName "useDmapAutoFocus" false; if ( `getAttr ($nodeName + ".useDmapAutoFocus")` == 0 ) { editorTemplate -dimControl $nodeName "dmapFocus" false; editorTemplate -dimControl $nodeName "dmapWidthFocus" false; editorTemplate -dimControl $nodeName "useLightPosition" false; } if ( `attrFieldSliderGrp -exists volumeShadowSamplesField` ) { attrFieldSliderGrp -e -en true volumeShadowSamplesField; } editorTemplate -dimControl $nodeName "fogShadowIntensity" false; editorTemplate -dimControl $nodeName "useMidDistDmap" false; editorTemplate -dimControl $nodeName "useXPlusDmap" false; editorTemplate -dimControl $nodeName "useXMinusDmap" false; editorTemplate -dimControl $nodeName "useYPlusDmap" false; editorTemplate -dimControl $nodeName "useYMinusDmap" false; editorTemplate -dimControl $nodeName "useZPlusDmap" false; editorTemplate -dimControl $nodeName "useZMinusDmap" false; editorTemplate -dimControl $nodeName "useOnlySingleDmap" false; if (`optionMenuGrp -exists saveToDiskMenu`) { editorTemplate -dimControl $nodeName writeDmap false; editorTemplate -dimControl $nodeName reuseDmap false; updateFromDmapMenu($nodeName, $layout); updateReuseDmapMenu($nodeName, $layout); } } else { editorTemplate -dimControl $nodeName "dmapFilterSize" true; editorTemplate -dimControl $nodeName "dmapResolution" true; editorTemplate -dimControl $nodeName "dmapBias" true; editorTemplate -dimControl $nodeName "useDmapAutoFocus" true; editorTemplate -dimControl $nodeName "dmapFocus" true; editorTemplate -dimControl $nodeName "dmapWidthFocus" true; editorTemplate -dimControl $nodeName "useLightPosition" true; if ( `attrFieldSliderGrp -exists volumeShadowSamplesField` ) { attrFieldSliderGrp -e -en false volumeShadowSamplesField; } editorTemplate -dimControl $nodeName "fogShadowIntensity" true; editorTemplate -dimControl $nodeName "useMidDistDmap" true; editorTemplate -dimControl $nodeName "useXPlusDmap" true; editorTemplate -dimControl $nodeName "useXMinusDmap" true; editorTemplate -dimControl $nodeName "useYPlusDmap" true; editorTemplate -dimControl $nodeName "useYMinusDmap" true; editorTemplate -dimControl $nodeName "useZPlusDmap" true; editorTemplate -dimControl $nodeName "useZMinusDmap" true; editorTemplate -dimControl $nodeName "useOnlySingleDmap" true; editorTemplate -dimControl $nodeName dmapName true; editorTemplate -dimControl $nodeName dmapSceneName true; editorTemplate -dimControl $nodeName dmapLightName true; editorTemplate -dimControl $nodeName dmapFrameExt true; if (`optionMenuGrp -exists saveToDiskMenu`) { editorTemplate -dimControl $nodeName writeDmap true; editorTemplate -dimControl $nodeName reuseDmap true; updateFromDmapMenu($nodeName, $layout); updateReuseDmapMenu($nodeName, $layout); } } checkuseDepthMapreadDepthMap $nodeName; checkNonExtendedLightShapeNodeUseOnlySingleDepthMap $nodeName; } // // Procedure Name: // checkuseDepthMapreadDepthMap // global proc checkuseDepthMapreadDepthMap ( string $nodeName ) { string $nodeAttr1 = $nodeName + ".useDepthMapShadows"; int $value1 = `getAttr $nodeAttr1`; string $nodeAttr2 = $nodeName + ".reuseDmap"; int $value2 = `getAttr $nodeAttr2`; if ( ($value1 == 1) && ($value2 == 1) ) { editorTemplate -dimControl $nodeName "dmapUseMacro" false; } else { editorTemplate -dimControl $nodeName "dmapUseMacro" true; } } global proc checkNonExtendedLightShapeNodeUseDepthMapAutoFocus (string $nodeName) { string $nodeAttr1 = $nodeName + ".useDmapAutoFocus"; int $value1 = `getAttr $nodeAttr1`; if ($value1) { editorTemplate -dimControl $nodeName "dmapFocus" true; editorTemplate -dimControl $nodeName "dmapWidthFocus" true; editorTemplate -dimControl $nodeName "useLightPosition" true; } else { editorTemplate -dimControl $nodeName "dmapFocus" false; editorTemplate -dimControl $nodeName "dmapWidthFocus" false; editorTemplate -dimControl $nodeName "useLightPosition" false; } } global proc checkNonExtendedLightShapeNodeUseDepthMapAutoClipping (string $nodeName) { string $nodeAttr1 = $nodeName + ".useDmapAutoClipping"; int $value1 = `getAttr $nodeAttr1`; if ($value1) { editorTemplate -dimControl $nodeName "dmapNearClipPlane" true; editorTemplate -dimControl $nodeName "dmapFarClipPlane" true; } else { editorTemplate -dimControl $nodeName "dmapNearClipPlane" false; editorTemplate -dimControl $nodeName "dmapFarClipPlane" false; } } global proc checkNonExtendedLightShapeNodeUseOnlySingleDepthMap (string $nodeName) { if (`attributeQuery -exists -node $nodeName "useOnlySingleDmap"`){ string $nodeAttr1 = $nodeName + ".useDepthMapShadows"; int $value1 = `getAttr $nodeAttr1`; int $value2; if (`objectType $nodeName` == "spotLight") { string $nodeAttr2 = $nodeName + ".useOnlySingleDmap"; $value2 = `getAttr $nodeAttr2`; } else if (`objectType $nodeName` == "pointLight") { $value2 = 0; } if ( ($value1 == 1) && ($value2 == 0) ) { editorTemplate -dimControl $nodeName "useXPlusDmap" false; editorTemplate -dimControl $nodeName "useXMinusDmap" false; editorTemplate -dimControl $nodeName "useYPlusDmap" false; editorTemplate -dimControl $nodeName "useYMinusDmap" false; editorTemplate -dimControl $nodeName "useZPlusDmap" false; editorTemplate -dimControl $nodeName "useZMinusDmap" false; } else { editorTemplate -dimControl $nodeName "useXPlusDmap" true; editorTemplate -dimControl $nodeName "useXMinusDmap" true; editorTemplate -dimControl $nodeName "useYPlusDmap" true; editorTemplate -dimControl $nodeName "useYMinusDmap" true; editorTemplate -dimControl $nodeName "useZPlusDmap" true; editorTemplate -dimControl $nodeName "useZMinusDmap" true; } } } global proc AEvolumeShadowSamplesNew( string $attrName ) { setUITemplate -pst attributeEditorTemplate; attrFieldSliderGrp -attribute $attrName -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kFogShadowSamples")) volumeShadowSamplesField; setUITemplate -ppt; } global proc AEvolumeShadowSamplesReplace( string $attrName ) { attrFieldSliderGrp -e -attribute $attrName -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kFogShadowSamples")) volumeShadowSamplesField; } // // Procedure Name: // AEnonExtendedLightShapeDepthMapAttr // global proc AEnonExtendedLightShapeDepthMapAttr ( string $nodeName ) { if ( `objectType $nodeName` == "pointLight"){ if (`attributeQuery -exists -n $nodeName "useOnlySingleDmap"`) setAttr ($nodeName + ".useOnlySingleDmap") 0; } editorTemplate -beginLayout (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kDepthMapShadowAttributes")) -collapse 0; editorTemplate -addControl "useDepthMapShadows" "checkUseDepthMapShadows"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kResolution")) -addControl "dmapResolution"; editorTemplate -beginNoOptimize; editorTemplate -addControl -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kUseMidDist")) "useMidDistDmap"; // Focus if (`objectType $nodeName` == "spotLight" || `objectType $nodeName` == "pointLight") { editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kUseAutoFocus")) -addControl "useDmapAutoFocus" "checkNonExtendedLightShapeNodeUseDepthMapAutoFocus"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kFocus")) -addControl "dmapFocus"; editorTemplate -suppress "dmapWidthFocus"; } else { editorTemplate -suppress "useDmapAutoFocus"; editorTemplate -suppress "dmapFocus"; editorTemplate -suppress "dmapWidthFocus"; } // Width if ( `objectType $nodeName` == "directionalLight" ) { editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kUseAutoFocus2")) -addControl "useDmapAutoFocus" "checkNonExtendedLightShapeNodeUseDepthMapAutoFocus"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kWidthFocus")) -addControl "dmapWidthFocus"; editorTemplate -addControl "useLightPosition"; editorTemplate -suppress "dmapFocus"; } else { editorTemplate -suppress "useDmapAutoFocus"; editorTemplate -suppress "dmapWidthFocus"; editorTemplate -suppress "dmapFocus"; editorTemplate -suppress "useLightPosition"; } editorTemplate -endNoOptimize; editorTemplate -addSeparator; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kFilterSize")) -addControl "dmapFilterSize"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kBias")) -addControl "dmapBias"; editorTemplate -addControl "fogShadowIntensity"; editorTemplate -callCustom "AEvolumeShadowSamplesNew" "AEvolumeShadowSamplesReplace" "volumeShadowSamples"; editorTemplate -suppress "useDmapAutoClipping"; editorTemplate -suppress "dmapNearClipPlane"; editorTemplate -suppress "dmapFarClipPlane"; // IO editorTemplate -addSeparator; editorTemplate -callCustom showReuseDmap showReuseDmapChange writeDmap reuseDmap; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kShadowMapFileName")) -addControl "dmapName"; editorTemplate -beginNoOptimize; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kAddSceneName")) -addControl "dmapSceneName"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kAddLightName")) -addControl "dmapLightName"; editorTemplate -endNoOptimize; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kAddFrameExt")) -addControl "dmapFrameExt"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kUseMacro")) -addControl "dmapUseMacro"; editorTemplate -suppress "lastWrittenDmapAnimExtName"; if (`objectType $nodeName` == "spotLight" || `objectType $nodeName` == "pointLight") { editorTemplate -addSeparator; } // OnlySingleDepthMap if (`objectType $nodeName` == "spotLight") { editorTemplate -addControl "useOnlySingleDmap" "checkNonExtendedLightShapeNodeUseOnlySingleDepthMap"; editorTemplate -interruptOptimize; } else { editorTemplate -suppress "useOnlySingleDmap"; } // SixMaps if (`objectType $nodeName` == "spotLight" || `objectType $nodeName` == "pointLight") { editorTemplate -beginNoOptimize; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kUse")) -addControl "useXPlusDmap"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kUseXMap")) -addControl "useXMinusDmap"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kUse3")) -addControl "useYPlusDmap"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kUseYMap")) -addControl "useYMinusDmap"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kUse5")) -addControl "useZPlusDmap"; editorTemplate -label (uiRes("m_AEnonExtendedLightShapeDepthMapAttr.kUseZMap")) -addControl "useZMinusDmap"; editorTemplate -endNoOptimize; } else { editorTemplate -suppress "useXPlusDmap"; editorTemplate -suppress "useXMinusDmap"; editorTemplate -suppress "useYPlusDmap"; editorTemplate -suppress "useYMinusDmap"; editorTemplate -suppress "useZPlusDmap"; editorTemplate -suppress "useZMinusDmap"; } editorTemplate -endLayout; }