// =========================================================================== // 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: // AEnurbsTessellateTemplate // // Description Name; // Creates the attribute editor controls for the nurbsTessellate Node // // Input Value: // nodeName // // Output Value: // None // global proc AEnurbsUseChordHeightControls( string $nodeName ) { string $useChordHeightAttrName = $nodeName + ".useChordHeight"; int $useChordHeightValue = `getAttr $useChordHeightAttrName`; if ( $useChordHeightValue == 0 ) { editorTemplate -dimControl $nodeName "chordHeight" true; } else { editorTemplate -dimControl $nodeName "chordHeight" false; } } global proc AEnurbsUseChordHeightRatioControls( string $nodeName ) { string $formatAttrName = $nodeName + ".format"; int $formatValue = `getAttr $formatAttrName`; string $useChordHeightRatioAttrName = $nodeName + ".useChordHeightRatio"; int $useChordHeightRatioValue = `getAttr $useChordHeightRatioAttrName`; if ( $useChordHeightRatioValue == 0 && $formatValue == 2 ) { editorTemplate -dimControl $nodeName "chordHeightRatio" true; } else { editorTemplate -dimControl $nodeName "chordHeightRatio" false; } } global proc AEnurbsCheckTessSmoothEdge ( string $nodeName ) { string $nodeAttr = $nodeName + ".smoothEdge"; int $value = `getAttr $nodeAttr`; editorTemplate -dimControl $nodeName "smoothEdgeRatio" (!$value); } global proc AEnurbsFormatControls( string $nodeName ) { string $formatAttrName = $nodeName + ".format"; int $value = `getAttr $formatAttrName`; // shell tesselator does not have this attribute, so skip the // following for that node type int $hasSimpleAttributes = `attributeExists "explicitTessellationAttributes" $nodeName`; if($hasSimpleAttributes) { string $explicit = $nodeName + ".explicitTessellationAttributes"; int $valueExplicit = `getAttr $explicit`; if(0 == $valueExplicit) $value = 4; // use simple tesselation int $dim = ( $value == 4 ); editorTemplate -dimControl $nodeName "polygonType" $dim; editorTemplate -dimControl $nodeName "format" $dim; editorTemplate -dimControl $nodeName "matchNormalDir" $dim; editorTemplate -dimControl $nodeName "normalizeTrimmedUVRange" $dim; } if ( $value == 0 ) { editorTemplate -dimControl $nodeName "uType" true; editorTemplate -dimControl $nodeName "uNumber" true; editorTemplate -dimControl $nodeName "vType" true; editorTemplate -dimControl $nodeName "vNumber" true; editorTemplate -dimControl $nodeName "useChordHeight" true; editorTemplate -dimControl $nodeName "chordHeight" true; editorTemplate -dimControl $nodeName "useChordHeightRatio" true; editorTemplate -dimControl $nodeName "chordHeightRatio" true; // triangle count true editorTemplate -dimControl $nodeName "polygonCount" false; editorTemplate -dimControl $nodeName "fractionalTolerance" true; editorTemplate -dimControl $nodeName "minEdgeLength" true; editorTemplate -dimControl $nodeName "delta" true; } else if ( $value == 1 ) { editorTemplate -dimControl $nodeName "uType" true; editorTemplate -dimControl $nodeName "uNumber" true; editorTemplate -dimControl $nodeName "vType" true; editorTemplate -dimControl $nodeName "vNumber" true; editorTemplate -dimControl $nodeName "useChordHeight" true; editorTemplate -dimControl $nodeName "chordHeight" true; editorTemplate -dimControl $nodeName "useChordHeightRatio" true; editorTemplate -dimControl $nodeName "chordHeightRatio" false; editorTemplate -dimControl $nodeName "polygonCount" true; // standard fit true editorTemplate -dimControl $nodeName "fractionalTolerance" false; editorTemplate -dimControl $nodeName "minEdgeLength" false; editorTemplate -dimControl $nodeName "delta" false; AEnurbsUseChordHeightRatioControls( $nodeName ); } else if ($value == 2 || $value == 3) { // general true editorTemplate -dimControl $nodeName "uType" false; editorTemplate -dimControl $nodeName "uNumber" false; editorTemplate -dimControl $nodeName "vType" false; editorTemplate -dimControl $nodeName "vNumber" false; editorTemplate -dimControl $nodeName "useChordHeight" false; editorTemplate -dimControl $nodeName "chordHeight" false; editorTemplate -dimControl $nodeName "useChordHeightRatio" false; editorTemplate -dimControl $nodeName "chordHeightRatio" false; editorTemplate -dimControl $nodeName "polygonCount" true; editorTemplate -dimControl $nodeName "fractionalTolerance" true; editorTemplate -dimControl $nodeName "minEdgeLength" true; editorTemplate -dimControl $nodeName "delta" true; AEnurbsUseChordHeightControls( $nodeName ); AEnurbsUseChordHeightRatioControls( $nodeName ); } else if ($value == 4) { editorTemplate -dimControl $nodeName "uType" true; editorTemplate -dimControl $nodeName "uNumber" true; editorTemplate -dimControl $nodeName "vType" true; editorTemplate -dimControl $nodeName "vNumber" true; editorTemplate -dimControl $nodeName "useChordHeight" true; editorTemplate -dimControl $nodeName "chordHeight" true; editorTemplate -dimControl $nodeName "useChordHeightRatio" true; editorTemplate -dimControl $nodeName "chordHeightRatio" true; editorTemplate -dimControl $nodeName "polygonCount" true; editorTemplate -dimControl $nodeName "fractionalTolerance" true; editorTemplate -dimControl $nodeName "minEdgeLength" true; editorTemplate -dimControl $nodeName "delta" true; AEnurbsUseChordHeightControls( $nodeName ); AEnurbsUseChordHeightRatioControls( $nodeName ); } if($hasSimpleAttributes) { if ($value < 4) { editorTemplate -dimControl $nodeName "uDivisionsFactor" true; editorTemplate -dimControl $nodeName "vDivisionsFactor" true; editorTemplate -dimControl $nodeName "curvatureTolerance" true; } else { // simple tesselation case editorTemplate -dimControl $nodeName "uDivisionsFactor" false; editorTemplate -dimControl $nodeName "vDivisionsFactor" false; editorTemplate -dimControl $nodeName "curvatureTolerance" false; } } } proc AEnurbsSimpleTessControls(string $nodeName) { // simple options editorTemplate -beginLayout (uiRes("m_AEnurbsTessellateTemplate.kSimpleTesselationOptions")); editorTemplate -addControl "curvatureTolerance"; editorTemplate -addControl "uDivisionsFactor"; editorTemplate -addControl "vDivisionsFactor"; editorTemplate -endLayout; } // shared by nurbsTessellate and shellTessellate global proc AEnurbsAdvancedTessControls(string $nodeName) { // advanced options editorTemplate -beginLayout (uiRes("m_AEnurbsTessellateTemplate.kAdvancedTesselation")); editorTemplate -addControl "polygonType"; editorTemplate -addControl "format" "AEnurbsFormatControls"; editorTemplate -beginNoOptimize; editorTemplate -addControl "matchNormalDir"; editorTemplate -addControl "normalizeTrimmedUVRange"; editorTemplate -endNoOptimize; editorTemplate -beginLayout (uiRes("m_AEnurbsTessellateTemplate.kGeneralTesselation")); editorTemplate -addControl "uType"; editorTemplate -addControl "uNumber"; editorTemplate -addControl "vType"; editorTemplate -addControl "vNumber"; editorTemplate -addControl "useChordHeight" "AEnurbsUseChordHeightControls"; editorTemplate -addControl "chordHeight"; editorTemplate -addControl "useChordHeightRatio" "AEnurbsUseChordHeightRatioControls"; editorTemplate -addControl "chordHeightRatio"; editorTemplate -addControl "edgeSwap"; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEnurbsTessellateTemplate.kPolygonCountOptions")); editorTemplate -addControl "polygonCount"; editorTemplate -endLayout; editorTemplate -beginLayout (uiRes("m_AEnurbsTessellateTemplate.kStandardFitOptions")); editorTemplate -addControl "chordHeightRatio"; editorTemplate -addControl "fractionalTolerance"; editorTemplate -addControl "minEdgeLength"; editorTemplate -addControl "delta"; editorTemplate -endLayout; editorTemplate -endLayout; } proc AEnurbsCommonTessControls(string $nodeName) { // common options editorTemplate -beginLayout (uiRes("m_AEnurbsTessellateTemplate.kCommonTesselationOptions")); editorTemplate -addControl "smoothEdge" "AEnurbsCheckTessSmoothEdge"; editorTemplate -addControl "smoothEdgeRatio"; editorTemplate -addControl "edgeSwap"; editorTemplate -endLayout; } global proc AEnurbsTessellateTemplate ( string $nodeName ) { editorTemplate -beginScrollLayout; editorTemplate -beginLayout (uiRes("m_AEnurbsTessellateTemplate.kNURBSTessellateHistory")) -collapse false; string $inputSurface = (uiRes("m_AEnurbsTessellateTemplate.kInputSurface")); editorTemplate -callCustom ("AEinputNew \""+$inputSurface+"\"") ("AEinputReplace \""+$inputSurface+"\"") "inputSurface"; editorTemplate -label (uiRes("m_AEnurbsTessellateTemplate.kEnableAdvanced")) -addControl "explicitTessellationAttributes" "AEnurbsFormatControls"; AEnurbsSimpleTessControls($nodeName); AEnurbsAdvancedTessControls($nodeName); AEnurbsCommonTessControls($nodeName); editorTemplate -endLayout; // include/call base class/node attributes AEabstractBaseCreateTemplate $nodeName; editorTemplate -addExtraControls; editorTemplate -endScrollLayout; }