「这是我参与11月更文挑战的第 26 天,活动详情查看:2021最后一次更文挑战」。
参加该活动的第 43 篇文章
目标
开发我的第一个 After Effects 插件 —— 变色效果。
环境
Adobe CC2019 v16.0.0
Windows10 with environment for C++ compile
Microsoft Visual C++ 2017 ver15.8.4
具体步骤
环境搭建
下载 After Effects SDK
访问 Adobe 网站,单击 “获取 SDKs” 按钮获取 After Effects SDK。选择 AE 版本的 After Effects Plug-in SDK。
将创建路径设置为环境变量
添加环境变量 “AE_PLUGIN_BUILD_DIR” 并设置输出目录。如果它不存在,则会报错误 “fatal error LNK1104: cannot open file ***.aex”
。
创建样例插件,测试环境配置成功与否
解压 “After+Effects+CC+16.0+Win+SDK.zip”,并将解压后的目录“AfterEffectsSDK”放到合适的位置。
打开 AfterEffectsSDK\Examples\BuildAll 例子。sln 将启动 Visual Studio 。
右键单击 “SDK Noise” 并构建它。
如果出现错误 “C2220: warning treated as error - no 'object' file generated”
,修改项目配置——不将警告视为错误。
放置插件到 AE 目录
把 “SDK_Noise.aex“ 文件放到 “C:\Program Files\Adobe\Adobe After Effects CC 2019\Support Files“ 目录。
添加插件效果
打开 AE 项目,点击 Effect>Sample Plug-ins>SDK_Noise
一个噪声效果被添加到视频中。
拷贝模板
从 “AfterEffectsSDK\Examples\template\Skeleton” 复制骨架模板,保留“Skeleton”、“Headers”、“Resources” 和 “Util” 的目录层次结构。
重命名文件名,将 “Skeleton” 替换为 “Color Change” 。不要重命名 “SkeletonPiPL.rc”。因为二进制的 .rc 文件是自动从 .r 文件生成的(AE插件 SDK 指南 “PiPL资源” )。
EffectMain 函数
在 SkeletonPiPL.r 中定义了 Main 函数,如下。
1 | cpp复制代码#ifdef AE_OS_WIN |
EffectMain 是接受 PF_Cmd cmd
作为一个参数的函数,并使用(如PF_Cmd_ABOUT
,PF_Cmd_PARAMS_SETUP
和 PF_Cmd_RENDER
的) cmd 作为一个选择器来调用该函数。参考 “AE 插件 SDK 指南命令选择器”。
1 | cpp复制代码PF_Err EffectMain( |
About 函数
About 函数用于显示描述插件的对话框。在 ColorChange_Stgrings.cpp 中修改 TableString
如下。
1 | cpp复制代码TableString g_strs[StrID_NUMTYPES] = { |
打开 About 对话框,就会显示如下信息
参数设置
ParamsSetup 是设置 UI、描述参数和注册它们的函数。
我将 SKELETON
重命名为 COLORCHANGE
,删除 GAIN
参数,添加 LEVEL
参数。然后在 ColorChange.h 中重置值如下。
1 | cpp复制代码/* Parameter defaults */ |
对应地,在 ColorChange.cpp 中也重命名常量名称。
渲染
渲染函数是根据输入和参数将效果渲染到输出的函数。
1. GainInfo
GainInfo
是处理参数 GAIN
的结构体。在 ColorChange.h 中创建用于传递参数数据 level
和 color
的新结构体。
1 | cpp复制代码typedef struct ParamInfo { |
1 | cpp复制代码//GainInfo giP; |
2. iterate
迭代函数扫描输入帧并且计算输出帧作为像素对像素的操作,即像素函数。在本例中,像素函数是 “MySimpleGainFunc16” 或 “MySimpleGainFunc8” 。重命名并将它们改为 “MyColorChangeFunc16” 和 “MyColorChangeFunc8” 。
1 | cpp复制代码if (PF_WORLD_IS_DEEP(output)) |
3. MyColorChangeFunc
我将像素函数更改如下。
1 | cpp复制代码static PF_Err MyColorChangeFunc8( |
1 | cpp复制代码static PF_Err MyColorChangeFunc16( |
构建并安装
构建解决方案,并将生成的 .aex 文件放入 Adobe AE 目录,如 “C:\Program Files\Adobe\Adobe After Effects CC 2019\Support Files”
。
本文转载自: 掘金