Populate the UI with an attrNavigationControlGrp for each AOV in the network ''' for aov in aovList: if aov.name in self.networkAOVs: at = self.getAOVAttr(nodeAttr, aov.name) #at = nodeAttr[aov.index] #at.aovName.set(aov.name) ctrl = pm.cmds.attrNavigationControlGrp(at=at.aovInput.name(), label=aov.name) self._msgCtrls.append(ctrl) pm.popupMenu(parent=ctrl) pm.menuItem(subMenu=True, label="Goto Node") for node in self.aovNodes[aov.name]: pm.cmds.menuItem( label=node.name(), command=lambda arg, node=node: pm.select(node)) def buildOtherAOVs(self, nodeAttr, aovList): ''' Populate the UI with an attrNavigationControlGrp for each AOV not in the network ''' for aov in aovList: if aov.name not in self.networkAOVs: at = self.getAOVAttr(nodeAttr, aov.name) ctrl = pm.cmds.attrNavigationControlGrp(at=at.aovInput.name(), label=aov.name) self._msgCtrls.append(ctrl) templates.registerAETemplate(ShadingEngineTemplate, "shadingEngine")
''' Populate the UI with an attrNavigationControlGrp for each AOV in the network ''' for aov in aovList: if aov.name in self.networkAOVs: at = self.getAOVAttr(nodeAttr, aov.name) #at = nodeAttr[aov.index] #at.aovName.set(aov.name) ctrl = pm.cmds.attrNavigationControlGrp(at=at.aovInput.name(), label=aov.name) self._msgCtrls.append(ctrl) pm.popupMenu(parent=ctrl); pm.menuItem(subMenu=True, label="Goto Node") for node in self.aovNodes[aov.name]: pm.cmds.menuItem(label=node.name(), command=lambda arg, node=node: pm.select(node)) def buildOtherAOVs(self, nodeAttr, aovList): ''' Populate the UI with an attrNavigationControlGrp for each AOV not in the network ''' for aov in aovList: if aov.name not in self.networkAOVs: at = self.getAOVAttr(nodeAttr, aov.name) ctrl = pm.cmds.attrNavigationControlGrp(at=at.aovInput.name(), label=aov.name) self._msgCtrls.append(ctrl) templates.registerAETemplate(ShadingEngineTemplate, "shadingEngine")
except: pass try: args['usedAsColor'] = pm.attributeQuery(attrName, node=srcNode, usedAsColor=True) except: pass try: args['usedAsFilename'] = pm.attributeQuery(attrName, node=srcNode, usedAsFilename=True) except: pass args['keyable'] = pm.attributeQuery(attrName, node=srcNode, keyable=True) # connectable = pm.attributeQuery(attrName, node=srcNode, connectable=True) # print "Add %s.%s with options: %s" % (dstNode, attrName, args) pm.addAttr(dstNode, **args) for child in children: self._doAdd(srcNode, child, args['longName']) def removeAttr(self, attrs): # print "removeAttr %r" % attrs for attr in attrs: # Can only delete top parent of compound / multi attributes parent = ObjectSetTemplate.getAttrParent(attr) # print "remove %r will need to remove %r" % (attr, parent) parent.delete() templates.registerAETemplate(ObjectSetTemplate, "objectSet")
import pymel.core as pm import mtoa.aovs as aovs import mtoa.ui.ae.templates as templates import mtoa.ui.ae.shaderTemplate as shaderTemplate import mtoa.ui.aoveditor as aoveditor from collections import defaultdict class DisplacementShaderTemplate(templates.AttributeTemplate): def setup(self): self.addControl('aiDisplacementPadding', label='Bounds Padding') self.addControl('aiDisplacementZeroValue', label='Scalar Zero Value') self.addControl('aiDisplacementAutoBump', label='Auto Bump') templates.registerAETemplate(DisplacementShaderTemplate, 'displacementShader') class FileTemplate(templates.AttributeTemplate): def setup(self): self.addControl('aiFilter', label='Filter Type') self.addControl('aiMipBias', label='Mip-map Bias') self.addControl('aiUseDefaultColor', label='Use Default Color') templates.registerAETemplate(FileTemplate, 'file') class Bump2dTemplate(templates.AttributeTemplate): def setup(self): self.addControl('aiFlipR', label='Flip R Channel') self.addControl('aiFlipG', label='Flip G Channel') self.addControl('aiSwapTangents', label='Swap Tangents') self.addControl('aiUseDerivatives', label='Use Derivatives') self.addControl('aiGammaCorrect', label='Gamma Correct')
self.addControl("castsShadows") self.addSeparator() self.commonShapeAttributes() self.addSeparator() self.addControl("aiExportHairIDs", label="Export Hair IDs") self.addControl("aiExportHairUVs", label="Export Hair UVs") self.addControl("aiExportHairColors", label="Export Hair Colors") self.addControl("aiOverrideHair", label="Override Hair") self.addCustom("aiHairShader", self.shaderCreate, self.shaderUpdate) self.addSeparator() self.addCustom("aiMinPixelWidth", self.minPixelCreate, self.minPixelUpdate) self.addCustom("aiIndirectDiffuse", self.indirectDiffuseCreate, self.indirectDiffuseUpdate) self.addControl("aiMode", label="Mode", changeCommand=self.modeChanged) self.addSeparator() self.addControl("aiUserOptions", label="User Options") templates.registerAETemplate(HairSystemTemplate, "hairSystem") class FLuidShapeTemplate(templates.ShapeTranslatorTemplate): def volumeNoiseCreate(self, attrName): cmds.setUITemplate('attributeEditorPresetsTemplate', pushTemplate=True) cmds.attrNavigationControlGrp("FluidTemplateVolumeTexture", attribute=attrName, label="Texture") cmds.setUITemplate(popTemplate=True) def volumeNoiseUpdate(self, attrName): cmds.attrNavigationControlGrp("FluidTemplateVolumeTexture", edit=True, attribute=attrName) def setup(self): self.addControl("aiStepSize", label="Step Size") self.addControl("aiEnableDeformationBlur", label="Enable Deformation Blur") self.addControl("aiMotionVectorScale", label="Motion Vector Scale") self.addControl("aiFilterType", label="Filter Type")
self.addControl("lightVisible") self.addSeparator() self.addCommonParameters() self.addSeparator() self.commonLightAttributes(False) self.beginLayout('Subdivision', collapse=True) self.addControl("aiSubdivType", label="Type") self.addControl("aiSubdivIterations", label="Iterations") self.addControl("aiSubdivAdaptiveMetric", label="Adaptive Metric") self.addControl("aiSubdivPixelError", label="Pixel Error") # TODO: add dicing camera UI self.addControl("aiSubdivDicingCamera", label="Dicing Camera") self.addControl("aiSubdivUvSmoothing", label="UV Smoothing") self.addControl("aiSubdivSmoothDerivs", label="Smooth Tangents") self.endLayout() self.addControl("aiUserOptions", "User Options") templates.registerAETemplate(templates.TranslatorControl, "aiAreaLight", label="Light Shape") templates.registerTranslatorUI(QuadAreaLightTemplate, "aiAreaLight", "quad") templates.registerTranslatorUI(BaseAreaLightTemplate, "aiAreaLight", "cylinder") templates.registerTranslatorUI(BaseAreaLightTemplate, "aiAreaLight", "disk") templates.registerDefaultTranslator('aiAreaLight', "quad") templates.registerTranslatorUI(MeshLightTemplate, "mesh", "mesh_light")
self.beginLayout('Skip Options', collapse=False) self.addControl('skipJson', label='Skip JSON') self.addControl('skipShaders', label='Skip Shaders') self.addControl('skipDisplacements', label='Skip Displacements') self.addControl('skipOverrides', label='Skip Overrides') self.addControl('skipUserAttributes', label='Skip User Attributes') self.endLayout() self.addSeparator() self.beginLayout('Points', collapse=False) self.addControl('radiusPoint', label='Point Radius') self.endLayout() self.beginLayout('Curves', collapse=False) self.addControl('radiusCurve', label='Curve Radius') self.addControl('modeCurve', label='Curve Mode') self.endLayout() self.beginLayout('Advanced', collapse=False) self.addControl('makeInstance', label='Make Instance') self.addControl('flipv', label='Flip V Coord') self.addControl('invertNormals', label='Invert Normals') self.addControl('scaleVelocity', label='Scale Velocity') self.endLayout() self.addControl('aiUserOptions', label='User Options') templates.registerAETemplate(GpuCacheTemplate, 'gpuCache')
self.addControl("aiExportHairIDs", label="Export Hair IDs") self.addControl("aiExportHairUVs", label="Export Hair UVs") self.addControl("aiExportHairColors", label="Export Hair Colors") self.addControl("aiOverrideHair", label="Override Hair") self.addCustom("aiHairShader", self.shaderCreate, self.shaderUpdate) self.addSeparator() self.addCustom("aiMinPixelWidth", self.minPixelCreate, self.minPixelUpdate) self.addCustom("aiIndirectDiffuse", self.indirectDiffuseCreate, self.indirectDiffuseUpdate) self.addControl("aiMode", label="Mode", changeCommand=self.modeChanged) self.addSeparator() self.addControl("aiUserOptions", label="User Options") templates.registerAETemplate(HairSystemTemplate, "hairSystem") class FLuidShapeTemplate(templates.ShapeTranslatorTemplate): def volumeNoiseCreate(self, attrName): cmds.setUITemplate('attributeEditorPresetsTemplate', pushTemplate=True) cmds.attrNavigationControlGrp("FluidTemplateVolumeTexture", attribute=attrName, label="Texture") cmds.setUITemplate(popTemplate=True) def volumeNoiseUpdate(self, attrName): cmds.attrNavigationControlGrp("FluidTemplateVolumeTexture", edit=True, attribute=attrName)