Exemplo n.º 1
0
 def doIt(self, args = OpenMaya.MArgList() ):
     """
     Class entry point.
     1. Detect if Girl_settings exists
     2. Detect if exporting an animation
     3. Determine start and end frame to export, and pass control to startBatch()
     """
     
     if not cmds.objExists('Girl_settings'):
         OpenMaya.MGlobal.displayWarning('No Girl settings found for this scene, opening GUI...')
         from Girl_gui import Girl_gui
         lg = Girl_gui()
         lg.doIt(OpenMaya.MArgList())
         return
     
     # here we go
     doAnimation  = cmds.getAttr( 'Girl_settings.render_animation' )
     doInSequence = cmds.getAttr( 'Girl_settings.render_animation_sequence' )
     
     self.startFrame = round( cmds.currentTime( query = True ) )
     
     if doAnimation:
         self.startFrame  = round( cmds.getAttr( 'defaultRenderGlobals.startFrame'  ) ) 
         self.endFrame    = round( cmds.getAttr( 'defaultRenderGlobals.endFrame'    ) )
         self.stepFrame   = round( cmds.getAttr( 'defaultRenderGlobals.byFrameStep' ) )
     else:
         self.endFrame = self.startFrame
     
     self.initProgressWindow()
     
     if doInSequence:
         self.startSequence()
     else:
         self.startBatch()
Exemplo n.º 2
0
 def doItFilmExport(self, args = OpenMaya.MArgList() ):
     
     if not cmds.objExists('Girl_settings'):
         OpenMaya.MGlobal.displayWarning('No Girl settings found for this scene, opening GUI...')
         from Girl_gui import Girl_gui
         lg = Girl_gui()
         lg.doIt(OpenMaya.MArgList())
         return
     
     # here we go
     doAnimation  = cmds.getAttr( 'Girl_settings.render_animation' )
     doInSequence = cmds.getAttr( 'Girl_settings.render_animation_sequence' )
     
     self.startFrame = round( cmds.currentTime( query = True ) )
     
     if doAnimation:
         self.startFrame  = round( cmds.getAttr( 'defaultRenderGlobals.startFrame'  ) ) 
         self.endFrame    = round( cmds.getAttr( 'defaultRenderGlobals.endFrame'    ) )
         self.stepFrame   = round( cmds.getAttr( 'defaultRenderGlobals.byFrameStep' ) )
     else:
         self.endFrame = self.startFrame
     
     self.initProgressWindow()
     
     self.startBatchFilmExport()
Exemplo n.º 3
0
    def finalize(self):
        """

		Command is finished, construct a string for the command

		for journalling.

		"""

        command = OpenMaya.MArgList()

        command.addArg(self.commandString())

        command.addArg(self.__delta.x)

        command.addArg(self.__delta.y)

        command.addArg(self.__delta.z)

        # This call adds the command to the undo queue and sets

        # the journal string for the command.

        #

        try:

            OpenMayaMPx.MPxToolCommand._doFinalize(self, command)

        except:

            pass
Exemplo n.º 4
0
    def exportFilmFile(self, frameNumber = 1, tempExportPath = False):
		saveFolderorg = cmds.getAttr( 'Girl_settings.scene_path' )
                saveFolderorg = saveFolderorg + os.altsep

                saveFolder = saveFolderorg.replace('\\', '/')
                saveFolder = saveFolder.replace('//', '/')

		if not os.path.exists(saveFolder):
			os.mkdir( saveFolder )
            
		sceneFileBaseName = cmds.getAttr( 'Girl_settings.scene_filename' ) + ('.%06i' % frameNumber)

                renderFolder = saveFolder + "renders" + os.altsep
		if not os.path.exists(renderFolder):
			os.mkdir(renderFolder)

                imageSaveName = renderFolder + sceneFileBaseName

		if tempExportPath:
			saveFolder += ('tmp') + os.altsep
			if not os.path.exists(saveFolder):
				os.mkdir( saveFolder )
			else:
				for file in os.listdir(saveFolder):
					os.remove(saveFolder+file)
				os.rmdir( saveFolder )
				os.mkdir( saveFolder )
		else:
			saveFolder += ('%06i' % frameNumber) + os.altsep
			if not os.path.exists(saveFolder):
				os.mkdir( saveFolder )
				
		sceneFileName = saveFolder + sceneFileBaseName + '.girls'

		renderWidth = cmds.getAttr( 'defaultResolution.width' )
		renderHeight = cmds.getAttr( 'defaultResolution.height' )

		# launch export proc here !
		le = Girl_export()
		leArgs = OpenMaya.MArgList()
		leArgs.addArg( sceneFileName )
		leArgs.addArg( imageSaveName )
		leArgs.addArg( renderWidth )
		leArgs.addArg( renderHeight )

		try:
			le.doItFilmExport( leArgs )
		except:
			self.mProgress.endProgress()
			raise

		return sceneFileName
