第一章 Adobe After Effects AE插件开发 SDK入门-AE内部结构定义(一)-版本

第一章 Adobe After Effects AE插件开发 SDK入门-AE内部结构定义(一)-版本,第1张

文章目录
    • 1.AE内部结构定义
    • 2.作者答疑

1.AE内部结构定义

  开发AE插件会使用到非常多的AE内部数据结构,先大致了解这些结构对于开发AE插件,还是非常有帮助,源代码如下所示:

//CC
#define PF_AE141_PLUG_IN_VERSION			13	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay
#define PF_AE141_PLUG_IN_SUBVERS			14	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay

#define PF_AE140_PLUG_IN_VERSION			13	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay
#define PF_AE140_PLUG_IN_SUBVERS			13	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay

#define PF_AE138_PLUG_IN_VERSION			13	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay
#define PF_AE138_PLUG_IN_SUBVERS			11	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay

// AE137 is same plugin version as AE136, below

#define PF_AE136_PLUG_IN_VERSION			13	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay
#define PF_AE136_PLUG_IN_SUBVERS			10	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay

#define PF_AE135_PLUG_IN_VERSION			13	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay
#define PF_AE135_PLUG_IN_SUBVERS			9	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay

// AE131 and AE132 are the same plugin version as AE130, below

#define PF_AE130_PLUG_IN_VERSION			13	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay
#define PF_AE130_PLUG_IN_SUBVERS			7	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay

#define PF_AE122_PLUG_IN_VERSION			13	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay
#define PF_AE122_PLUG_IN_SUBVERS			6	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay

#define PF_AE121_PLUG_IN_VERSION			13	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay
#define PF_AE121_PLUG_IN_SUBVERS			5	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit okay

#define PF_AE120_PLUG_IN_VERSION			13
#define PF_AE120_PLUG_IN_SUBVERS			4

//CS6.0.1
//Plugins have to make dummy checkout (hack) to fix W3163764 in CS6. The bug has been fixed in CS6.0.1 so increase SDK minor version 
//so that plugins can constrain the hack only for CS6.
#define PF_AE1101_PLUG_IN_VERSION			13
#define PF_AE1101_PLUG_IN_SUBVERS           3

#define PF_AE110_PLUG_IN_VERSION			13
#define PF_AE110_PLUG_IN_SUBVERS			2

#define PF_AE105_PLUG_IN_VERSION			13
#define PF_AE105_PLUG_IN_SUBVERS			1

#define PF_AE100_PLUG_IN_VERSION			13
#define PF_AE100_PLUG_IN_SUBVERS			0

#define PF_AE90_PLUG_IN_VERSION				12
#define PF_AE90_PLUG_IN_SUBVERS				14

#define PF_AE80_PLUG_IN_VERSION				12
#define PF_AE80_PLUG_IN_SUBVERS				13

#define PF_AE70_PLUG_IN_VERSION				12
#define PF_AE70_PLUG_IN_SUBVERS				12

#define PF_AE65_PLUG_IN_VERSION				12
#define PF_AE65_PLUG_IN_SUBVERS				11

#define PF_AE41_PLUG_IN_VERSION				12
#define PF_AE41_PLUG_IN_SUBVERS				2

#define PF_AE40_PLUG_IN_VERSION				12
#define PF_AE40_PLUG_IN_SUBVERS				1

#define PF_AE31_PLUG_IN_VERSION				11
#define PF_AE31_PLUG_IN_SUBVERS				6
#define PF_AE31_PLUG_IN_SUBVERS_STRICTIFY	8

#define PF_AE_PLUG_IN_VERSION				PF_AE141_PLUG_IN_VERSION	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay
#define PF_AE_PLUG_IN_SUBVERS				PF_AE141_PLUG_IN_SUBVERS	// auto-set by prep_codeline_for_release.py, adjust comment if manually edit is okay

/* Note:	AE3.1 will drive any v11.x plugin
			AE4.0 will drive any v11.x or v12.x plugin
			AE4.1 will drive any v11.x or v12.x plugin, changed current version from 12.1 -> 12.2
			
			If you use PF_AE31_PLUG_IN_VERSION, PF_AE31_PLUG_IN_SUBVERS_STRICTIFY
			or later (e.g. 11.8 or 12.0) AE4.0 will enforce new stricter rules and
			report more plug-in errors.
*/

  这一部分是版本定义,区别各种不同版本。


