社区插件示例
社区插件示例
Section titled “社区插件示例”发现并分享社区创建的 After Effects 插件。从简单的自动化工具到复杂的 CEP 扩展,为您的工作流程寻找灵感和实用解决方案。
工作流程自动化
Section titled “工作流程自动化”图层管理器专业版
Section titled “图层管理器专业版”类型: CEP 面板
描述: 高级图层管理,具有批量操作、智能分组和自定义命名约定。
主要功能:
- 使用模式批量重命名图层
- 按类型智能分组图层
- 快速调整图层属性
- 将图层信息导出为 CSV
渲染队列增强版
Section titled “渲染队列增强版”类型: 脚本面板
描述: 扩展的渲染队列功能,带有模板、批量处理和通知系统。
功能:
- 自定义渲染模板
- 完成时发送电子邮件通知
- 自动文件组织
- 进度跟踪和日志记录
表达式生成器
Section titled “表达式生成器”类型: CEP 扩展
描述: 可视化表达式生成器,具有拖放界面,无需编码即可创建复杂动画。
能力:
- 基于节点的可视化表达式创建
- 预构建的动画模板
- 实时预览
- 表达式库管理
色彩和谐生成器
Section titled “色彩和谐生成器”类型: 脚本
描述: 生成和谐的调色板并自动应用于所选图层。
功能:
- 多种色彩和谐算法
- 调色板导入/导出
- 图层颜色批量应用
- 与 Adobe Color 集成
插件开发示例
Section titled “插件开发示例”基本 CEP 面板结构
Section titled “基本 CEP 面板结构”<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>我的 AE 插件</title> <link rel="stylesheet" href="css/styles.css"></head><body> <div class="container"> <h2>图层工具</h2>
<div class="section"> <h3>创建图层</h3> <button id="createSolid" class="btn-primary">创建固态层</button> <button id="createText" class="btn-primary">创建文本</button> <button id="createNull" class="btn-secondary">创建空对象</button> </div>
<div class="section"> <h3>图层操作</h3> <button id="duplicateLayers" class="btn-primary">复制选中项</button> <button id="alignLayers" class="btn-primary">对齐图层</button> <button id="distributeLayers" class="btn-secondary">分布</button> </div>
<div class="section"> <h3>实用工具</h3> <button id="exportInfo" class="btn-secondary">导出图层信息</button> <button id="cleanup" class="btn-warning">清理项目</button> </div> </div>
<script src="js/CSInterface.js"></script> <script src="js/main.js"></script></body></html>插件 JavaScript 逻辑
Section titled “插件 JavaScript 逻辑”(function() { 'use strict';
var csInterface = new CSInterface();
// 初始化插件 function init() { setupEventListeners(); updateTheme(); }
function setupEventListeners() { document.getElementById('createSolid').addEventListener('click', createSolid); document.getElementById('createText').addEventListener('click', createText); document.getElementById('createNull').addEventListener('click', createNull); document.getElementById('duplicateLayers').addEventListener('click', duplicateLayers); document.getElementById('alignLayers').addEventListener('click', alignLayers); document.getElementById('distributeLayers').addEventListener('click', distributeLayers); document.getElementById('exportInfo').addEventListener('click', exportLayerInfo); document.getElementById('cleanup').addEventListener('click', cleanupProject); }
function createSolid() { var script = ` (function() { var comp = app.project.activeItem; if (!comp || !(comp instanceof CompItem)) { return '没有活动的合成'; }
var solid = comp.layers.addSolid( [Math.random(), Math.random(), Math.random()], '插件固态层', comp.width / 4, comp.height / 4, comp.duration );
return '已创建: ' + solid.name; })() `;
csInterface.evalScript(script, function(result) { showNotification(result); }); }
function createText() { var script = ` (function() { var comp = app.project.activeItem; if (!comp || !(comp instanceof CompItem)) { return '没有活动的合成'; }
var textLayer = comp.layers.addText('插件文本'); textLayer.transform.position.setValue([comp.width/2, comp.height/2]);
return '已创建文本图层'; })() `;
csInterface.evalScript(script, function(result) { showNotification(result); }); }
function duplicateLayers() { var script = ` (function() { var comp = app.project.activeItem; if (!comp || !(comp instanceof CompItem)) { return '没有活动的合成'; }
var selectedLayers = comp.selectedLayers; if (selectedLayers.length === 0) { return '没有选中的图层'; }
app.beginUndoGroup('复制图层');
for (var i = 0; i < selectedLayers.length; i++) { selectedLayers[i].duplicate(); }
app.endUndoGroup();
return '已复制 ' + selectedLayers.length + ' 个图层'; })() `;
csInterface.evalScript(script, function(result) { showNotification(result); }); }
function showNotification(message) { // 简单的通知系统 var notification = document.createElement('div'); notification.className = 'notification'; notification.textContent = message; document.body.appendChild(notification);
setTimeout(function() { document.body.removeChild(notification); }, 3000); }
function updateTheme() { var skinInfo = csInterface.getHostEnvironment(); // 根据 After Effects 外观应用主题 }
// DOM 准备好后初始化 document.addEventListener('DOMContentLoaded', init);})();- 关键帧助手: 用于高级关键帧操作的工具
- 缓动助手: 可视化缓动曲线编辑器
- 运动路径工具: 高级运动路径创建和编辑
工作流程增强
Section titled “工作流程增强”- 项目管理器: 用于组织和管理复杂项目的工具
- 资产库: 自定义资产管理和组织
- 模板系统: 可复用模板的创建和应用
- 渲染管理器: 高级渲染队列管理
- 格式转换器: 批量格式转换工具
- 压缩工具: 优化的压缩和交付
- 外部软件: 与其他创意应用程序集成
- 云服务: 云存储和协作工具
- 版本控制: 项目版本控制和备份系统
- 简单的自动化脚本
- 基本的 UI 面板
- 单一用途的工具
- 多功能面板
- 数据处理工具
- 自定义 UI 组件
- 复杂的工作流程系统
- 实时处理工具
- 与外部 API 集成
基本脚本模板
Section titled “基本脚本模板”/** * 插件名称: [您的插件名称] * 描述: [简要描述] * 作者: [您的姓名] * 版本: 1.0.0 */
(function() { 'use strict';
// 插件配置 var CONFIG = { name: '我的插件', version: '1.0.0' };
function main() { // 主要插件逻辑 }
// 执行 main();})();CEP 清单模板
Section titled “CEP 清单模板”<?xml version="1.0" encoding="UTF-8"?><ExtensionManifest Version="7.0" ExtensionBundleId="com.yourname.yourplugin"> <ExtensionList> <Extension Id="com.yourname.yourplugin" Version="1.0.0" /> </ExtensionList>
<ExecutionEnvironment> <HostList> <Host Name="AEFT" Version="[13.0,99.9]" /> </HostList> <LocaleList> <Locale Code="All" /> </LocaleList> <RequiredRuntimeList> <RequiredRuntime Name="CSXS" Version="9.0" /> </RequiredRuntimeList> </ExecutionEnvironment>
<DispatchInfoList> <Extension Id="com.yourname.yourplugin"> <DispatchInfo> <Resources> <MainPath>./index.html</MainPath> </Resources> <UI> <Type>Panel</Type> <Menu>您的插件名称</Menu> <Geometry> <Size> <Width>300</Width> <Height>400</Height> </Size> </Geometry> </UI> </DispatchInfo> </Extension> </DispatchInfoList></ExtensionManifest>- 文档: 提供清晰的安装和使用说明
- 代码质量: 有良好注释、有组织的代码
- 测试: 在不同的 AE 版本中测试
- 许可: 明确指定许可条款
- 清晰的描述和目的
- 安装说明
- 使用示例
- 错误处理
- 性能优化
- 跨平台兼容性
- 版本兼容性说明
🔗 相关资源
Section titled “🔗 相关资源”热门插件创意
Section titled “热门插件创意”- 批量图层操作
- 项目清理工具
- 渲染队列管理器
- 资产组织器
- 调色板生成器
- 动画预设
- 效果组合
- 模板系统
- 项目模板
- 客户审阅工具
- 版本管理
- 协作功能
加入我们的插件开发者社区,帮助扩展 After Effects 的功能,让每个人受益!