Exemplo n.º 5
0
    def getFlagList(self, wedgeflag, flagtype="double"):
        num = self.argData.numberOfFlagUses(wedgeflag)
        flag_arglist = []
        if num > self.num_attrs:
            num = self.num_attrs
        flag_args = OpenMaya.MArgList()
        for i in range(num):
            status = self.argData.getFlagArgumentList(wedgeflag, i, flag_args)
            if flagtype == "double":
                flag_arglist.append(flag_args.asDouble(i))
            else:
                flag_arglist.append(flag_args.asInt(i))

        print "getFlagList: wedgeflag", wedgeflag, "flag_arglist", flag_arglist
        return flag_arglist
Exemplo n.º 6
0
    def finalize(self):
        """ Command is finished, construct a string
        for the command for journalling. """

        command = om.MArgList()
        command.addArg(self.commandString())

        if self.brush_state.settings['mode'] == 'place': #'place':
            command.addArg('place')
            for i in xrange(self.position.length()):
                command.addArg(self.position[i])

        if self.brush_state.settings['mode'] == 'spray': #'place':
            command.addArg('spray')
            command.addArg(self.position.length())

        # This call adds the command to the undo queue and sets
        # the journal string for the command.
        ompx.MPxToolCommand._doFinalize(self, command)

        for i in xrange(command.length()):
            self.last_undo_journal += ' {}'.format(command.asString(i))

        # reset command variables
        self.position = om.MVectorArray()
        self.scale = om.MVectorArray()
        self.rotation = om.MVectorArray()
        self.instance_id = om.MIntArray()
        self.visibility = om.MIntArray()
        self.normal = om.MVectorArray()
        self.tangent = om.MVectorArray()
        self.u_coord = om.MDoubleArray()
        self.v_coord = om.MDoubleArray()
        self.poly_id = om.MIntArray()
        self.color = om.MVectorArray()
        self.point_id = om.MIntArray()

        self.initial_rotation = om.MVectorArray()
        self.initial_scale = om.MVectorArray()
        self.initial_offset = om.MDoubleArray()
        self.initial_id = om.MIntArray()
        self.spray_coords = []
Exemplo n.º 7
0
    def doIt(self, args=OpenMaya.MArgList()):
        """
        Class entry point.
        1. Detect if pbrt_settings exists
        2. Detect if exporting an animation
        3. Determine start and end frame to export, and pass control to startBatch()
        """

        OpenMaya.MGlobal.displayInfo('PBRT Batch Export start 2')

        if not cmds.objExists('pbrt_settings'):
            OpenMaya.MGlobal.displayWarning(
                'No PBRT settings found for this scene, creating a new settings node first'
            )

        render_settings = pbrt_settings.pbrt_settings()
        render_settings.checkAndAddAttributes()

        # here we go
        doAnimation = cmds.getAttr('pbrt_settings.render_animation')

        self.startFrame = round(cmds.currentTime(query=True))
        self.unix = (os.name != 'nt')

        if doAnimation:
            self.startFrame = round(
                cmds.getAttr('defaultRenderGlobals.startFrame'))
            self.endFrame = round(
                cmds.getAttr('defaultRenderGlobals.endFrame'))
            self.stepFrame = round(
                cmds.getAttr('defaultRenderGlobals.byFrameStep'))
        else:
            self.endFrame = self.startFrame

        self.initProgressWindow()

        self.startBatch()
