最近一个游戏项目需要用到AE做合成,可是渲出来的素材有那么多层,艺术家自己一个一个往里导确实很费时间,于是给他们写了个自动导入素材的工具,并且根据背景和角色层自动打好组,创建文件夹,还创建了comp,将素材放进去,根据序列的长度来设置comp的长度,还能根据文件的名字给里面的comp命名,将文件命名规范,最后又加了个为艺术家自动设置输出路径和视频名字的功能。
工具的界面如下:
原码如下:
{
function importFile(file){
try{
var importOptions = new ImportOptions(file);
app.project.importFile(importOptions);
}
catch(error){
}
}
function detectForSequence(files){
var searcher = new RegExp("[0-9]+");
var imageFileSearcher = new RegExp("(mov|avi|mpg)$", "i");
var parseResults = new Array;
var parseNum = new Array;
for (var i=0; i < files.length; i++){
var imageFileResult = imageFileSearcher.exec(files[i].name);
if (!imageFileResult){
var currentResult = searcher.exec(files[i].name);
parseNum.push(currentResult);
if (currentResult){
parseResults[parseResults.length] = currentResult[0];
}
else{
parseResults[parseResults.length] = null;
}
}else{
parseResults[parseResults.length] = null;
}
}
parseNum.sort();
difference = parseNum[parseNum.length - 1] - parseNum[0] + 1
if (difference == parseNum.length & parseNum.length > 1){
return files[0];
}else{
return null;
}
// var result = null;
// for (var i=0; i < parseResults.length; ++i){
// if (parseResults[i]){
// if (!result){
// result = files[i];
// }
// }
// else{
// result = null;
// break;
// }
// }
// return parseNum;
// return result;
}
function processFolder(folderPath, value){
var files = folderPath.getFiles();
var sequenceStartFile = detectForSequence(files);
value.push(files.length);
if (sequenceStartFile){
try{
var importOptions = new ImportOptions(sequenceStartFile);
importOptions.sequence = true;
var importImg = app.project.importFile(importOptions);
importImg.conformFrameRate = 24;
} catch (error