// =========================================================================== // 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. // =========================================================================== proc DynCreateNComponentPaintMenu( string $parent, string $useThisMesh, int $whichMenu ) // // Build the paint nComponent submenu // // If $whichMenu == 0, paint by vertex map. // If $whichMenu == 1, paint by texture map. // If $whichMenu == 2, convert current texture map to vertex map // If $whichMenu == 3, convert current vertex map to texture map // { string $meshParam = $useThisMesh; if( $useThisMesh == "" ){ $meshParam = "\"\""; } setParent -menu $parent; // To add another paintable attribute, add the appropriate entries to the // following tables // string $attrs[] = {"strength", "glueStrength", "weight" }; string $labels[] = { (uiRes("m_NucleusConstraintMenu.kStrengthMap")) , (uiRes("m_NucleusConstraintMenu.kGlueStrengthMap")) , (uiRes("m_NucleusConstraintMenu.kWeightMap")) } ; string $annots[]; string $vertexLabels[] = {"PVS", "PVGS", "PVW"} ; string $mapLabels[] = {"PSM", "PGSM", "PWM"} ; string $images[] = {}; if ($whichMenu < 2) { $annots = { (uiRes("m_NucleusConstraintMenu.kStrengthMapAnnot")) , (uiRes("m_NucleusConstraintMenu.kGlueStrengthMapAnnot")) , (uiRes("m_NucleusConstraintMenu.kWeightMapAnnot")) }; if ($whichMenu == 0) { $images = { "paintVertexStrength.png", "paintVertexGlue.png", "paintVertexWeight.png" }; } else if ($whichMenu == 1) { $images = { "paintTextureStrength.png", "paintTextureGlue.png", "paintTextureWeight.png" }; } } else if ($whichMenu == 2) { $annots = { (uiRes("m_NucleusConstraintMenu.kStrengthConvertAnnot")), (uiRes("m_NucleusConstraintMenu.kGlueStrengthConvertAnnot")), (uiRes("m_NucleusConstraintMenu.kWeightConvertAnnot")) }; $images = { "convertTextToStrength.png", "convertTextToGlue.png", "convertTextToWeight.png" }; } else { $annots = { (uiRes("m_NucleusConstraintMenu.kStrengthConvertVertAnnot")), (uiRes("m_NucleusConstraintMenu.kGlueStrengthConvertVertAnnot")), (uiRes("m_NucleusConstraintMenu.kWeightConvertVertAnnot")) }; $images = { "convertVertexToStrength.png", "convertVertexToGlue.png", "convertVertexToWeight.png" }; } string $optAnnots[] = { (uiRes("m_NucleusConstraintMenu.kStrengthMapOptionAnnot")), (uiRes("m_NucleusConstraintMenu.kGlueStrengthMapOptionAnnot")), (uiRes("m_NucleusConstraintMenu.kWeightMapOptionAnnot")) }; // Loop through the tables and build the menu // int $index = 0; int $numAttrs = size($attrs); while( $index < $numAttrs ){ string $attrName = $attrs[$index] + "Map"; string $attrLabel = $labels[$index]; string $baseAttr = $attrs[$index]; string $setMapTypeCmd = ("setNComponentMapType(\""+$baseAttr+"\","); string $attrCmd, $optCmd; switch ($whichMenu) { case 0: { // paint vertex map $setMapTypeCmd += "1)"; $attrCmd = ($setMapTypeCmd+"; artAttrNComponentToolScript 4 "+$baseAttr); $optCmd = ($setMapTypeCmd+"; artAttrNComponentToolScript 3 "+$baseAttr); } break; case 1: { // paint texture $setMapTypeCmd += "2)"; $attrCmd = ($setMapTypeCmd+"; paintNClothTexture " + $attrName + " \"" + $attrLabel + "\" 2 0" + $meshParam ); $optCmd = ($setMapTypeCmd+"; paintNClothTexture " + $attrName + " \"" + $attrLabel + "\" 2 1" + $meshParam ); } break; case 2: { // convert texture map to vertex map $attrCmd = ("nComponentTextureMapToVtxMap " + $attrName); } break; case 3: { // convert texture map to vertex map $attrCmd = ("nClothVtxMapToTextureMap 1 { \"" + $attrName + "\", \""+ $attrs[$index] + "\", \""+ 2 + "\", "+ $meshParam + " }"); } break; } if ($whichMenu == 0) { menuItem -label $labels[$index] -annotation $annots[$index] -image $images[$index] -imageOverlayLabel $vertexLabels[$index] -enable true -command $attrCmd; menuItem -optionBox true -annotation $optAnnots[$index] -image $images[$index] -imageOverlayLabel $vertexLabels[$index] -enable true -command $optCmd; } else if ($whichMenu == 1) { menuItem -label $labels[$index] -annotation $annots[$index] -image $images[$index] -imageOverlayLabel $mapLabels[$index] -enable true -command $attrCmd; menuItem -optionBox true -annotation $optAnnots[$index] -image $images[$index] -imageOverlayLabel $mapLabels[$index] -enable true -command $optCmd; } else { menuItem -label $labels[$index] -annotation $annots[$index] -image $images[$index] -enable true -command $attrCmd; } $index++; } setParent -menu ..; } global proc NucleusConstraintMenu( string $parent ) // // Build the constraint menu { setParent -menu $parent; if( `menu -q -ni $parent` != 0 ) { // // Menu is built already - just return // return; } menuItem -divider true -dividerLabel (uiRes("m_NucleusConstraintMenu.kConstraintCreate")); menuItem -rtc "nConstraintComponent" -version "2014" -dmc "performCreateComponentNConstraint 2"; menuItem -optionBox true -rtc "nConstraintComponentOptions"; menuItem -rtc "nConstraintComponentToComponent" -dmc "performCreateDynamicConstraint 2 \"pointToPoint\""; menuItem -optionBox true -rtc "nConstraintComponentToComponentOptions"; menuItem -rtc "nConstraintForceField" -dmc "performCreateDynamicConstraint 2 \"force\""; menuItem -optionBox true -rtc "nConstraintForceFieldOptions"; menuItem -rtc "nConstraintPointToSurface" -dmc "performCreateDynamicConstraint 2 \"pointToSurface\""; menuItem -optionBox true -rtc "nConstraintPointToSurfaceOptions"; menuItem -rtc "nConstraintSlideOnSurface" -dmc "performCreateDynamicConstraint 2 \"slideOnSurface\""; menuItem -optionBox true -rtc "nConstraintSlideOnSurfaceOptions"; menuItem -rtc "nConstraintTearableSurface" -dmc "performCreateDynamicConstraint 2 \"tearableSurface\""; menuItem -optionBox true -rtc "nConstraintTearableSurfaceOptions"; menuItem -rtc "nConstraintTransform" -dmc "performCreateDynamicConstraint 2 \"transform\""; menuItem -optionBox true -rtc "nConstraintTransformOptions"; menuItem -divider true -dividerLabel (uiRes("m_NucleusConstraintMenu.kConstraintEdit")); menuItem -rtc "nConstraintAttractToMatch" -dmc "performCreateDynamicConstraint 2 \"match\""; menuItem -optionBox true -rtc "nConstraintAttractToMatchOptions"; menuItem -rtc "nConstraintDisableCollision" -dmc "performCreateDynamicConstraint 2 \"disableCollision\""; menuItem -optionBox true -rtc "nConstraintDisableCollisionOptions"; menuItem -rtc "nConstraintCollisionExclusion" -dmc "performCreateDynamicConstraint 2 \"collisionExclusion\""; menuItem -optionBox true -rtc "nConstraintCollisionExclusionOptions"; menuItem -rtc "dynamicConstraintRemove" -dmc "performRemoveDynamicConstraint 2 \"selected\"" dynamicConstraintRemoveItem; menuItem -rtc "nConstraintWeldBorders" -dmc "performCreateDynamicConstraint 2 \"weldBorders\""; menuItem -optionBox true -rtc "nConstraintWeldBordersOptions"; menuItem -divider true -dividerLabel (uiRes("m_NucleusConstraintMenu.kConstraintMembership")); menuItem -rtc "nConstraintConstraintMembershipTool"; menuItem -rtc "nConstraintAddMembers"; menuItem -rtc "nConstraintRemoveMembers"; menuItem -rtc "nConstraintReplaceMembers"; menuItem -rtc "nConstraintSelectMembers"; menuItem -divider true -dividerLabel (uiRes("m_NucleusConstraintMenu.kConstraintMaps")); // Map-related menu items // string $paintVtxMapItem = `menuItem -label (uiRes("m_NucleusConstraintMenu.kPaintPropByVertex")) -annotation (uiRes("m_NucleusConstraintMenu.kPaintPropByVertexAnnot")) -subMenu true -tearOff true -allowOptionBoxes true nClothPaintPropVertexItem`; DynCreateNComponentPaintMenu $paintVtxMapItem "" 0; setParent -menu ..; string $paintTextureItem = `menuItem -label (uiRes("m_NucleusConstraintMenu.kPaintPropByTexture")) -annotation (uiRes("m_NucleusConstraintMenu.kPaintPropByTextureAnnot")) -subMenu true -tearOff true -allowOptionBoxes true nClothPaintPropTextureItem`; DynCreateNComponentPaintMenu $paintTextureItem "" 1; string $convertTxToVtxItem = `menuItem -label (uiRes("m_NucleusConstraintMenu.kConvertTextureMap")) -annotation (uiRes("m_NucleusConstraintMenu.kConvertTextureMapAnnot")) -subMenu true -tearOff true -allowOptionBoxes true nClothConvertTextureItem`; DynCreateNComponentPaintMenu $convertTxToVtxItem "" 2; string $convertVtxToTxItem = `menuItem -label (uiRes("m_NucleusConstraintMenu.kConvertVtxMap")) -annotation (uiRes("m_NucleusConstraintMenu.kConvertVtxMapAnnot")) -subMenu true -tearOff true -allowOptionBoxes true nClothConvertVtxItem`; DynCreateNComponentPaintMenu $convertVtxToTxItem "" 3; }