Exemplo n.º 8
0
    def parseArguments(self, args):
        ''' 
        The presence of this function is not enforced,
        but helps separate argument parsing code from other
        command code.
        '''
        # Getting the argData from MArgParser
        argData = OpenMaya.MArgDatabase(self.syntax(), args)
        try:
            self.__mesh = argData.commandArgumentString(0)
        except:
            self.displayError('Must pass in Mesh as first Argument')
        if argData.isQuery() and argData.isFlagSet(
                SkinDataCmd.kWeightsFlag) and argData.isFlagSet(
                    SkinDataCmd.kInfluenceFlag):
            try:
                self._influnceNode = argData.commandArgumentString(1)
            except:
                pass
            self.__returnWeights = True
            self.__returnInfluenceWeights = True
            self.__undoable = False
        elif argData.isQuery() and argData.isFlagSet(
                SkinDataCmd.kInfluenceFlag):
            self.__returnInfluence = True
            self.__undoable = False
        elif argData.isQuery() and argData.isFlagSet(SkinDataCmd.kWeightsFlag):
            self.__returnWeights = True
            self.__undoable = False
        elif argData.isQuery() and argData.isFlagSet(
                SkinDataCmd.kBlendWeightsFlag):
            self.__returnBlendWeights = True
            self.__undoable = False
        elif argData.isFlagSet(SkinDataCmd.kWeightsFlag) and argData.isFlagSet(
                SkinDataCmd.kInfluenceFlag):
            #add to doubleArray for weights
            self.__weights.setLength(
                argData.numberOfFlagUses(SkinDataCmd.kWeightsFlag))
            for i in range(self.__weights.length()):
                argList = OpenMaya.MArgList()
                argData.getFlagArgumentList(SkinDataCmd.kWeightsFlag, i,
                                            argList)
                self.__weights.set(argList.asDouble(0), i)
            #add to selectionList for verts
            if argData.isFlagSet(SkinDataCmd.kVertIdFlag):
                for i in range(
                        argData.numberOfFlagUses(SkinDataCmd.kVertIdFlag)):
                    argList = OpenMaya.MArgList()
                    argData.getFlagArgumentList(SkinDataCmd.kVertIdFlag, i,
                                                argList)
                    self.__mVertSelList.add(argList.asString(0), i)
            #append to list of influence names
            for i in range(argData.numberOfFlagUses(
                    SkinDataCmd.kInfluenceFlag)):
                argList = OpenMaya.MArgList()
                argData.getFlagArgumentList(SkinDataCmd.kInfluenceFlag, i,
                                            argList)
                self.__influenceNames.append(argList.asString(0))
            self.__setVertWeights = True
            self.__undoable = True
        elif argData.isFlagSet(SkinDataCmd.kBlendWeightsFlag):
            #add to doubleArray for weights
            self.__blendWeights.setLength(
                argData.numberOfFlagUses(SkinDataCmd.kBlendWeightsFlag))
            for i in range(self.__blendWeights.length()):
                argList = OpenMaya.MArgList()
                argData.getFlagArgumentList(SkinDataCmd.kBlendWeightsFlag, i,
                                            argList)
                self.__blendWeights.set(argList.asDouble(0), i)

            self.__setVertBlendWeights = True
            self.__undoable = True
        else:
            self.displayError('No arguments passed')
