Psst.. new poll here.
[email protected] webmail now available. Want one? Go here.
Cannot use outlook/hotmail/live here to register as they blocking our mail servers. #microsoftdeez
Obey the Epel!
Paste
Pasted as Python by yann ( 4 years ago )
import maya.OpenMaya as om
import maya.OpenMayaUI as omUI
import maya.cmds as cmds
rotation_camera = ((0, 0, 0),(0, 90, 0), (0, 180, 0), (0, 270, 0), (90, 0, 0), (-90, 0, 0))
def selectAllFaces():
sel_obj = cmds.ls(selection = True)
cmds.select(sel_obj[0] + '.f[*]')
all_face = cmds.ls(selection = True)
return all_face
def createTmpCamera():
cmds.camera(name = "tmpCameraForSelection")
def unlockAndSubdiviseRig():
for r in range(8):
cmds.setAttr("tmpVolumeRigLatticeShape.cp[" + str(r) + "].xv", lock = False)
cmds.setAttr("tmpVolumeRigLatticeShape.cp[" + str(r) + "].yv", lock = False)
cmds.setAttr("tmpVolumeRigLatticeShape.cp[" + str(r) + "].zv", lock = False)
resolution = cmds.optionMenu("menuItemResolutionField", query = True, value = True)
cmds.setAttr("tmpVolumeRigLatticeShape.sDivisions", float(resolution))
cmds.setAttr("tmpVolumeRigLatticeShape.tDivisions", float(resolution))
cmds.setAttr("tmpVolumeRigLatticeShape.uDivisions", float(resolution))
def getAllPositions():
res = int(cmds.optionMenu("menuItemResolutionField", query = True, value = True))
point_position = []
for i in range(res):
for j in range(res):
for k in range(res):
pos = [cmds.pointPosition("tmpVolumeRigLattice.pt["+str(i)+"]["+str(j)+"]["+str(k)+"]", world = True)]
point_position.extend(pos)
return point_position
def selectVisibleFaces(point_position = None):
cmds.lookThru("tmpCameraForSelection1")
sel = cmds.ls(selection = True)
cmds.select(sel)
cmds.selectMode(component = True)
cmds.selectType(facet = True)
print len(point_position)
for index, pos in enumerate(point_position):
pos_x = pos[0]
pos_y = pos[1]
pos_z = pos[2]
cmds.setAttr("tmpCameraForSelection1.translate", pos_x, pos_y, pos_z, type = "double3")
addFacesToList()
def addFacesToList(*args):
view = omUI.M3dView.active3dView()
om.MGlobal.selectFromScreen( 0, 0, view.portWidth(), view.portHeight(), om.MGlobal. kAddToList)
def createVolumeRig(*args):
createTmpCamera()
cmds.select(clear = True)
cmds.lattice(name = "tmpVolumeRig", divisions = (2, 2, 2))
for r in range(8):
cmds.setAttr("tmpVolumeRigLatticeShape.cp[" + str(r) + "].xv", lock = True)
cmds.setAttr("tmpVolumeRigLatticeShape.cp[" + str(r) + "].yv", lock = True)
cmds.setAttr("tmpVolumeRigLatticeShape.cp[" + str(r) + "].zv", lock = True)
cmds.button("buttonCreateVolume", edit = True, enable = False)
cmds.button("buttonDeleteFaces", edit = True, enable = True)
def deleteInvisibleFaces(*args):
unlockAndSubdiviseRig()
point_position = getAllPositions()
selectVisibleFaces(point_position)
def deleteInvisibleFacesWindow():
nameWindow = "Delete Invisible Faces"
if cmds.window(nameWindow, query = True, exists = True) == True:
cmds.deleteUI(nameWindow)
cmds.window(title = nameWindow, width = 252, sizeable = False, toolbox = True)
cmds.showWindow()
parent_UI = cmds.columnLayout()
cmds.frameLayout(label = "Playable Area", collapsable = True)
cmds.columnLayout(width = 250)
cmds.rowLayout(numberOfColumns = 2)
cmds.text(label = "Playable Area Size", width = 100)
cmds.rowLayout(numberOfColumns = 3)
cmds.floatField("boxX", width = 50, enable = False)
cmds.floatField("boxY", width = 50, enable = False)
cmds.floatField("boxZ", width = 50, enable = False)
cmds.setParent(parent_UI)
cmds.separator(height = 10)
cmds.frameLayout(label = "Volume Resolution", width = 250, collapsable = True)
cmds.rowLayout(numberOfColumns = 2)
cmds.text(label = "Resolution", width = 100)
cmds.optionMenu("menuItemResolutionField", width = 150)
cmds.menuItem(label = "2")
cmds.menuItem(label = "4")
cmds.menuItem(label = "8")
cmds.menuItem(label = "16")
cmds.menuItem(label = "32")
cmds.setParent(parent_UI)
cmds.separator(height = 10)
cmds.columnLayout()
cmds.button("buttonCreateVolume", label = "1. Create Playable Volume", enable = True, width = 250, command = createVolumeRig)
cmds.separator(height = 2)
cmds.button("buttonDeleteFaces", label = "2. Delete Invisible Face", enable = False, width = 250, command = deleteInvisibleFaces)
cmds.separator(height = 2)
cmds.button(label = "Manually add faces", width = 250, command = addFacesToList)
Revise this Paste