Welcome, guest! Login / Register - Why register?
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

Your Name: Code Language: