コード例 #1
0
    def export_alembic(self):
        self.saveFile()

        selectedReferences = []
        selectedItems = self.selection_list.selectedItems()
        for item in selectedItems:
            selectedReferences.append(item.text())
        print "Here are the references: ", selectedReferences

        if self.showConfirmAlembicDialog(selectedReferences) == 'Yes':
            loadPlugin("AbcExport")
            filePath = cmds.file(q=True, sceneName=True)
            fileDir = os.path.dirname(filePath)

            proj = Project()
            checkout = proj.get_checkout(fileDir)
            body = proj.get_body(checkout.get_body_name())
            dept = checkout.get_department_name()
            elem = body.get_element(dept, checkout.get_element_name())
            abcFilePath = elem.get_cache_dir()

            for ref in selectedReferences:
                refAbcFilePath = os.path.join(
                    abcFilePath, self.get_filename_for_reference(ref))
                print "abcFilePath", refAbcFilePath
                command = self.build_alembic_command(ref, refAbcFilePath)
                print "Export Alembic command: ", command
                Mel.eval(command)
                os.system('chmod 774 ' + refAbcFilePath)

        self.close_dialog()
コード例 #2
0
def getElementCacheDirectory(path):
    proj = Project()
    checkout = proj.get_checkout(path)
    body = proj.get_body(checkout.get_body_name())
    elem = body.get_element(checkout.get_department_name(),
                            checkout.get_element_name())
    return elem.get_cache_dir()
コード例 #3
0
    def export_alembic(self):
        self.saveFile()

        selectedReferences = []
        selectedItems = self.selection_list.selectedItems()
        for item in selectedItems:
            selectedReferences.append(item.text())
        print "Here are the references: ", selectedReferences

        if self.showConfirmAlembicDialog(selectedReferences) == "Yes":
            loadPlugin("AbcExport")
            filePath = cmds.file(q=True, sceneName=True)
            fileDir = os.path.dirname(filePath)

            proj = Project()
            checkout = proj.get_checkout(fileDir)
            body = proj.get_body(checkout.get_body_name())
            dept = checkout.get_department_name()
            elem = body.get_element(dept, checkout.get_element_name())
            abcFilePath = elem.get_cache_dir()

            for ref in selectedReferences:
                abcFilePath = os.path.join(abcFilePath, self.get_filename_for_reference(ref))
                print "abcFilePath", abcFilePath
                command = self.build_alembic_command(ref, abcFilePath)
                print "Export Alembic command: ", command
                Mel.eval(command)
                os.system("chmod 774 " + abcFilePath)

        self.close_dialog()
コード例 #4
0
def generateGeometry(path=''):
    '''
		Function for generating geometry for Maya files.

		Creates the following output formats:
			.obj

		@return: True if all files were created successfully
				False if some files were not created

		@post: Missing filenames are printed out to both the Maya terminal as well
				as presented in a Maya confirm dialog.
	'''

    path = os.path.dirname(mc.file(q=True, sceneName=True))
    print 'generateGeometry start'
    if not os.path.exists(os.path.join(path, 'cache')):
        os.makedirs(os.path.join(path, 'cache'))

    #OBJPATH = os.path.join(path, "cache/objFiles")
    ABCPATH = os.path.join(path, "cache/abcFiles")

    #if os.path.exists(OBJPATH):
    #	shutil.rmtree(OBJPATH)
    if os.path.exists(ABCPATH):
        shutil.rmtree(ABCPATH)

    filePath = cmds.file(q=True, sceneName=True)
    fileDir = os.path.dirname(filePath)
    proj = Project()
    checkout = proj.get_checkout(fileDir)
    body = proj.get_body(checkout.get_body_name())
    elem = body.get_element(checkout.get_department_name(),
                            checkout.get_element_name())
    abcFilePath = elem.get_cache_dir()

    selection = mc.ls(geometry=True, visible=True)
    selection_long = mc.ls(geometry=True, visible=True, long=True)

    # Temporarily disabled obj support (might not be needed)
    #objs = objExport(selection, OBJPATH)

    # Check to see if all .obj files were created
    #if not len(checkFiles(objs)) == 0:
    #	return False

    abcs = abcExport(selection_long, ABCPATH)
    if not len(checkFiles(abcs)) == 0:
        return False

    return True
コード例 #5
0
def generateGeometry(path=''):
	'''
		Function for generating geometry for Maya files.

		Creates the following output formats:
			.obj

		@return: True if all files were created successfully
				False if some files were not created

		@post: Missing filenames are printed out to both the Maya terminal as well
				as presented in a Maya confirm dialog.
	'''

	path = os.path.dirname(mc.file(q=True, sceneName=True))
	print 'generateGeometry start'
	if not os.path.exists (os.path.join(path, 'cache')):
		os.makedirs(os.path.join(path, 'cache'))

	#OBJPATH = os.path.join(path, "cache/objFiles")
	ABCPATH = os.path.join(path, "cache/abcFiles")

	#if os.path.exists(OBJPATH):
	#	shutil.rmtree(OBJPATH)
	if os.path.exists(ABCPATH):
		shutil.rmtree(ABCPATH)

	filePath = cmds.file(q=True, sceneName=True)
	fileDir = os.path.dirname(filePath)
	proj = Project()
	checkout = proj.get_checkout(fileDir)
	body = proj.get_body(checkout.get_body_name())
	elem = body.get_element(checkout.get_department_name(), checkout.get_element_name())
	abcFilePath = elem.get_cache_dir()


	selection = mc.ls(geometry=True, visible=True)
	selection_long = mc.ls(geometry=True, visible=True, long=True)

	# Temporarily disabled obj support (might not be needed)
	#objs = objExport(selection, OBJPATH)

	# Check to see if all .obj files were created
	#if not len(checkFiles(objs)) == 0:
	#	return False

	abcs = abcExport(selection_long, ABCPATH)
	if not len(checkFiles(abcs)) == 0:
		return False

	return True
コード例 #6
0
def getElementCacheDirectory(path, element=None):

    if element is None:
        proj = Project()
        checkout = proj.get_checkout(path)
        if checkout is None:
            message_gui.error(
                'There was a problem exporting the alembic to the correct location. Checkout the asset again and try one more time.'
            )
            return None
        body = proj.get_body(checkout.get_body_name())
        element = body.get_element(checkout.get_department_name(),
                                   checkout.get_element_name())

    return element.get_cache_dir()
