搭建AE插件开发框架
AE 全称 Adobe After Effects,是 adobe 公司推出的一款图形视频处理软件,其插件可以帮助我们更好地操作 AE。插件主要分为用户效果的和通用插件两种,入口函数也相应的分为 EffectMain() 和 EntryPointFunc() 两种,都是基于 c 或者 c++ 开发的。
这里我们仅讨论通用插件 AGEP 开发情况,入口函数如 demo 中提供的 Easy_Cheese 项目:
A_Err EntryPointFunc(struct SPBasicSuite *pica_basicP, /* >> */A_long major_versionL, /* >> */ A_long minor_versionL, /* >> */ AEGP_PluginID aegp_plugin_id, /* >> */AEGP_GlobalRefcon *global_refconP) /* << */
{S_my_id = aegp_plugin_id;A_Err = A_Err_NONE, err2 = A_Err_NONE;sP = pica_basicP;AEGP_SuiteHandler suites(pica_basicP);err = suites.CommandSuite1()->AEGP_GetUniqueCommand(&S_Easy_Cheese_cmd);if (!err && S_Easy_Cheese_cmd) {ERR(suites.CommandSuite1()->AEGP_InsertMenuCommand(S_Easy_Cheese_cmd, "Easy Cheese", AEGP_Menu_KF_ASSIST, AEGP_MENU_INSERT_SORTED));} ERR(suites.RegisterSuite5()->AEGP_RegisterCommandHook( S_my_id, AEGP_HP_BeforeAE, AEGP_Command_ALL, CommandHook, 0));ERR(suites.RegisterSuite5()->AEGP_RegisterUpdateMenuHook(S_my_id, UpdateMenuHook, 0));ERR(suites.RegisterSuite5()->AEGP_RegisterIdleHook(S_my_id, IdleHook, 0));if (err){ // not !err, err!ERR2(suites.UtilitySuite3()->AEGP_ReportInfo(S_my_id, "Easy_Cheese : Could not register command hook."));}return err;
}
插件名称是通过方法 AEGP_InsertMenuCommand() 的第二个参数定义的,如果想改成自己的插件,可以定义为 "Test" 等。试着运行项目,会在如下目录生成对应包:
lucas@lucasdeMacBook-Pro Debug % pwd
/Users/lucas/Library/Developer/Xcode/DerivedData/Easy_Cheese-dymhdlixbjrvocgonjhlpbfqgqfk/Build/Products/Debug
lucas@lucasdeMacBook-Pro Debug % ll
total 0
drwxr-xr-x 3 lucas staff 96 10 7 16:29 Easy_Cheese.plugin
然后将其复制到 AE 插件安装目录下:
root@lucasdembp Plug-ins # pwd
/Applications/Adobe After Effects 2021/Plug-ins
root@lucasdembp Plug-ins # ll
total 0
drwxr-xr-x 3 root admin 96 8 16 14:25 (AdobePSL)
drwxr-xr-x 2 root admin 64 8 16 14:25 DataFormat
drwxr-xr-x 3 root admin 96 10 7 16:29 Easy_Cheese.plugin
drwxr-xr-x 216 root admin 6912 8 16 14:25 Effects
drwxr-xr-x 6 root admin 192 8 16 14:25 Extensions
drwxr-xr-x 15 root admin 480 8 16 14:25 Format
drwxr-xr-x 21 root admin 672 8 16 14:25 Keyframe
drwxr-xr-x 8 root admin 256 8 16 14:25 MAXON CINEWARE AE
重启 AE 后,在 AE 界面并没有看到 Test 插件,此处只需调整方法 AEGP_InsertMenuCommand() 的第三个参数,将其调整为 AEGP_Menu_WINDOW 就能在 "窗口" 菜单项看到对应插件了。
如果在入口函数中获取 layer 呢?
AEGP_LayerH layerPH;
ERR(suites.LayerSuite8()->AEGP_GetActiveLayer(&layerPH));
重新打包后再次打开 AE 时就直接 crash 了,这是因为再打开 AE 时还没有选定 layer,直接获取会导致应用程序奔溃。再看入口函数注意到还有个 AEGP_RegisterCommandHook() 方法,其中第四个参数 CommandHook 是一个钩子函数,试着在这里面定义看看呢?可以添加日志打印看下:
AEGP_LayerH layerH = NULL;
ERR(suites.LayerSuite8()->AEGP_GetActiveLayer(&layerH));
ERR(suites.LayerSuite8()->AEGP_GetLayerID(layerH, &layer_indexL));
writeLog("lay id:" + std::to_string(layer_indexL));
之后便在控制台中看到如下输出:
lay id:14
以上便是插件的一个大概框架,具体如何应用参考
搭建AE插件开发框架相关推荐
- 手把手搭建前后端开发框架
快速搭建前后端开发框架 初入江湖,请多多指教 首先聊一聊,在前后端开发过程中小白会遇到哪些坑?在前后端开发过程中,前端主要是网页设计和数据渲染,前端永远是痛,主要痛在哪呢? 痛在包管理, 开发过前端的 ...
- ae saber插件_【AE插件】 用于做动画制作/设计的五个免费插件 非常好用
本文提到的插件不是那种(你什么都不干,就指望它能马上帮你制作出酷炫动画的软件)而是那种真正能在商业动画制作方面中有所帮助,大家追求酷炫可以选择saber,orb等. 第五名:Textevo 文字标题弹 ...
- 摸不到视频里的犀牛,却能在它身上画画,特效紧贴凹凸表面,动也不掉:全靠免费AE插件...
花栗子 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你把衣服穿在身上,却发现上面的"印花"动了起来: 衣服表面随着躯体而凹凸不平,"印花"就跟着凹凸 ...
- 构建自己的C/C++插件开发框架
最近一直在学习OSGI方面的知识.买了一本<OSGI原理和最佳实践>,可是还没有到.遗憾的是,OSGI目前的几个开源框架只支持Java,对C和C++都不支持的.可惜我们公司目前主要的开发语 ...
- ae万能弹性表达式_外置常用ae插件 快速掌握AE软件的精髓
相信经常用ae软件的小伙伴就知道,AE的强大之处就在于它的插件,它就像一个巨型的加工厂.所以,AE插件在AE软件的使用中是必不可少的. 鉴于AE插件的种类繁多,为了让影视后期爱好者在后续学习AE软件 ...
- Mac插件分享——AE插件、PS插件、FCPX插件【持续更新中】
大家好,这里是Mac未来软件园.无论是Mac软件还是Windows软件,很多软件都有插件,插件有无数种. 本文将给大家带来Mac软件AE插件.PS插件.FCPX插件等常用热门插件. 你觉得你的Mac上 ...
- ae插件Particle Projection for Mac(AE粒子投影插件)
Particle Projection是一个强大的AE插件,用于生成通过使用置换层投影的复杂粒子阵列.粒子投影可以以令人难以置信的细节水平创造令人惊叹和独特的生成效果. 粒子投影的操作方式是生成粒子阵 ...
- AE插件Stardust for mac(最强粒子特效)
Stardust是After Effects的模块化3D粒子系统插件.它具有易于使用的基于节点的用户界面,并附带大量预设以创建令人惊叹的效果,独立的操控界面,功能强大,含多种预设,轻松制作出漂亮而复杂 ...
- AE插件Aura Rowbyte Aura for Mac(AE几何粒子渲染效果插件)
Aura是After Effects的程序插件,可在3D空间中创建优雅的几何形状.它类似于粒子系统,但它不是在整个地方渲染小粒子,而是像经典Radiowaves插件一样随时间变化的矢量形状(波浪).它 ...
最新文章
- dx使用出现的错误总结
- 《OpenACC并行程序设计:性能优化实践指南》一 3.5 在应用程序执行期间记录性能信息...
- 父元素事件中禁止子元素的事件
- win10 mysql my.cnf_MySQL配置文件无法修改的解决方法(Win10)
- 前9个免费的Java进程监视工具以及如何选择一种
- chrome介绍与用法
- luogu_1984 [SDOI2008]烧水问题
- VC程序运行时间测试
- HDU 3695 / POJ 3987 Computer Virus on Planet Pandora
- Flash制作空战游戏
- [转]Windows10 中文版 英文语言包安装失败解决
- 苹果可能会失去中国的iPad商标
- python math 数学函数教程
- 快速入门github网站,了解GitHub网站的基本使用
- 没有学历可以学习游戏建模吗?这问题真致命!
- C语言编写取单词首字母,C语言练习之单词首字母大写
- TPM零知识学习七 —— tpm模拟器安装
- ZYNQ LWIP实验
- ABAP 销售订单创建BAPI:BAPI_SALESORDER_CREATEFROMDAT2总结
- 未来计算机行业什么最吃香,未来哪些行业吃香 这四个行业前景比较好