Exemplo n.º 9
0
    def doIt(self, args):
        '''Creates the node and connects everything based on the parameters given'''
        # get the arguments passed in
        argData = OpenMaya.MArgParser(self.syntax(), args)

        # get objects to use in the constraint and make sure there is only two
        objects = []
        argData.getObjects(objects)
        if not objects:
            # use the selection
            objects = cmds.ls(sl=True)

        for obj in objects:
            self.sList.add(obj)

        # if there is less than two objects given, return an error
        if self.sList.length() < 2:
            raise RuntimeError(
                'Two transforms are required to create constraint.')

        # get the target object path and make sure it's a transform type
        targetDAG = OpenMaya.MDagPath()
        try:
            self.sList.getDagPath(0, targetDAG)
        except RuntimeError:
            raise RuntimeError(
                'Target object must be a DAG object type. Unable to get path to object.'
            )

        targetTransFn = OpenMaya.MFnTransform()
        try:
            targetTransFn.setObject(targetDAG)
        except RuntimeError:
            raise RuntimeError(
                'Target object type invalid. You must choose a transform.')

        # get the constraint object path and make sure it's a transform type
        constraintDAG = OpenMaya.MDagPath()
        try:
            self.sList.getDagPath(1, constraintDAG)
        except RuntimeError:
            raise RuntimeError(
                'Constraint object must be a DAG object type. Unable to get path to object.'
            )

        constrainedTransFn = OpenMaya.MFnTransform()
        try:
            constrainedTransFn.setObject(constraintDAG)
        except RuntimeError:
            raise RuntimeError(
                'Constraint object type invalid. You must choose a transform.')

        numSkips = argData.numberOfFlagUses('-sk')
        if numSkips > 3:
            raise RuntimeError('You can not have more than 3 skip flags.')

        if argData.isFlagSet('-n'):
            self.nodeName = argData.flagArgumentString('-n', 0)

        for i in range(numSkips):
            argList = OpenMaya.MArgList()
            argData.getFlagArgumentList('-sk', i, argList)

            axis = argList.asString(0)

            if axis == 'x':
                self.skipX = True
            elif axis == 'y':
                self.skipY = True
            elif axis == 'z':
                self.skipZ = True

        # distance flag
        if argData.isFlagSet('-d'):
            self.distanceValue = argData.flagArgumentDouble('-d', 0)
        else:
            # calculate the distance
            targetPos = targetTransFn.getTranslation(OpenMaya.MSpace.kWorld)
            constrainedPos = constrainedTransFn.getTranslation(
                OpenMaya.MSpace.kWorld)
            localPos = targetPos - constrainedPos
            self.distanceValue = localPos.length()

        # start frame flag
        if argData.isFlagSet('-sf'):
            self.startFrame = argData.flagArgumentDouble('-sf', 0)
        else:
            self.startFrame = cmds.currentTime(q=True)

        # start position
        if argData.isFlagSet('-sp'):
            spX = argData.flagArgumentDouble('-sp', 0)
            spY = argData.flagArgumentDouble('-sp', 1)
            spZ = argData.flagArgumentDouble('-sp', 2)

            self.startVector = OpenMaya.MVector(spX, spY, spZ)
        else:
            self.startVector = constrainedTransFn.getTranslation(
                OpenMaya.MSpace.kTransform)

        self.redoIt()