コード例 #7
0
class ReferenceWindow(QtGui.QWidget):

    finished = QtCore.pyqtSignal()

    def __init__(self, parent, src, dept_list=Department.ALL):
        super(ReferenceWindow, self).__init__()
        self.project = Project()
        self.parent = parent
        self.src = src
        self.filePaths = []
        self.done = True
        self.reference = False
        self.initUI(dept_list)

    def initUI(self, dept_list):
        #define gui elements
        self.setGeometry(300, 300, WINDOW_WIDTH, WINDOW_HEIGHT)
        self.setWindowTitle('Taijitu Reference Manager')
        self.departmentMenu = QtGui.QComboBox()
        for i in dept_list:
            self.departmentMenu.addItem(i)
        self.departmentMenu.activated[str].connect(self.setElementType)

        self.assetList = AssetListWindow(self)
        for asset in self.project.list_assets():
            item = QtGui.QListWidgetItem(asset)
            self.assetList.addItem(item)

        self.typeFilterLabel = QtGui.QLabel("Type Filter")
        self.typeFilterLabel.setAlignment(QtCore.Qt.AlignRight
                                          | QtCore.Qt.AlignVCenter)
        self.typeFilter = QtGui.QComboBox()
        self.typeFilter.addItem("all")
        for i in AssetType.ALL:
            self.typeFilter.addItem(i)

        self.typeFilter.currentIndexChanged.connect(self.setElementType)
        self.referenceButton = QtGui.QPushButton('Reference')
        self.referenceButton.clicked.connect(self.createReference)
        self.cancelButton = QtGui.QPushButton('Cancel')
        self.cancelButton.clicked.connect(self.close)

        #set gui layout
        self.grid = QtGui.QGridLayout(self)
        self.setLayout(self.grid)
        self.grid.addWidget(self.departmentMenu, 0, 0)
        self.grid.addWidget(self.assetList, 1, 0, 1, 0)
        self.grid.addWidget(self.typeFilterLabel, 2, 0)
        self.grid.addWidget(self.typeFilter, 2, 1)
        self.grid.addWidget(self.referenceButton, 3, 0)
        self.grid.addWidget(self.cancelButton, 3, 1)

        self.show()

    def setElementType(self, idx=0):
        department = str(self.departmentMenu.currentText())
        self.refreshList(department)

    def createReference(self):
        selected = []
        del self.filePaths[:]
        for item in self.assetList.selectedItems():
            body = self.project.get_body(str(item.text()))
            element = body.get_element(str(self.departmentMenu.currentText()))
            path = element.get_app_filepath()
            self.filePaths.append(path)
            selected.append(str(item.text()))
        checkout = self.project.get_checkout(os.path.dirname(self.src))
        if checkout is not None:
            body_name = checkout.get_body_name()
            body = self.project.get_body(body_name)
            for sel in selected:
                body.add_reference(sel)
        self.done = False
        self.reference = True
        self.close()

    def refreshList(self, department):
        if department in Department.FRONTEND:
            asset_filter = None
            if (self.typeFilter.currentIndex()):
                asset_filter_str = str(self.typeFilter.currentText())
                asset_filter = (Asset.TYPE, operator.eq, asset_filter_str)
            self.elements = self.project.list_assets(asset_filter)
        else:
            self.elements = self.project.list_shots()

        self.assetList.clear()
        for e in self.elements:
            self.assetList.addItem(e)

    def closeEvent(self, event):
        self.finished.emit()
        event.accept()
コード例 #8
0
def generateGeometry(path='', element=None):
    '''

		Function for generating geometry for Maya files.

		Creates the following output formats:
			.obj

		@return: True if all files were created successfully
				False if some files were not created

		@post: Missing filenames are printed out to both the Maya terminal as well
				as presented in a Maya confirm dialog.
	'''

    path = os.path.dirname(mc.file(q=True, sceneName=True))
    print 'generateGeometry start'
    if not os.path.exists(os.path.join(path, 'cache')):
        os.makedirs(os.path.join(path, 'cache'))

    #OBJPATH = os.path.join(path, 'cache', 'objFiles')
    ABCPATH = os.path.join(path, 'cache', 'abcFiles')

    #if os.path.exists(OBJPATH):
    #	shutil.rmtree(OBJPATH)
    if os.path.exists(ABCPATH):
        shutil.rmtree(ABCPATH)

    filePath = cmds.file(q=True, sceneName=True)
    fileDir = os.path.dirname(filePath)
    print 'This is the fileDir in question: ', fileDir

    abcFilePath = getElementCacheDirectory(fileDir, element)
    if abcFilePath is None:
        return False

    selection = mc.ls(geometry=True, visible=True)
    selection_long = mc.ls(geometry=True, visible=True, long=True)

    # Temporarily disabled obj support (might not be needed)
    #objs = objExport(selection, OBJPATH)

    # Check to see if all .obj files were created
    #if not len(checkFiles(objs)) == 0:
    #	return False
    proj = Project()
    if element is None:
        checkout = proj.get_checkout(path)
        if checkout is None:
            message_gui.error(
                'There was a problem exporting the alembic to the correct location. Checkout the asset again and try one more time.'
            )
            return None
        body = proj.get_body(checkout.get_body_name())
        element = body.get_element(checkout.get_department_name(),
                                   checkout.get_element_name())
    else:
        body = proj.get_body(element.get_parent())

    # We decided to try exporting all the geo into one alembic file instead of many. This is the line that does many
    # abcs = abcExport(selection_long, ABCPATH)
    if body.is_asset():
        if body.get_type() == AssetType.SET:
            abcs = abcExportLoadedReferences(ABCPATH)
        else:
            abcs = abcExportAll(element.get_long_name(), ABCPATH)
    else:
        abcs = abcExportAll(element.get_long_name(), ABCPATH)
    print str(body.is_asset()) + ' it is an asset'
    print 'The type is ' + body.get_type()
    if not len(checkFiles(abcs)) == 0:
        return False

    return True