部分常用参数和枚举变量,代码如下:

#define PF_MAX_EFFECT_NAME_LEN				31
#define PF_MAX_EFFECT_CATEGORY_NAME_LEN		31
#define PF_MAX_EFFECT_PARAM_NAME_LEN		31
#define PF_MAX_PARAM_DESCRIPTION_LEN		31
#define PF_MAX_PARAM_VALUE_LEN				31
#define PF_MAX_EFFECT_MSG_LEN				255

// Through AE6.5, effects could only have this many parameters. Now the number is unlimited.
#define	PF_AE65_AND_EARLIER_MAX_NUM_EFFECT_PARAMS			127

#define PF_MAX_WORLD_WIDTH					30000
#define PF_MAX_WORLD_HEIGHT					30000

#define	PF_FIRST_ERR						512


/* Standard effect categories for After Effects effects modules.
 * These need to be set in the PiPL.
 */
#define PF_Category_BLUR_AND_SHARPEN	"Blur & Sharpen"
#define PF_Category_CHANNEL				"Channel"
#define PF_Category_DISTORT				"Distort"
#define PF_Category_IMAGE_CONTROL		"Image Control"
#define PF_Category_KEYING				"Keying"
#define PF_Category_PERSPECTIVE			"Perspective"
#define PF_Category_STYLIZE				"Stylize"
#define PF_Category_TEXT				"Text"
#define PF_Category_VIDEO				"Video"
#define PF_Category_TRANSITION			"Transition"
#define PF_Category_AUDIO				"Audio"
#define PF_Category_OTHER				"Other"	

enum {
	PF_Quality_DRAWING_AUDIO = -1,		// only used to inform audio plugins that the output
										// will be used to draw the waveform; the plugin should
										// not perform any filtering operations that may weaken
										// the amplitude when rendering at low sampling rates

	PF_Quality_LO = 0,					// LO & HI are sent to both audio & visual effects
	PF_Quality_HI
};
typedef A_long PF_Quality;

enum {
	PF_MF_Alpha_PREMUL 		= 0,
	PF_MF_Alpha_STRAIGHT 	= (1L << 0)
};
typedef A_long PF_ModeFlags;

#define			PF_ALPHA_PREMUL(F) 		(((F) & 0x00000001) == 0)
#define			PF_ALPHA_STRAIGHT(F)	(((F) & 0x00000001))

enum {
	PF_Field_FRAME = 0L,
	PF_Field_UPPER = 1L,
	PF_Field_LOWER = 2L
};
typedef A_long PF_Field;



/* PF_ParamType
 */
enum {
	PF_Param_RESERVED = -1,
	PF_Param_LAYER = 0,
	PF_Param_SLIDER,	/* obsolete, use PF_Param_FLOAT_SLIDER */
	PF_Param_FIX_SLIDER,/* obsolete, use PF_Param_FLOAT_SLIDER */
	PF_Param_ANGLE,
	PF_Param_CHECKBOX,
	PF_Param_COLOR,
	PF_Param_POINT,
	PF_Param_POPUP,
	PF_Param_CUSTOM,	/* obsolete */
	PF_Param_NO_DATA,	/* used for CustomUI in Effect window controls, with NO data stream */
	PF_Param_FLOAT_SLIDER,
	PF_Param_ARBITRARY_DATA,	// in AE: must combine with either PF_PUI_TOPIC/PF_PUI_CONTROL or PF_PUI_NO_ECW
								// in PPro starting with 8.0: it's OK to set none of those flags, which allows you to
								//		see the parameter's keyframe track on the right side of Effect Controls
								//		without creating a custom control
	PF_Param_PATH,
	PF_Param_GROUP_START,
	PF_Param_GROUP_END,
	PF_Param_BUTTON,			// must combine with PF_ParamFlag_SUPERVISE
	PF_Param_RESERVED2,
	PF_Param_RESERVED3,
	PF_Param_POINT_3D			// only supported by AE, not PPro
};
typedef A_long PF_ParamType;

  有些参数阈值,有些是分哪些模块,它们都是可以转换成整形的有特定意义的标志。


2.作者答疑

  如有疑问,请留言。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/580012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存