Exemplo n.º 10
0
    def exportFile(self, frameNumber = 1, tempExportPath = False):
		"""
		Export a single frame, and return the name of the created scene file
		"""

		render_cam = ''
		cam_idx = cmds.getAttr( 'Girl_settings.camera_name' )
		seekidx = 1

		if cam_idx == 0:
			for cam in cmds.listCameras():
				renderable = cmds.getAttr( '%s.renderable' % cam )
				if renderable == 1:
					render_cam = cam
					break
		else:
			for cam in cmds.listCameras():
				if ( cam != 'front' and cam != 'persp' and cam != 'side' and cam != 'top' ):
					if cam_idx == seekidx:
						render_cam = cam
						break
					seekidx = seekidx + 1
		#OpenMaya.MGlobal.displayInfo(cam)

		if render_cam == '':
			OpenMaya.MGlobal.displayError('No renderable camera in scene')

		saveFolderorg = cmds.getAttr( 'Girl_settings.scene_path' )
                saveFolderorg = saveFolderorg + os.altsep

                saveFolder = saveFolderorg.replace('\\', '/')
                basesavefolder = saveFolder = saveFolder.replace('//', '/')

		if not os.path.exists(saveFolder):
			os.mkdir( saveFolder )
            
		sceneFileBaseName = cmds.getAttr( 'Girl_settings.scene_filename' ) + ('.%06i' % frameNumber)
			
		#renderFolder = saveFolder + os.altsep + "renders" + os.altsep
                renderFolder = saveFolder + "renders" + os.altsep
		if not os.path.exists(renderFolder):
			os.mkdir(renderFolder)
			
		imageSaveName = renderFolder + sceneFileBaseName

		if tempExportPath:
			saveFolder += ('tmp') + os.altsep
			if not os.path.exists(saveFolder):
				os.mkdir( saveFolder )
			else:
				for file in os.listdir(saveFolder):
					os.remove(saveFolder+file)
				os.rmdir( saveFolder )
				os.mkdir( saveFolder )
		else:
			saveFolder += ('%06i' % frameNumber) + os.altsep
			if not os.path.exists(saveFolder):
				os.mkdir( saveFolder )
				
		sceneFileName = saveFolder + sceneFileBaseName + '.girls'

		renderWidth = cmds.getAttr( 'defaultResolution.width' )
		renderHeight = cmds.getAttr( 'defaultResolution.height' )

		# launch export proc here !
		le = Girl_export()
		leArgs = OpenMaya.MArgList()
		leArgs.addArg( sceneFileName )
		leArgs.addArg( imageSaveName )
		leArgs.addArg( renderWidth )
		leArgs.addArg( renderHeight )
		leArgs.addArg( render_cam )

		try:
			le.doIt( leArgs )
		except:
			self.mProgress.endProgress()
			raise

                #returnFilename = sceneFileName.replace(basesavefolder, './')

		return sceneFileName
Exemplo n.º 11
0
    def exportFile(self, frameNumber=1, tempExportPath=False):
        """
        Export a single frame, and return the name of the created scene file
        """

        render_cam = ''

        for cam in cmds.listCameras():
            renderable = cmds.getAttr('%s.renderable' % cam)
            if renderable == 1:
                render_cam = cam
                break

        if render_cam == '':
            OpenMaya.MGlobal.displayError('No renderable camera in scene')

        saveFolder = cmds.getAttr('lux_settings.scene_path')
        if not os.path.exists(saveFolder):
            os.mkdir(saveFolder)

        sceneFileBaseName = cmds.getAttr('lux_settings.scene_filename') + (
            '.%06i' % frameNumber)

        renderFolder = saveFolder + os.altsep + "renders" + os.altsep
        if not os.path.exists(renderFolder):
            os.mkdir(renderFolder)

        imageSaveName = renderFolder + sceneFileBaseName

        if tempExportPath:
            saveFolder += ('tmp') + os.altsep
            if not os.path.exists(saveFolder):
                os.mkdir(saveFolder)
            else:
                for file in os.listdir(saveFolder):
                    os.remove(saveFolder + file)
                os.rmdir(saveFolder)
                os.mkdir(saveFolder)
        else:
            saveFolder += ('%06i' % frameNumber) + os.altsep
            if not os.path.exists(saveFolder):
                os.mkdir(saveFolder)

        sceneFileName = saveFolder + sceneFileBaseName + '.lxs'

        renderWidth = cmds.getAttr('defaultResolution.width')
        renderHeight = cmds.getAttr('defaultResolution.height')

        # launch export proc here !
        le = luxexport()
        leArgs = OpenMaya.MArgList()
        leArgs.addArg(sceneFileName)
        leArgs.addArg(imageSaveName)
        leArgs.addArg(renderWidth)
        leArgs.addArg(renderHeight)
        leArgs.addArg(render_cam)

        try:
            le.doIt(leArgs)
        except:
            self.mProgress.endProgress()
            raise

        return sceneFileName
Exemplo n.º 12
0
 def doIt(self, args=OpenMaya.MArgList()):
     self.camera = self.findCameraInSelection()
     self.cameraFrustumNodeName = self.camera[0].name() + "frustum"
     self.redoIt()