PF_OutData
PF_OutData
使用 PF_OutData
与 After Effects 沟通插件所做的更改。修改这些字段的有效时间已注明。
PF_OutData 成员
字段 | 描述 |
---|---|
my_version | 使用 PF_VERSION 宏将此标志设置为插件代码的版本。 |
After Effects 使用此数据来决定加载哪个重复的效果。 | |
name | 未使用。 |
global_data | 每次调用时将在 PF_InData 中返回给您的句柄。 |
使用 After Effects 的内存分配函数。 | |
num_params | After Effects 将此字段与 PF_ADD_PARAM 的调用次数以及隐式输入层进行比较。 |
sequence_data | 在收到 PF_Cmd_SEQUENCE_SETUP 时可分配,此句柄将在所有后续调用中通过 PF_InData 传递回您。 |
flat_sdata_size | 未使用(After Effects 知道大小,因为您首先使用其分配函数获取内存)。 |
frame_data | 在 PF_Cmd_FRAME_SETUP 期间您(可能)分配的句柄。 |
此数据永远不会写入磁盘;它用于将信息从您的 PF_Cmd_FRAME_SETUP 响应传递到 PF_Cmd_RENDER 或 PF_Cmd_FRAME_SETDOWN(如果您调整输出缓冲区大小,则必须这样做)。 | |
否则,此内存很少使用。 | |
width , height , origin | 如果输出图像大小与输入不同,则在 PF_Cmd_FRAME_SETUP 期间设置。 |
width 和 height 是输出缓冲区的大小,origin 是输入应映射到输出的点。 | |
要创建向上和向左的 5 像素阴影,请将原点设置为 (5, 5)。 | |
out_flags | 向 After Effects 发送消息。可以组合多个值。 |
return_msg | After Effects 显示您在此处放置的任何 C 字符串(每次命令选择器后检查并清除)。 |
start_sampL , dur_sampL , dest_snd | 仅用于 Audio 命令 |
out_flags2 | 向 After Effects 发送消息。可以组合多个值。 |
PF_OutFlags
这些标志向 After Effects 传达功能和状态信息。在以前的版本中,它们还用于发送基本消息,例如刷新 UI、发送错误消息。
这些功能已被函数套件取代,所有新的消息功能都将以该格式提供。然而,功能标志仍包含在 PiPL 中。
当您进行更改时,请同时更新 PiPL 和源代码。许多这些标志可以在 After Effects 会话期间更改。
标志 | 表示 |
---|---|
PF_OutFlag_KEEP_RESOURCE_OPEN | 插件的资源必须在所有命令期间可用。 |
在 PF_Cmd_GLOBAL_SETUP 期间,插件的资源始终打开,但在所有其他时间不可用(除了在 PF_Cmd_ABOUT 和 PF_Cmd_DO_DIALOG 期间),除非设置了此标志。 | |
如果您需要在 PF_Cmd_GLOBAL_SETUP 之外的任何时间访问资源,请设置此标志。 | |
!!! 注意 | |
我们建议插件加载并将必要的资源存储在全局数据中,而不是保持文件的资源打开。 | |
PF_OutFlag_WIDE_TIME_INPUT | 效果在 current_time 之外的时间检查参数。 |
如果您使用来自其他时间的参数(包括图层参数),请设置此标志。 | |
否则,After Effects 不会正确使您的效果使用的缓存帧失效。 | |
在 PF_Cmd_GLOBAL_SETUP 期间设置。 | |
如果您设置此标志,我们强烈建议您也设置 PF_OutFlag2_AUTOMATIC_WIDE_TIME_INPUT 以获得更好的性能。 | |
PF_OutFlag_NON_PARAM_VARY | 设置此标志后,当效果应用于静止图像时,After Effects 不会缓存输出。 |
否则,After Effects 将缓存您的输出以用于渲染其他帧(如果可能)。 | |
如果输出基于参数值以外的内容而变化,请设置此标志。 | |
如果效果应用于静止图像时生成变化的帧且所有参数都保持不变,那么这是一个明确的信号,表明应设置此位(例如 Wave Warp)。 | |
例如,粒子效果将需要此标志。 | |
在 PF_Cmd_GLOBAL_SETUP 期间设置。 | |
如果需要,可以在 PF_Cmd_QUERY_DYNAMIC_FLAGS 期间动态覆盖。 | |
尽可能关闭此标志以提高性能。 | |
PF_OutFlag_RESERVED6 | 未使用。以前是 PF_OutFlag_SEND_PARAMS_UPDATE 。已被 PF_OutFlag_REFRESH_UI 取代。 |
PF_OutFlag_SEQUENCE_DATA_NEEDS_FLATTENING | After Effects 和 Premiere Pro 都假定设置了此标志。 |
当序列数据包含引用项(指针、句柄)时,必须进行扁平化以进行存储,并在使用时进行反扁平化。 | |
请参阅 PF_Cmd_SEQUENCE_RESETUP。 | |
PF_OutFlag_I_DO_DIALOG | 效果在响应 PF_Cmd_DO_DIALOG 时显示对话框。 |
在 PF_Cmd_GLOBAL_SETUP 期间设置,在 PF_Cmd_SEQUENCE_SETUP 期间检查。 | |
!!! 注意 | |
效果对 PF_OutFlag_I_DO_DIALOG 的响应不可撤销。您可以使用自定义 UI 的任意数据,如果此类更改变得必要。 | |
PF_OutFlag_USE_OUTPUT_EXTENT | 效果遵守输出 extent_rect 。在 PF_Cmd_GLOBAL_SETUP 期间设置。 |
有关正确用法,请参阅本章末尾的详细信息。 | |
!!! 注意 | |
对于 SmartFX 已过时。 | |
PF_OutFlag_SEND_DO_DIALOG | 效果必须显示对话框才能正常工作(为与 Photoshop 插件兼容而添加)。 |
After Effects 在 PF_Cmd_SEQUENCE_SETUP 之后发送 PF_Cmd_DO_DIALOG。 | |
在 PF_Cmd_SEQUENCE_RESETUP 期间设置,而不是在 PF_Cmd_GLOBAL_SETUP 期间设置。 | |
PF_OutFlag_DISPLAY_ERROR_MESSAGE | 在错误对话框中显示 return_msg 的内容。 |
每当 return_msg 非空时,After Effects 会在对话框中显示内容,如果设置了此标志,则显示为错误对话框。 | |
在任何命令后设置,并可在调试期间使用。 | |
这也是实现试用版提醒消息的好方法。 | |
PF_OutFlag_I_EXPAND_BUFFER | 效果扩展输出缓冲区。 |
在 PF_Cmd_GLOBAL_SETUP 期间设置。 | |
设置此标志和 PF_OutFlag_USE_OUTPUT_EXTENT 以在 PF_Cmd_FRAME_SETUP 期间使用输出 extent_rect 与您的新缓冲区大小的交集。 | |
使用 pre_effect_source_origin 字段检测其他变换。 | |
!!! 注意 | |
仅在需要时设置此标志;它会大大降低缓存效率。 | |
!!! 注意 | |
对于 SmartFX 已过时。 | |
PF_OutFlag_PIX_INDEPENDENT | 给定像素独立于其周围的像素。 |
在 PF_Cmd_GLOBAL_SETUP 或 PF_Cmd_QUERY_DYNAMIC_FLAGS 期间设置。 | |
例如,颜色校正效果通常是像素独立的,而扭曲效果则不是。 | |
!!! 注意 | |
如果您的效果不使用一个像素的颜色值来影响相邻像素的颜色值,请设置此 outflag! | |
它可以显著提高性能。 | |
PF_OutFlag_I_WRITE_INPUT_BUFFER | 效果写入输入缓冲区。 |
此功能有限;虽然节省了分配,但它会使某些管道缓存失效。在 PF_Cmd_GLOBAL_SETUP 期间设置。 | |
PF_OutFlag_I_SHRINK_BUFFER | 效果根据 extent_rect 缩小其缓冲区以提高内存效率。 |
在 PF_Cmd_GLOBAL_SETUP 期间尽可能设置。 | |
!!! 注意 | |
对于 SmartFX 已过时。 | |
PF_OutFlag_WORKS_IN_PLACE | 未使用。 |
PF_OutFlag_SQUARE_PIX_ONLY | 未使用。 |
PF_OutFlag_CUSTOM_UI | 效果具有自定义用户界面,并需要 PF_Cmd_EVENT 消息。 |
在 PF_Cmd_GLOBAL_SETUP 期间设置。 | |
PF_OutFlag_RESERVED5 | 未使用。 |
PF_OutFlag_REFRESH_UI | 刷新整个效果控件、合成和图层窗口。 |
在 PF_Cmd_EVENT、PF_Cmd_RENDER 和 PF_Cmd_DO_DIALOG 期间设置。 | |
如果在 PF_Cmd_EVENT 期间刷新自定义 UI,我们建议使用 新的重绘机制 以获得更细粒度的控制。 | |
PF_OutFlag_NOP_RENDER | 在 PF_Cmd_FRAME_SETUP 期间设置此标志以使当前渲染失效。 |
PF_OutFlag_I_USE_SHUTTER_ANGLE | 表示渲染的图像依赖于 shutter_angle 的值。 |
PF_OutFlag_I_USE_AUDIO | 效果的参数依赖于音频数据,使用 PF_CHECKOUT_LAYER_AUDIO 获取。 |
PF_OutFlag_I_AM_OBSOLETE | 效果在最初应用它的旧项目中可用,但不会出现在效果菜单中。 |
PF_OutFlag_FORCE_RERENDER | 效果进行了需要重新渲染的更改。PF_ChangeFlag_CHANGED_VALUE 也会强制重新渲染。 |
PF_OutFlag_PiPL_OVERRIDES_OUTDATA_OUTFLAGS | After Effects 将使用 PiPL outflags,并忽略在 PF_Cmd_GLOBAL_SETUP 期间设置的标志。 |
PF_OutFlag_I_HAVE_EXTERNAL_DEPENDENCIES | 效果依赖于外部文件(或外部字体)。 |
如果设置,After Effects 会发送 PF_Cmd_GET_EXTERNAL_DEPENDENCIES。 | |
PF_OutFlag_DEEP_COLOR_AWARE | 效果处理 16-bpc 颜色。 |
PF_OutFlag_SEND_UPDATE_PARAMS_UI | 在 PF_Cmd_GLOBAL_SETUP 期间设置此标志以接收 PF_Cmd_UPDATE_PARAMS_UI。 |
PF_OutFlag_AUDIO_FLOAT_ONLY | 效果需要 PF_SIGNED_FLOAT 格式的音频数据。 |
After Effects 将执行任何所需的格式转换。 | |
您还必须设置 PF_OutFlag_AUDIO_EFFECT_TOO 或 PF_OutFlag_AUDIO_EFFECT_ONLY 。 | |
PF_OutFlag_AUDIO_IIR | 如果(音频)效果是无限脉冲响应滤波器,则在 PF_Cmd_GLOBAL_SETUP 期间设置。 |
如果给定时间的输出依赖于之前时间的输出,则为真。 | |
当 IIR 滤波器收到 PF_Cmd_AUDIO_RENDER 时,输入音频时间跨度与输出音频时间跨度相同(当它们与 PF_Cmd_AUDIO_SETUP 中请求的输出时间跨度相交时)。 | |
在响应 PF_Cmd_AUDIO_SETUP 时,滤波器可以请求更早时间的音频(如延迟效果)。 | |
滤波器可以访问该更早时间的参数,并应将其(以及临时音频)缓存在序列数据中。 | |
如果生成的音频与请求的输出音频时间不对应,则应将输出音频持续时间设置为零。 | |
滤波器可以使用参数和输入音频更新其延迟线。 | |
缓存其延迟线后,在 PF_Cmd_AUDIO_SETUP 期间根据最后缓存的延迟线请求更多输入音频。使用 PF_HasParamChanged 确定您的缓存是否有效。 | |
PF_OutFlag_I_SYNTHESIZE_AUDIO | 如果效果生成音频,即使在传递静音时,则在 PF_Cmd_GLOBAL_SETUP 期间设置。 |
您还必须设置 PF_OutFlag_AUDIO_EFFECT_TOO 或 PF_OutFlag_AUDIO_EFFECT_ONLY 。 |