コード例 #9
0
class ReferenceWindow(QtGui.QWidget):
    
    finished = QtCore.pyqtSignal()
    
    def __init__(self, parent, src, dept_list=Department.ALL):
        super(ReferenceWindow, self).__init__()
        self.project = Project()
        self.parent = parent
        self.src = src
        self.filePath = None
        self.done = True
        self.reference = False
        self.initUI(dept_list)
        
    def initUI(self, dept_list):
        #define gui elements
        self.setGeometry(300,300,WINDOW_WIDTH,WINDOW_HEIGHT)
        self.setWindowTitle('Taijitu Reference Manager')
        self.departmentMenu = QtGui.QComboBox()
        for i in dept_list:
            self.departmentMenu.addItem(i)
        self.departmentMenu.activated[str].connect(self.setElementType)
        
        self.assetList = AssetListWindow(self)
        for asset in self.project.list_assets():
            item = QtGui.QListWidgetItem(asset)
            self.assetList.addItem(item)

        self.typeFilterLabel = QtGui.QLabel("Type Filter")
        self.typeFilterLabel.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
        self.typeFilter = QtGui.QComboBox()
        self.typeFilter.addItem("all")
        for i in AssetType.ALL:
            self.typeFilter.addItem(i)
            
        self.typeFilter.currentIndexChanged.connect(self.setElementType)
        self.referenceButton = QtGui.QPushButton('Reference')
        self.referenceButton.clicked.connect(self.createReference)
        self.cancelButton = QtGui.QPushButton('Cancel')
        self.cancelButton.clicked.connect(self.close)
            
        #set gui layout
        self.grid = QtGui.QGridLayout(self)
        self.setLayout(self.grid)
        self.grid.addWidget(self.departmentMenu, 0, 0)
        self.grid.addWidget(self.assetList, 1, 0, 1, 0)
        self.grid.addWidget(self.typeFilterLabel, 2, 0)
        self.grid.addWidget(self.typeFilter, 2, 1)
        self.grid.addWidget(self.referenceButton, 3, 0)
        self.grid.addWidget(self.cancelButton, 3, 1)
        
        self.show()
        
    def setElementType(self, idx=0):
        department = str(self.departmentMenu.currentText())
        self.refreshList(department)
        
    def createReference(self):
        checkout = self.project.get_checkout(os.path.dirname(self.src))
        if checkout is not None:
            body_name = checkout.get_body_name()
            body = self.project.get_body(body_name)
            body.add_reference(self.assetList.current_selection)
        self.done = False
        self.reference = True
        self.close()

    def refreshList(self, department):
        if department in Department.FRONTEND:
            asset_filter = None
            if(self.typeFilter.currentIndex()):
                asset_filter_str = str(self.typeFilter.currentText())
                asset_filter = (Asset.TYPE, operator.eq, asset_filter_str)
            self.elements = self.project.list_assets(asset_filter)
        else:
            self.elements = self.project.list_shots()
            
        self.assetList.clear()
        for e in self.elements:
            self.assetList.addItem(e)
        
    def closeEvent(self, event):
        self.finished.emit()
        event.accept()
コード例 #10
0
def getElementCacheDirectory(path):
	proj = Project()
	checkout = proj.get_checkout(path)
	body = proj.get_body(checkout.get_body_name())
	elem = body.get_element(checkout.get_department_name(), checkout.get_element_name())
	return elem.get_cache_dir()