This script will go through all your selected meshes in your scene and add or delete a subdivision tag. There is a window to set all your normal subdivision settings and check boxes. There is also a tab that will add or delete rounded edges to your selected objects and you can set the round edge radius.
To Run: Select the objects you want to add subdivision or rounded edges to then run the script.
#VRay Subdivision and Rounded Edges for Maya version 2.0.0 #Bryanna London www.bryannalondon.com #!/usr/bin/env python #UPDATED for VRay 2.4 and later #Adds Vray Subdivision tag to all selected geo. You can also #Add the vray rounded edges tag to all selected geo. import maya.cmds as cmds import maya.mel as mel #define quiered values as empty list #this will get rid of variable not defined error queriedValues=[] #delete window if a window already exisits if cmds.window('subdWindow', exists=True): cmds.deleteUI('subdWindow') #Create my GUI def createGUI(): #window layout subdWindow= cmds.window('subdWindow',title="Add SubDivisions", rtf=True) tabs = cmds.tabLayout(innerMarginWidth=8, innerMarginHeight=3) child1 = cmds.columnLayout(adjustableColumn= True, rowSpacing= 3) cmds.optionMenu('mapBorders', label='Map Borders') cmds.menuItem( label='Internal') cmds.menuItem( label='None' ) cmds.menuItem( label='All' ) cmds.checkBox('renderSubD',label= "Render as SubD", value=True) cmds.checkBox('genStaticGeo', label= "Generate Static Geo", value=False) cmds.checkBox('overrideGlobal',label= "Overide Global Settings On", value=True) cmds.checkBox('viewDepend', label = "View Dependent On", value=True) cmds.checkBox('catmull', label = "Classic Catmull Clark", value=False) cmds.intFieldGrp('edgeLength',numberOfFields=1, label="Edge Length", value1=1) cmds.intFieldGrp('maxSubD',numberOfFields=1, label='Max SubD', value1=4) cmds.rowColumnLayout(numberOfRows = 1) cmds.button( label='SUBD ON', width= 112, command=('meshSelection()')) cmds.button( label='SUBD OFF', width= 112, command=('subDOff()')) cmds.setParent('..') cmds.columnLayout() cmds.button( label='Close', width= 224, command=('cmds.deleteUI(\"' + subdWindow + '\", window=True)')) cmds.setParent('..') cmds.setParent('..') child2 = cmds.columnLayout(adjustableColumn= True, rowSpacing= 3) cmds.floatFieldGrp('roundEdgeRadius',numberOfFields=1, label="Round Edge Radius", precision= 3, value1=.02) cmds.rowColumnLayout(numberOfRows = 1) cmds.button( label='ROUND EDGES ON', width = 112, command=('addRoundedEdges()')) cmds.button( label='ROUND EDGES OFF', width = 112, command=('offRoundedEdges()')) cmds.setParent('..') cmds.columnLayout() cmds.button( label='Close', width= 224, command=('cmds.deleteUI(\"' + subdWindow + '\", window=True)')) cmds.setParent('..') cmds.setParent('..') cmds.tabLayout( tabs, edit=True, tabLabel=((child1, 'SubD'), (child2, 'Round Edges')) ) cmds.showWindow('subdWindow') #Query Values inputed in GUI for Subdivision tab def queryValues(): x= cmds.intFieldGrp('edgeLength',query=True, value=True) y= cmds.intFieldGrp('maxSubD', query=True, value=True) z= int(cmds.checkBox('renderSubD', query = True, value = True)) a= int(cmds.checkBox('genStaticGeo', query=True, value=True)) b= int(cmds.checkBox('overrideGlobal', query=True, value=True)) c= int(cmds.checkBox('viewDepend', query = True, value = True)) e= int(cmds.checkBox('catmull', query = True, value = True)) #query option menu selectedMenuItem = cmds.optionMenu('mapBorders', query = True, value = True) #print selectedMenuItem if selectedMenuItem == 'Internal': menuValue = 1 if selectedMenuItem == 'None': menuValue = 0 if selectedMenuItem == 'All': menuValue = 2 #query checkboxes queriedValuesZ, queriedValuesA, queriedValuesB, queriedValuesC, queriedValuesE = z, a, b, c, e #query intFieldGrp queriedValuesX,queriedValuesY = x, y #print and return values from GUI #print queriedValuesX + queriedValuesY, queriedValuesZ, queriedValuesA, queriedValuesB, queriedValuesC, queriedValuesE, menuValue return queriedValuesX[-1],queriedValuesY[0], queriedValuesZ, queriedValuesA, queriedValuesB, queriedValuesC, queriedValuesE, menuValue #query round edges tab def queryRoundEdge(): d= cmds.floatFieldGrp('roundEdgeRadius', query=True, value=True) queriedValuesD = d #print queriedValuesD return queriedValuesD[0] #have quiered values run the queryValues definition then print the outputed variables values #Put all selected meshes in a string #For all selected meshes turn on VRay subdivisions and SubD Quality #If there is nothing selected give a warning #this definition will run when Execute is selected def meshSelection(): queriedValuesX,queriedValuesY, queriedValuesZ, queriedValuesA, queriedValuesB, queriedValuesC, queriedValuesE, menuValue = queryValues() #print queriedValuesX #print queriedValuesY #print queriedValuesZ #print queriedValuesA #print queriedValuesB #print queriedValuesC #print queriedValuesE #print menuValue mesh = '' meshes = cmds.ls(selection = True, dag = True, lf = True, visible=True, type = 'mesh') if cmds.ls(sl=True): for mesh in meshes: mel.eval('vray addAttributesFromGroup %s vray_subdivision 1' % mesh) mel.eval('vray addAttributesFromGroup %s vray_subquality 1' % mesh) cmds.evalDeferred("cmds.setAttr('%s.vrayPreserveMapBorders', %s)" %(mesh, menuValue)) cmds.evalDeferred("cmds.setAttr('%s.vraySubdivEnable', %s)" %(mesh, queriedValuesZ)) cmds.evalDeferred("cmds.setAttr('%s.vrayStaticSubdiv', %s)" %(mesh, queriedValuesA)) cmds.evalDeferred("cmds.setAttr('%s.vrayOverrideGlobalSubQual', %s)" %(mesh, queriedValuesB)) cmds.evalDeferred("cmds.setAttr('%s.vrayViewDep', %s)"%(mesh, queriedValuesC)) cmds.evalDeferred("cmds.setAttr('%s.vrayClassicalCatmark', %s)" %(mesh, queriedValuesE)) cmds.evalDeferred("cmds.setAttr('%s.vrayEdgeLength',%s )"%(mesh, queriedValuesX)) cmds.evalDeferred("cmds.setAttr('%s.vrayMaxSubdivs',%s)"%(mesh, queriedValuesY)) else: cmds.confirmDialog(title='Confirm', message='Nothing Selected. Nothing Done.' , button =['Ok']) #Off button command to turn the Subdivision tags #For all meshes selected turn the subdivisions tags off #this will run if the Turn SubD Off button is selected def subDOff(): objects = cmds.ls(selection = True, dag = True, lf = True, visible=True, type = 'mesh') if cmds.ls(sl=True): for ob in objects: mel.eval('vray addAttributesFromGroup %s vray_subdivision 0' % ob) mel.eval('vray addAttributesFromGroup %s vray_subquality 0' % ob) else: cmds.confirmDialog(title='Confirm', message='Nothing Selected. Nothing Done.' , button =['Ok']) #Add Rounded Edges def addRoundedEdges(): queriedValuesD = queryRoundEdge() print queriedValuesD selectedObj = cmds.ls(selection = True, dag = True, lf = True, visible=True, type = 'mesh') if cmds.ls(sl=True): for sel in selectedObj: mel.eval('vray addAttributesFromGroup %s vray_roundedges 1' % sel) cmds.evalDeferred("cmds.setAttr('%s.vrayRoundEdgesRadius',%s)"%(sel, queriedValuesD)) else: cmds.confirmDialog(title='Confirm', message='Nothing Selected. Nothing Done.' , button =['Ok']) #Turn off Rounded Edges def offRoundedEdges(): offObjects = cmds.ls(selection = True, dag = True, lf = True, visible=True, type = 'mesh') if cmds.ls(sl=True): for offObj in offObjects: mel.eval('vray addAttributesFromGroup %s vray_roundedges 0' % offObj) else: cmds.confirmDialog(title='Confirm', message='Nothing Selected. Nothing Done.' , button =['Ok']) #Show the GUI createGUI()
© 2016 Bryanna London