AE自動化腳本
बनाया गया: 21 नवंबर 2024
का उपयोग करके उत्तर दिया गया OpenAI 01 Preview द्वारा OpenAI01
बनाया गया: 21 नवंबर 2024
का उपयोग करके उत्तर दिया गया OpenAI 01 Preview द्वारा OpenAI01
理解问题梳理回答
首先,我仔细阅读用户的请求,确保理解其要求。然后,依据政策提供符合规定的准确答案,如果无法回答则予以解释。
开始和导入文件
首先,我在桌面上找到名为“参考动图”的文件夹,将其中的动图导入AE,然后找到“动图贴图原图”文件夹,导入其中的24个PNG文件。接着,我让AE分析这个2秒的动动画面,模拟抖动频率和关键帧。
应用和导出
分析完后,我将这些24张图片应用于抖动频率和关键帧,每张图片分为5个画格,并将每个画格的背景去除,使背景透明。最后,用AE的BX-Webp/Apng exporter插件导出为宽320px×高270像素、文件大小小于300KB的APNG文件到F:硬盘中的"动图贴图完成"文件夹。
整合资源
我在解析视频的运动数据、将其应用于图像、将图像分帧、移除背景,并将图像导出为指定设置的APNG文件。
提出腳本要求
使用戶要求已經滿足條件,助理能夠根據指示,編寫和解釋步驟。确保遵守版权政策。
明确脚本功能
考慮脚本的操作,寫作過程中逐步揭示每部份的作用。
編排腳本
我正試著自動化導入影片和圖片、運動分析、關鍵幀應用、子合成創建、畫格分割及去背處理。這樣做能有效提高工作效率和質量。
好的,我會根據您的要求,為您編寫一個After Effects的JavaScript腳本。以下是詳細的步驟分析和腳本:
步驟分析:
導入資源:
分析動態影片:
應用分析結果:
去背處理:
匯出設定:
JavaScript腳本:
{ function main() { // 開始撤銷群組 app.beginUndoGroup("動態貼圖自動化腳本"); // 設定路徑 var desktopPath = Folder.desktop.fsName; var referenceFolder = new Folder(desktopPath + "/參考動態圖"); var imagesFolder = new Folder(desktopPath + "/動態貼圖原圖"); var outputFolder = new Folder("F:/動態貼圖完成"); // 檢查資料夾是否存在 if (!referenceFolder.exists || !imagesFolder.exists) { alert("找不到指定的資料夾。"); return; } // 創建主合成 var compWidth = 320; var compHeight = 270; var compDuration = 2; // 2秒 var compFrameRate = 30; // 設定為30fps var mainComp = app.project.items.addComp("MainComp", compWidth, compHeight, 1, compDuration, compFrameRate); // 導入參考影片 var referenceFiles = referenceFolder.getFiles("*.mov"); // 修改為您的影片格式 if (referenceFiles.length === 0) { alert("參考資料夾中沒有影片檔案。"); return; } var referenceFootage = app.project.importFile(new ImportOptions(referenceFiles[0])); // 將參考影片添加到合成 var referenceLayer = mainComp.layers.add(referenceFootage); // 假設已手動完成運動跟蹤,並獲得了抖動的頻率和關鍵幀數據 // 這裡我們將模擬一個簡單的抖動表達式 var wiggleExpression = "wiggle(5, 10)"; // 每秒5次,幅度為10像素的抖動 // 導入24張PNG圖片 var imageFiles = imagesFolder.getFiles("*.png"); if (imageFiles.length !== 24) { alert("動態貼圖原圖資料夾中沒有24張PNG圖片。"); return; } // 處理每一張圖片 for (var i = 0; i < imageFiles.length; i++) { // 導入圖片 var importOptions = new ImportOptions(imageFiles[i]); var imageItem = app.project.importFile(importOptions); // 創建子合成 var imageComp = app.project.items.addComp("ImageComp_" + (i + 1), compWidth, compHeight, 1, compDuration, compFrameRate); // 將圖片添加到子合成 var imageLayer = imageComp.layers.add(imageItem); // 去背處理(假設使用Keylight效果) var keylightEffect = imageLayer.Effects.addProperty("ADBE Keylight2"); keylightEffect.property("Screen Colour").setValue([0, 0, 0]); // 根據實際背景色調整 // 將子合成添加到主合成 var imageCompLayer = mainComp.layers.add(imageComp); // 設置每個圖分為5個畫格 var frameDuration = compDuration / 5; imageCompLayer.startTime = 0; imageCompLayer.inPoint = 0; imageCompLayer.outPoint = compDuration; // 應用抖動表達式到位置屬性 imageCompLayer.property("Position").expression = wiggleExpression; } // 移除參考影片層(如不需要) referenceLayer.enabled = false; // 檢查並創建輸出資料夾 if (!outputFolder.exists) { outputFolder.create(); } // 添加到渲染隊列 var renderQueueItem = app.project.renderQueue.items.add(mainComp); var outputModule = renderQueueItem.outputModule(1); // 設定輸出模組(需要確保BX - Webp/Apng exporter插件已正確安裝並配置) outputModule.applyTemplate("BX - Apng"); // 模板名稱可能需要調整 outputModule.file = new File(outputFolder.fsName + "/動態貼圖.apng"); // 設定渲染設置(如需要,可以在此處調整) renderQueueItem.render = true; // 開始渲染 app.project.renderQueue.render(); // 結束撤銷群組 app.endUndoGroup(); alert("腳本執行完畢,已匯出APNG檔案。"); } // 執行主函數 main(); }
說明:
wiggle
表達式來模擬抖動效果,您可以根據實際的分析數據進行調整。Screen Colour
。注意事項:
建議:
由於AE腳本的限制,以及某些功能無法完全自動化,建議您:
希望這個腳本能夠幫助到您!