「这是我参与11月更文挑战的第 28 天,活动详情查看:2021最后一次更文挑战」。
参加该活动的第 46 篇文章
正文
参数
参数是随时间变化的值流; 源图像、滑块、角度、点、颜色、路径和用户可以操作的任何任意数据类型。它们以 PF_ParamDefs 数组的形式传递给插件,不过数组中的值仅在某些选择器期间中有效。
After Effects 效果 API 最好的方面之一是参数插值和管理。在每秒 29.97 帧的四分之一帧的时间内,快门角度变化了多少? 这不是你的问题; 把它留给 After Effects 。
在 PF_Cmd_PARAMS_SETUP 期间内使用 PF_ADD_PARAM() 描述插件的参数。
这句不知道该怎么翻译:You may have up to (approximately) 38 kajillion parameters, or as many as your users are willing to sift through before demanding a refund. Choose wisely.
通过在注册 PF_ParamDefs 之前使用 AEFX_CLR_STRUCT (在 AE_Macros.h中定义)清除 PF_ParamDefs 来避免无数的问题。
参数类型
| 参数类型 | 参数类型 PF_ParamDefUnion 成员 参数值数据类型 | 描述 | ||
|---|---|---|---|---|
| PF_Param_LAYER | PF_LayerDef ld A_long | 合成中的图像和音频层。所有效果自动有至少一个层参数,参数[0],代表被它们所应用的层。 当作为效果参数使用时,这些显示为一个下拉菜单,用户在当前合成中所选择的一个层。下拉菜单内容由 After Effects 生成。 注意: 这是一个包含像素和音频样本的层的引用,而不是实际的像素和音频样本。 | ||
| PF_Param_SLIDER | PF_SliderDef sd long | 不再使用 | ||
| PF_Param_FIX_SLIDER | PF_FixedSliderDef fd PF_Fixed | 弃用。多年来,我们一直在推广定点滑块。现在我们推荐 PF_Param_FLOAT_SLIDERs 。额外的精度在很多情况下都有帮助,而且不像以前那样昂贵。另外,我们厌倦了低字节/高字节的愚蠢。 FIX_SLIDERs 提供比 PF_Param_SLIDER 更高的精度。独立指定 UI 的小数位。忽略 PF_Fixed 的低字以获得整型结果。 | ||
| PF_Param_FLOAT_SLIDER | PF_FloatSliderDef fs_d PF_FPLong | 滑块表示数值。 FLOAT_SLIDERs 包含音频滤波器使用的相位、精度和曲线公差值。指定最小值和最大值,用户可以移动滑块或键入数字来指定设置。 PF_Param_FLOAT_SLIDERs 也响应音频过滤器中讨论的滑块标志。 | ||
| PF_Param_ANGLE | PF_AngleDef ad PF_Fixed | (定点)角度,精确到一角度的一小部分。用户可以指定多个转数,导致值大于 360 。 | ||
| PF_Param_CHECKBOX | PF_CheckBoxDef bd PF_Boolean | PF_ParamFlag_CANNOT_INTERP 被强制用于所有复选框。 | ||
| PF_Param_COLOR | PF_ColorDef cd PF_Pixel | RGB 值(不使用 alpha 值),用户可以使用标准的颜色选择器或滴管工具来选择。为了浮点精度,使用 PF_Color_Param_Suite 来检索值。 | ||
| PF_Param_POINT | PF_PointDef td PF_Fixed | 一个二维的点。点提供目标层空间中的 x 和 y 值。图层的原点在左上角,随着 x 向右增加, y 向下增加。从 CS5.5 开始,为了浮点精度,使用 PF_point_Param_Suite 来检索值。 遵循灰尘历史教训: 在 API 规范版本 12.1 (After Effects 4.0)之前,定点的默认值是 0 和 100 之间,小数点在第 16 位(即标准固定点)。指定定点(50, 50)将生成图像的中心。点控制返回的值以绝对像素为单位,具有一定数量定点精度的位元。因此,如果你将(50,50)作为默认位置,用户将效果应用到一个 640 * 480 的图层,你将被发送的默认值将是 (320, 240) 固定点。指定 12.1 之前的 API 版本的插件仍然会得到旧的行为。 | ||
| PF_Param_POPUP | PF_PopupDef pd A_long | 选择列表。在 namesptr 中构建一个字符串,包含一个(只读的)弹出项列表(“*Entry1 | Entry2 | Entry3*”)。After Effects 复制数据并创建一个弹出菜单。一旦添加了参数,就不能修改这些条目。 一个“(-”条目将导致在前一个条目和后一个条目之间绘制一个分隔符。 |
| PF_Param_ARBITRARY_DATA | PF_ArbitraryDef arb_d ??? | 自定义数据类型。任意参数包含一个 ID (您可以在一个给定的效果中使用多个自定义数据类型)、一个默认值(因此 After Effects 知道您的数据类型应该以什么开头)和一个实际参数的句柄。 AE 中必须指定 PF_PUI_TOPIC/PF_PUI_CONTROL 或 PF_PUI_NO_ECW。在 Pro 8.0 及更高版本中,可以不设置任何这些标志,这允许你在不创建自定义控件的情况下在效果控件的右侧看到参数的关键帧轨迹。 | ||
| PF_Param_PATH | PF_PathDef path_d PF_PathID | 路径参数是遮罩的引用,应用于同一层的效果。不能直接访问路径参数数据; 使用 PF_PathQuerySuite 和 PF_PathDataSuite 来管理和查询路径。 PF_PathDef.Path_id 包含用户选择的遮罩的索引。对应的 AEGP_MaskRefH 可以通过来自从 AEGP_MaskSuite6 的 AEGP_GetLayerMaskByIndex 获得。 | ||
| PF_Param_GROUP_START PF_Param_GROUP_END | - | 参数组(主题)将参数组织成集合。每个组接收自己的旋转,并将在 ECP 中相对于相邻的参数或组缩进。一个组可以嵌套在另一个组中。每个旋转可以由用户旋转打开或关闭,或通过编程的效果。该效果可以选择将某些组初始化为旋转打开,而其他组初始化为旋转关闭。 | ||
| PF_Param_BUTTON | PF_Button button_d (no value) | 在 CS 5.5 到 After Effects 中。一个简单的按钮。使用参数监控来检测按钮何时被按下。 | ||
| PF_Param_POINT_3D | PF_Point3D point3d_d PF_FpLong (3) | CS 5.5 新增。在 Premiere Pro 不支持 。一个三维点。 |
滑块范围有问题?
如果滑块看起来被禁用的,但没有变灰,请检查 valid_min、slider_min、valid_max 和 slider_max 字段。参数是 PF_Param_FIX_SLIDER 吗?如果有,你是否将你的最小值和最大值转换成合理的固定值? 如果你正在使用AE_Macros.h 中提供的宏,它们期望接收的是 int; 传递定点值不起作用。
点参数的起源
After Effects 修改任何点参数,以考虑由修改输出维度的 “上游(upstream)” 效果引入的原点偏移。即使 ECP UI 指示点参数的值是 (0,0),偏移量也已经被考虑进去了。