def os_fileCompare(file1, file2, openDiff=False): ''' Pass in 2 files for diffComparision. If files are identical, ie there are no differences then the code returns 0 :param file1: first file to compare with second file :param file2: second file to compare against the first :param openDiff: if a difference was found then boot Diffmerge UI, highlighting the diff .. note:: This is a stub function that requires Diffmerge.exe, you can download from https://sourcegear.com/diffmerge/. Once downloaded drop it here Red9/pakcages/diffMerge.exe ''' outputDir = tempfile.gettempdir() diffmerge = os.path.join(r9Setup.red9ModulePath(), 'packages', 'diffMerge.exe') if not os.path.exists(diffmerge): diffmerge = os.path.join(r9Setup.red9ModulePath(), 'packages', 'DiffMerge', 'sgdm.exe') if os.path.exists(diffmerge): process = subprocess.Popen([ diffmerge, '-d', os.path.join(outputDir, 'diffmergeOutput.diff'), file1, file2 ], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True) # output = process.communicate() process.wait() retcode = process.poll() if not retcode: log.info('Files are Identical') return retcode elif retcode == 1: log.info( 'Files are not Identical - use the openDiff flag to open up the differences in the editor' ) if openDiff: process = subprocess.Popen([diffmerge, file1, file2], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True) return retcode elif retcode == 2: raise IOError( 'Files failed to compare - issues prevented the compare processing both files' ) return retcode else: log.warning('Diffmerge commandline was not found, compare aborted')
def batchPatchPoses(posedir, config, poseroot, load=True, save=True, patchfunc=None,\ relativePose=False, relativeRots=False, relativeTrans=False): ''' whats this?? a fast method to run through all the poses in a given dictionary and update or patch them. If patchfunc isn't given it'll just run through and resave the pose - updating the systems if needed. If it is then it gets run between the load and save calls. :param posedir: directory of poses to process :param config: hierarchy settings cfg to use to ID the nodes (hierarchy tab preset = filterSettings object) :param poseroot: root node to the filters - poseTab rootNode/MetaRig root :param patchfunc: optional function to run between the load and save call in processing, great for fixing issues on mass with poses. Note we now pass pose file back into this func as an arg :param load: should the batch load the pose :param save: should the batch resave the pose ''' filterObj=r9Core.FilterNode_Settings() filterObj.read(os.path.join(r9Setup.red9ModulePath(), 'presets', config)) # 'Crytek_New_Meta.cfg')) mPose=PoseData(filterObj) files=os.listdir(posedir) files.sort() for f in files: if f.lower().endswith('.pose'): if load: mPose.poseLoad(poseroot, os.path.join(posedir,f), useFilter=True, relativePose=relativePose, relativeRots=relativeRots, relativeTrans=relativeTrans) if patchfunc: patchfunc(f) if save: mPose.poseSave(poseroot, os.path.join(posedir,f), useFilter=True, storeThumbnail=False) log.info('Processed Pose File : %s' % f)
def setup(self): cmds.file(os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'MetaRig_anim_jump.mb'), open=True, f=True) self.mRig = r9Meta.getMetaNodes(mTypes=r9Meta.MetaRig)[0] self.poseFolder = getPoseFolder()
def setup(self): cmds.file(os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'FilterNode_baseTests.ma'), open=True, f=True) self.filterNode = r9Core.FilterNode(['World_Root']) assert self.filterNode.rootNodes == ['World_Root']
def setup(self): cmds.file(os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','MetaRig_anim_jump.mb'),open=True,f=True) self.mRig = r9Meta.getMetaNodes(mTypes=r9Meta.MetaRig)[0] self.poseFolder = getPoseFolder() #make our PoseData object with the unitTest config loaded filterNode=r9Core.FilterNode_Settings() filterNode.read(red9MetaRigConfig) self.poseData=r9Pose.PoseData(filterNode)
def setup(self): cmds.file(os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'MetaRig_anim_jump.mb'), open=True, f=True) self.mRig = r9Meta.getMetaNodes(mTypes=r9Meta.MetaRig)[0] self.poseFolder = getPoseFolder() # make our PoseData object with the unitTest config loaded filterNode = r9Core.FilterNode_Settings() filterNode.read(red9MetaRigConfig) self.poseData = r9Pose.PoseData(filterNode)
def test_longJsonDumps(self): ''' Test the handling of LONG serialized Json data - testing the 16bit string attrTemplate handling NOTE: if you set a string to over 32,767 chars and don't lock the attr once made, selecting the textField in the AttributeEditor will truncate the data, hence this test! ''' data= "x" * 40000 self.MClass.addAttr('json_test', data) assert len(self.MClass.json_test)==40000 #save the file and reload to ensure the attr is consistent cmds.file(rename=os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','deleteMe.ma')) cmds.file(save=True,type='mayaAscii') cmds.file(new=True,f=True) cmds.file(os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','deleteMe.ma'),open=True,f=True) mClass=r9Meta.getMetaNodes()[0] assert len(mClass.json_test)
def setup(self): cmds.file(os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','MetaRig_anim_jump.mb'),open=True,f=True) self.rootNode='|World_Ctrl' self.poseFolder = getPoseFolder() #make our PoseData object with the unitTest config loaded filterNode=r9Core.FilterNode_Settings() filterNode.nodeTypes='nurbsCurve' filterNode.incRoots=False filterNode.filterPriority = ['COG__Ctrl','Hips_Ctrl','Chest_Ctrl','R_Wrist_Ctrl','L_Wrist_Ctrl','L_Foot_Ctrl','R_Foot_Ctrl','L_Knee_Ctrl','R_Knee_Ctrl'] self.poseData=r9Pose.PoseData(filterNode)
def __ffprobeGet(): ''' I don not ship ffprobe as it's lgpl license and fairly large, however if you download it for use with the getMediaFileInfo then this is where it goes Red9/packages/ffprobe.exe ''' expectedPath=os.path.join(r9Setup.red9ModulePath(),'packages','ffprobe.exe') if os.path.exists(expectedPath): return expectedPath else: log.warning('ffprobe.exe not currently installed, aborting')
def setup(self): cmds.file(os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'MetaRig_anim_jump.mb'), open=True, f=True) self.rootNode = '|World_Ctrl' self.poseFolder = getPoseFolder() # make our PoseData object with the unitTest config loaded filterNode = r9Core.FilterNode_Settings() filterNode.nodeTypes = 'nurbsCurve' filterNode.incRoots = False filterNode.filterPriority = ['COG__Ctrl', 'Hips_Ctrl', 'Chest_Ctrl', 'R_Wrist_Ctrl', 'L_Wrist_Ctrl', 'L_Foot_Ctrl', 'R_Foot_Ctrl', 'L_Knee_Ctrl', 'R_Knee_Ctrl'] self.poseData = r9Pose.PoseData(filterNode)
def os_fileCompare(file1, file2, openDiff=False): ''' Pass in 2 files for diffComparision. If files are identical, ie there are no differences then the code returns 0 :param file1: first file to compare with second file :param file2: second file to compare against the first :param openDiff: if a difference was found then boot Diffmerge UI, highlighting the diff .. note:: This is a stub function that requires Diffmerge.exe, you can download from https://sourcegear.com/diffmerge/. Once downloaded drop it here Red9/pakcages/diffMerge.exe ''' outputDir=tempfile.gettempdir() diffmerge=os.path.join(r9Setup.red9ModulePath(),'packages','diffMerge.exe') if not os.path.exists(diffmerge): diffmerge=os.path.join(r9Setup.red9ModulePath(),'packages','DiffMerge','sgdm.exe') if os.path.exists(diffmerge): process=subprocess.Popen([diffmerge, '-d', os.path.join(outputDir, 'diffmergeOutput.diff'), file1, file2], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True) #output = process.communicate() process.wait() retcode = process.poll() if not retcode: log.info('Files are Identical') return retcode elif retcode==1: log.info('Files are not Identical - use the openDiff flag to open up the differences in the editor') if openDiff: process=subprocess.Popen([diffmerge, file1, file2], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True) return retcode elif retcode==2: raise IOError('Files failed to compare - issues prevented the compare processing both files') return retcode else: log.warning('Diffmerge commandline was not found, compare aborted')
def setup(self): self.leftWrist='leftWrist' self.leftFoot = 'leftFoot' self.rightWrist = 'rightWrist' self.rightFoot = 'rightFoot' self.root = 'root' cmds.polyCube(n=self.leftWrist)[0] cmds.polyCube(n=self.leftFoot)[0] cmds.polyCube(n=self.rightWrist)[0] cmds.polyCube(n=self.rightFoot)[0] cmds.polyCube(n=self.root)[0] self.rig=cmds.group([self.leftWrist,self.leftFoot,self.rightWrist,self.rightFoot,self.root],name='rigRoot') self.MirrorClass=r9Anim.MirrorHierarchy(self.rig) self.MirrorClass.settings.hierarchy=True self.filePath=os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','mirrorData.mirrorMap')
def setup(self): self.leftWrist = 'leftWrist' self.leftFoot = 'leftFoot' self.rightWrist = 'rightWrist' self.rightFoot = 'rightFoot' self.root = 'root' cmds.polyCube(n=self.leftWrist)[0] cmds.polyCube(n=self.leftFoot)[0] cmds.polyCube(n=self.rightWrist)[0] cmds.polyCube(n=self.rightFoot)[0] cmds.polyCube(n=self.root)[0] self.rig = cmds.group([self.leftWrist, self.leftFoot, self.rightWrist, self.rightFoot, self.root], name='rigRoot') self.MirrorClass = r9Anim.MirrorHierarchy(self.rig) self.MirrorClass.settings.hierarchy = True self.filePath = os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'mirrorData.mirrorMap')
def batchPatchPoses(posedir, config, poseroot, load=True, save=True, patchfunc=None,\ relativePose=False, relativeRots=False, relativeTrans=False): ''' whats this?? a fast method to run through all the poses in a given dictionary and update or patch them. If patchfunc isn't given it'll just run through and resave the pose - updating the systems if needed. If it is then it gets run between the load and save calls. :param posedir: directory of poses to process :param config: hierarchy settings cfg to use to ID the nodes (hierarchy tab preset = filterSettings object) :param poseroot: root node to the filters - poseTab rootNode/MetaRig root :param patchfunc: optional function to run between the load and save call in processing, great for fixing issues on mass with poses. Note we now pass pose file back into this func as an arg :param load: should the batch load the pose :param save: should the batch resave the pose ''' filterObj = r9Core.FilterNode_Settings() filterObj.read(os.path.join(r9Setup.red9ModulePath(), 'presets', config)) # 'Crytek_New_Meta.cfg')) mPose = PoseData(filterObj) files = os.listdir(posedir) files.sort() for f in files: if f.lower().endswith('.pose'): if load: mPose.poseLoad(poseroot, os.path.join(posedir, f), useFilter=True, relativePose=relativePose, relativeRots=relativeRots, relativeTrans=relativeTrans) if patchfunc: patchfunc(f) if save: mPose.poseSave(poseroot, os.path.join(posedir, f), useFilter=True, storeThumbnail=False) log.info('Processed Pose File : %s' % f)
def setup(self): cmds.file(os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','MetaRig_baseTests_MetaWired.ma'),open=True,f=True) self.mRig=self.addMetaRig()
def setup(self): cmds.file(os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','Meta_Network_WalkTest.ma'),open=True,f=True) self.mRig=r9Meta.getMetaNodes(mTypes='MetaRig')[0]
def setup(self): cmds.file(new=True, f=True) self.bwavpath = os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'bwav_test.wav') self.audioNode = r9Audio.AudioNode(filepath=self.bwavpath) self.audioNode.importAndActivate()
def setup(self): cmds.file(os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','MetaRig_anim_jump.mb'),open=True,f=True) self.mRig = r9Meta.getMetaNodes(mTypes=r9Meta.MetaRig)[0] self.poseFolder = getPoseFolder()
def setup(self): cmds.file(new=True, f=True) self.path = r9General.formatPath(os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'bwav_test.wav'))
def setup(self): self.bwavpath=os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','bwav_test.wav') self.audioNode = r9Audio.AudioNode.importAndActivate(self.bwavpath)
def setup(self): cmds.file(new=True, f=True) self.path = r9General.formatPath( os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'bwav_test.wav'))
def getPoseFolder(): return os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','MetaRig_Poses')
def getPoseFolder(): return os.path.join(r9Setup.red9ModulePath(), 'tests', 'testFiles', 'MetaRig_Poses')
def setup(self): cmds.file(os.path.join(r9Setup.red9ModulePath(),'tests','testFiles','FilterNode_baseTests.ma'),open=True,f=True) self.filterNode=r9Core.FilterNode(['World_Root']) assert self.filterNode.rootNodes==['World_Root']