资产库MEL API: MG-资产库提供的Mel的应用程序接口。你可以用这些mel全局函数,通过自己编写脚本来新建,管理及使用资产库。 一个比较大的用途是用它来批量加入资产项,及自动生成ma档等。 前提条件: 当前运行的Maya有安装MGTools Pro3或以上版本。 global proc int MGAssetLib_initAPI ( ); 描述:初始化资产库MEL API. 这是为了确保下面这些全局MEL函数有被source,这样才可用。 返回值:如果初始化过程出错,则返回0,否则返回1。
global proc int MGAssetLib_doesProjectExist ( string $projectName ); 描述:在本地端的资产库里查找这个工程。即是在我的文档/Maya/MGTools_GlobalData/MG_AssetLib这个目录下,查找是否有名字为$projectName的库工程。 注意:如果$projectName参数含有英文字母,数字,下划线之外的字符,这些字符将自动转换成下划线。 返回值:如果找到则返回1,没有找到则返回0。
global proc string MGAssetLib_getLocalProjectFile ( string $projectName ); 注意:如果$projectName参数含有英文字母,数字,下划线之外的字符,这些字符将自动转换成下划线。 返回值:返回$projectName所对应的本地库的整个路径,即我的文档/Maya/MGTools_GlobalData/MG_AssetLib/$projectName/$projectName.assetproj。 即使工程实际上不存在,也返回一样的结果。
global proc string MGAssetLib_createProject ( string $projectName, string $ProjectAnnoatation, string $globalPath, string $statePresets [] ); 描述:创建一个本地资产库工程。 参数:$projectName为名称,$ProjectAnnoatation为库工程的描述文字, $globalPath为全局资产库指向的路径。 $statePresets是库工程的状态预置,它是一个数组,这个数组的每个元素由下面格式的字符组成( 用空格分开 ):状态名称 状态颜色R 状态颜色G 状态颜色B 状态颜色的RGB数值是在0-1范围内的小数。比如: Approved 0.2 0.6 0.2 注意:如果$projectName参数含有英文字母,数字,下划线之外的字符,这些字符将自动转换成下划线。 如果当前有打开资产库工具,则会自动在工具里打开这个新建的工程。 返回值:将返回新建的.assetproj文件 的完整路径;如果失败则返回空字符窜。
global proc int MGAssetLib_doesCategoryExist ( string $projectName , string $category ); 描述:测试在$projectName的库工程目录里,是否存在一个叫$category 的类别。 注意:如果$projectName 参数含有英文字母,数字,下划线之外的字符,这些字符将自动转换成下划线。 返回值:存在则返回1,否则为0。
global proc string MGAssetLib_getLocalCategoryFile ( string $projectName, string $category ); 描述:一个类别事实是存储在本地库工程目录里的相应 .asset文件。 注意:如果$projectName参数含有英文字母,数字,下划线之外的字符,这些字符将自动转换成下划线。 返回值:返回以$category为名称,并且属于$projectName的库工程里的.asset文件的完整路径。 即使工程或类别实际上不存在,也返回一样的结果。
global proc int MGAssetLib_addCategory ( string $projectName, string $category ); 描述:在库工程里添加一个类别,并在本地相应的库工程目录里新增一个.asset文件。如果已存在则警告并返回0。 注意:如果$projectName参数含有英文字母,数字,下划线之外的字符,这些字符将自动转换成下划线。 如果当前有打开资产库工具,则会自动打开这个新添加的类别。 返回值:添加成功则返回1,否则为0。
global proc int MGAssetLib_clearCategory ( string $projectName, string $category ); 描述:清空一个类别,事实上是清空本地库工程目录里相应的.asset文件里的内容。 注意:如果$projectName参数含有英文字母,数字,下划线之外的字符,这些字符将自动转换成下划线。 返回值:清空成功则返回1,否则为0。
global proc int MGAssetLib_addStates ( string $projectName, string $stateList [] ); 描述:添加库工程的状态预置。 $stateList 是要添加进库工程的状态预置,它是一个数组,这个数组的每个元素由下面格式的字符组成( 用空格分开 ):状态名称 状态颜色R 状态颜色G 状态颜色B 状态颜色的RGB数值是在0-1范围内的小数。比如: Approved 0.2 0.6 0.2 注意:如果$projectName 参数含有英文字母,数字,下划线之外的字符,这些字符将自动转换成下划线。 返回值:添加成功则返回1,否则为0。
global proc string[] MGAssetLib_getProjectStates ( string $projectName ); 描述:获取库工程的即有状态预置。 注意:如果$projectName参数含有英文字母,数字,下划线之外的字符,这些字符将自动转换成下划线。 返回值:库工程的状态预置数组。这个数组的每个元素由下面格式的字符组成( 用空格分开 ):状态名称 状态颜色R 状态颜色G 状态颜色B 状态颜色的RGB数值是在0-1范围内的小数。比如: Approved 0.2 0.6 0.2
global proc string[] MGAssetLib_getProjectCategories ( string $projectName ); 描述:获取库工程的所有类别。 注意:如果$projectName参数含有英文字母,数字,下划线之外的字符,这些字符将自动转换成下划线。 返回值:库工程的类别数组。
global proc int MGAssetLib_compareTwoFileDates ( string $file1, string $file2 ); 描述:辅助性函数,用来比较两个文件的修改日期。 返回值:如果俩文件都不存在,则返回0, 如果file1存在而file2不存在,则返回1,如果file1不存在而file2存在,则返回-1; 都存在的情况下,如果file1比file2旧,则返回-1,如果两者一样,则返回0, 如果file1比file2新,则返回1;
global proc string[] MGAssetLib_searchPreviewImagesFromDirectory ( string $searchDirectory, string $imageExtensionList [], int $searchDepth ); 描述:辅助性函数,搜索一个目录,来获得具有特定扩展名的文件的完整路径数组。 参数:$searchDirectory 为要搜索的目标路径,必须已存在。 $imageExtensionList 是要搜索的文件类型扩展名的数组,如 {"*.jpg", "*.bmp"} $searchDepth 是路径搜索的深度,如果不想搜索子目录,则直接将其设为1。设为0或负数则视为无限制深度。 注意:$imageExtensionList 数组里的元素,如果不是以 "*." 开头的,则自动会加上 "*." 。 返回值:将返回搜索到的符合条件的文件的完整路径数组。
global proc string[] MGAssetLib_searchMayaFilesFromDirectory ( string $searchDirectory, int $searchMA, int $searchMB, int $searchDepth ); 描述:辅助性函数,搜索一个目录,来获得MB或MA文件的完整路径数组。 参数:$searchDirectory 为要搜索的目标路径, $searchMA 决定是否要搜索MA文件,1为搜索,0为不搜索。 $searchMB 决定是否要搜索MB文件,1为搜索,0为不搜索。如果$searchMA 和$searchMB都为0,则直接返回空数组。 $searchDepth 是路径搜索的深度,如果不想搜索子目录,则直接将其设为1。设为0或负数则视为无限制深度。 返回值:将返回搜索到的MB,MA文件的完整路径数组。
global proc int MGAssetLib_addAssetRecords ( string $projectName, string $category, string $mayaFiles[], string $namespaces[], string $states[], string $previewImageStrList[], string $notes[] ); 描述:往资产库里一次性添加多个资产项。 参数:$projectName 为要添加到的库工程名称, $category 为要添加到的库工程里的特定类别, $mayaFiles 为要添加的资产文件路径数组。 $namespaces为要添加的资产名称数组,资产名称将来在叫资产进来时可以用做reference的命名空间。 $states 为该资产项的状态数组。这个状态数组的每个元素直接是状态名称,不需要加颜色信息。 $previewImageStrList 为该资产项的预览图文件数组。每一个元素对应一个资产项,单个元素内可以包括多个图片路径,但要以分号 ";" 分开。 $notes 为该资产项的注释数组。每个元素对应一个资产项的注释,元素的字符窜没有限制,你可以使用任意字符。 注意:上面的数组参数全部要一一对应否则乱套,程序是以$mayaFiles这个数组的个数为要添加的个数。 其它的数组如果没有对应的元素,则为空字符窜,除了$namespace这个数组,如果它没有对应于$mayaFiles的元素,则元素自动取值为maya文件的文件名。 返回值:成功添加没有出错则返回1,否则返回0。
global proc int MGAssetLib_deleteAssetRecords ( string $projectName, string $category, string $mayaFiles [] ); 描述:往资产库里一次性删除多个资产项。删除的依据是资产项的maya档案路径。 参数:$projectName 为要删除资产项的库工程, $category 为要删除资产项的类别, $mayaFiles 为要删除的资产路径数组。 返回值:成功删除没有出错则返回1,否则返回0。
global proc int MGAssetLib_makeMayaAsciiFile ( int $overrideIfExist, string $MAFile, string $referenceFiles [], string $namespaceList [], int $deferList [] ); 描述:生成一个MA档案。 参数:$overrideIfExist 决定如果目标MA档已存在时是否覆盖, $MAFile 为要生成的MA档的目标文件路径, $referenceFiles 为要在MA档里reference的资产文件数组, $namespaceList 为要在MA档里reference的命名空间数组, $deferList 为MA档里reference是否要延迟加载的数组。 返回值:成功生成没有出错则返回1,否则返回0。
提示:如果要使用程序来上传下载您的资产库,可以使用MGTools提供的其它两个全局函数:( 这两个不需要初始化资产库MEL API即可使用 ) global proc int MG_CopyFolder ( string $targetFolder, string $sourceFolder, string $progressBarControl, string $textControl, int $returnAtFirstError, int $autoHideProgressBarWhenIsDone ); 描述:拷贝源文件夹下面的所有文件及子文件夹到目录文件夹里。 参数:$targetFolder 是要拷贝到的目标目录,可以不存在。 $sourceFolder 是要拷贝的源目录,必须存在且是目录,如果是文件,则取消拷贝。 $progressBarControl 指定一个 progressBar 控件的名称,如果有指定且控件存在,则在拷贝过程中会更新该进度条控件的进度。 如果您为这个参数指定了空字符窜,则该参数将被忽略。 $textControl 指定一个text 控件的名称,如果有指定且控件存在,则在拷贝过程中会更新该控件,显示当前拷贝哪个文件的信息。 如果您为这个参数指定了空字符窜,则该参数将被忽略。 $returnAtFirstError 决定是否一旦有出错,则取消后续操作返回。 1是返回,0是跳过错误并继续。 $autoHideProgressBarWhenIsDone 决定是否整个拷贝过程完成后,是否自动隐藏progressBar 控件。 返回值:成功拷贝则返回1,否则返回0。
global proc int MG_DeleteFolder ( string $deleteFolder, string $progressBarControl, string $textControl, int $returnAtFirstError, int $autoHideProgressBarWhenIsDone ); 描述:删除文件夹。 参数:$deleteFolder 是要删除的目标目录,必须存在。 $progressBarControl 指定一个 progressBar 控件的名称,如果有指定且控件存在,则在删除过程中会更新该进度条控件的进度。 如果您为这个参数指定了空字符窜,则该参数将被忽略。 $textControl 指定一个text 控件的名称,如果有指定且控件存在,则在删除过程中会更新该控件,显示当前删除哪个文件的信息。 如果您为这个参数指定了空字符窜,则该参数将被忽略。 $returnAtFirstError 决定是否一旦有出错,则取消后续操作返回。 1是返回,0是跳过错误并继续。 $autoHideProgressBarWhenIsDone 决定是否整个删除过程完成后,是否自动隐藏progressBar 控件。 返回值:成功删除则返回1,否则返回0。
|