After Effects 图层属性及属性组结构详解
根据结构类型的属性分类
在 After Effects 的脚本开发中,图层的属性可被区分为三种类型:PROPERTY、INDEXED_GROUP 和 NAMED_GROUP 。通过使用app.project.item().layer().propertySpec.propertyType
可以对属性的类型进行判断。在 AEGP 插件的开发中这些类型对应为 AEGP_StreamGroupingType_LEAF 、AEGP_StreamGroupingType_INDEXED_GROUP 和 AEGP_StreamGroupingType_NAMED_GROUP,通过调用 AEGP_DynamicStreamSuite 的AEGP_GetStreamGroupingType
方法进行获取。
PROPERTY(LEAF)类型的属性为属性组中最底层的属性,即具有对应的值可供用户操作调整的属性;INDEXED_GROUP 类型的属性组中子级的名称可编辑,换言之 INDEXED_GROUP 类型的属性组中的子级是不固定的,可进行增删,如效果和蒙版都是这种类型;NAMED_GROUP 类型的属性组具有固定的子级属性,且子级属性的名称是不可更改的。
在脚本中直接输出 propertyType 时会输出一个数字,这是 ExtendScript 中定义的 PropertyType 枚举。
例如,某个图层的“变换”属性组的 propertyType 输出值如图所示,表明“变换”是一个 NAMED_GROUP 属性组。
某个文字图层的“文本”属性组下的“动画制作工具”属性组是一个 INDEXED_GROUP 属性组。
属性的可见性
在 AEGP 插件的开发中可以通过调用 AEGP_DynamicStreamSuite 的 AEGP_GetDynamicStreamFlags
方法获取属性的标志,其中具有几个值得注意的内容。AEGP_DynStreamFlag_ELIDED 标志着一个属性组始终不会将自身显示在时间轴面板中,但它的子级属性会直接显示在该属性组的父级属性组中。一个常用的例子是文本图层的“动画制作工具”:当给文本图层添加一个动画制作工具后,“文本”属性组中“动画制作工具 1”会与“源文本”、“路径选项”和“更多选项”并列显示,但实际上“动画制作工具 1”是存在于“动画制作工具”属性组中的,但由于“动画制作工具”具有 ELIDED 标志,导致“动画制作工具”不会显示在时间轴中。编写脚本时访问此类属性组中的属性需要注意。另外,在脚本中使用 app.project.item().layer().porpertySpec.elided
也能获取到某属性组是否具有 ELIDED 标志。
特定类型图层所具有的属性组是固定的,未显示在时间轴中的属性不代表它不存在,通常未被修改的属性及其属性组会被隐藏。在脚本中可以通过app.project.item().layer().porpertySpec.isModified
判断某属性在创建后是否被修改。
图层属性的结构
在脚本中图层可以当作属性组进行处理,如下图所示:
在 AEGP 插件开发中通常使用 AEGP_DynamicStreamSuite 的 AEGP_GetNewStreamRefForLayer
方法检索与图层对应的 AEGP_StreamRefH ,用于启动图层属性流的递归。亦是将图层作为属性组进行处理。
因图层是 NAMED_GROUP 类型的属性组,故其子级属性组是固定的。本文整理了AVLayer、TextLayer、ShapeLayer、CameraLayer 和 LightLayer 五类图层的属性组结构,其中包括属性的中文名称与其 MatchName 的对照。因树形图尺寸过大,以下提供 FreeMind 文件的下载链接:https://wwe.lanzoui.com/ilSn0v23p3e
若您对遍历某属性组中的属性有兴趣,也可以参考以下脚本代码:
var str = '';
var selProp = app.project.activeItem.selectedLayers[0].property("Transform");//将该变量修改为您需要遍历的属性组
var numProps = selProp.numProperties;
for(var i = 0; i < numProps; i ++){
str += selProp.property(i + 1).name + ' - ' + selProp.property(i + 1).matchName + '\n';//输出名称和 MatchName
}
alert(str);
脚本中访问属性的简介写法
在 ExtendScript 脚本中访问属性具有简洁写法,例如 .property("Transform") 也可以使用 . transform。以下提供部分对照以供查找和参考:
属性 | 简洁写法 |
---|---|
ADBE Transform Group: | 'transform', |
ADBE Anchor Point: | .pointOfInterest' 或 '.anchorPoint', |
ADBE Position: | '.position', |
ADBE Scale: | '.scale', |
ADBE Orientation: | '.orientation', |
ADBE Rotate X: | '.xRotation', |
ADBE Rotate Y: | '.yRotation', |
ADBE Rotate Z: | .zRotation' 或 '.rotation', |
ADBE Opacity: | '.opacity', |
ADBE Material Options Group: | 'materialOption', |
ADBE Casts Shadows: | '.castsShadows', |
ADBE Light Transmission: | '.lightTransmission', |
ADBE Accepts Shadows: | '.acceptsShadows', |
ADBE Accepts Lights: | '.acceptsLights', |
ADBE Ambient Coefficient: | '.ambient', |
ADBE Diffuse Coefficient: | '.diffuse', |
ADBE Specular Coefficient: | '.specular', |
ADBE Shininess Coefficient: | '.shininess', |
ADBE Metal Coefficient: | '.metal', |
ADBE Light Options Group: | 'lightOption', |
ADBE Light Intensity: | '.intensity', |
ADBE Light Color: | '.color', |
ADBE Light Cone Angle: | '.coneAngle', |
ADBE Light Cone Feather 2: | '.coneFeather', |
ADBE Light Shadow Darkness: | '.shadowDarkness', |
ADBE Light Shadow Diffusion: | '.shadowDiffusion', |
ADBE Camera Options Group: | 'cameraOption', |
ADBE Camera Zoom: | '.zoom', |
ADBE Camera Depth of Field: | '.depthOfField', |
ADBE Camera Focus Distance: | '.focusDistance', |
ADBE Camera Aperture: | '.aperture', |
ADBE Camera Blur Level: | '.blurLevel', |
ADBE Text Properties: | 'text', |
ADBE Text Document: | '.sourceText', |
ADBE Text Path Options: | '.pathOption', |
ADBE Text Path: | '.path', |
ADBE Text Reverse Path: | '.reversePath', |
ADBE Text Perpendicular To Path: | '.perpendicularToPath', |
ADBE Text Force Align Path: | '.forceAlignment', |
ADBE Text First Margin: | '.firstMargin', |
ADBE Text Last Margin: | '.lastMargin', |
ADBE Text More Options: | '.moreOption', |
ADBE Text Anchor Point Option: | '.anchorPointGrouping', |
ADBE Text Anchor Point Align: | '.groupingAlignment', |
ADBE Text Render Order: | '.fillANdStroke', |
ADBE Text Character Blend Mode: | '.interCharacterBlending', |
ADBE Text Animators: | '.animator', |
ADBE Text Selectors: | '.selector', |
ADBE Text Percent Start: | '.start', |
ADBE Text Percent End: | '.end', |
ADBE Text Percent Offset: | '.offset', |
ADBE Text Range Advanced: | '.advanced', |
ADBE Text Range Units: | '.units', |
ADBE Text Range Type2: | '.basedOn', |
ADBE Text Selector Mode: | '.mode', |
ADBE Text Range Shape: | '.shape', |
ADBE Text Selector Smoothness: | '.smoothness', |
ADBE Text Levels Max Ease: | '.easeHigh', |
ADBE Text Levels Min Ease: | '.easeLow', |
ADBE Text Randomize Order: | '.randomizeOrder', |
ADBE Text Random Seed: | '.randomSeed', |
ADBE Text Selector Mode: | '.mode', |
ADBE Text Wiggly Max Amount: | '.maxAmount', |
ADBE Text Wiggly Min Amount: | '.minAmount', |
ADBE Text Range Type2: | '.basedOn', |
ADBE Text Temporal Freq: | '.wigglesSecond', |
ADBE Text Character Correlation: | '.correlation', |
ADBE Text Temporal Phase: | '.temporalPhase', |
ADBE Text Spatial Phase: | '.spatialPhase', |
ADBE Text Wiggly Lock Dim: | '.lockDimensions', |
ADBE Text Wiggly Random Seed: | '.randomSeed', |
ADBE Text Range Type2: | '.basedOn', |
ADBE Text Expressible Amount: | '.amount', |
ADBE Text Animator Properties: | '.property', |
ADBE Text Anchor Point 3D: | '.anchorPoint', |
ADBE Text Position 3D: | '.position', |
ADBE Text Scale 3D: | '.scale', |
ADBE Text Skew: | '.skew', |
ADBE Text Skew Axis: | '.skewAxis', |
ADBE Text Rotation X: | '.xRotation', |
ADBE Text Rotation Y: | '.yRotation', |
ADBE Text Rotation: | '.zRotation', |
ADBE Text Opacity: | '.opacity', |
ADBE Text Fill Opacity: | '.fillOpacity', |
ADBE Text Fill Color: | '.fillColor', |
ADBE Text Fill Hue: | '.fillHue', |
ADBE Text Fill Saturation: | '.fillSaturation', |
ADBE Text Fill Brightness: | '.fillBrightness', |
ADBE Text Stroke Opacity: | '.strokeOpacity', |
ADBE Text Stroke Color: | '.strokeColor', |
ADBE Text Stroke Hue: | '.strokeHue', |
ADBE Text Stroke Saturation: | '.strokeSaturation', |
ADBE Text Stroke Brightness: | '.strokeBrightness', |
ADBE Text Stroke Width: | '.strokeWidth', |
ADBE Text Line Anchor: | '.lineAnchor', |
ADBE Text Line Spacing: | '.lineSpacing', |
ADBE Text Track Type: | '.trackingType', |
ADBE Text Tracking Amount: | '.trackingAmount', |
ADBE Text Character Change Type: | '.characterAlignment', |
ADBE Text Character Range: | '.characterRange', |
ADBE Text Character Replace: | '.characterValue', |
ADBE Text Character Offset: | '.characterOffset', |
ADBE Text Blur: | '.blur', |
ADBE Mask Parade: | 'mask', |
ADBE Mask Shape: | '.maskPath', |
ADBE Mask Feather: | '.maskFeather', |
ADBE Mask Opacity: | '.maskOpacity', |
ADBE Mask Offset: | '.maskExpansion', |
ADBE Effect Parade: | 'effect', |
ADBE Paint Group: | '.stroke', |
ADBE Paint Shape: | '.path', |
ADBE Paint Properties: | '.strokeOption', |
ADBE Paint Begin: | '.start', |
ADBE Paint End: | '.end', |
ADBE Paint Color: | '.color', |
ADBE Paint Diameter: | '.diameter', |
ADBE Paint Angle: | '.angle', |
ADBE Paint Hardness: | '.hardness', |
ADBE Paint Roundness: | '.roundness', |
ADBE Paint Tip Spacing: | '.spacing', |
ADBE Paint Target Channels: | '.channels', |
ADBE Paint Opacity: | '.opacity', |
ADBE Paint Flow: | '.flow', |
ADBE Paint Clone Layer: | '.cloneSource', |
ADBE Paint Clone Position: | '.clonePosition', |
ADBE Paint Clone Time: | '.cloneTime', |
ADBE Paint Clone Time Shift: | '.cloneTimeShift', |
ADBE Paint Transform: | '.transform', |
ADBE Paint Anchor Point: | '.anchorPoint', |
ADBE Paint Position: | '.position', |
ADBE Paint Scale: | '.scale', |
ADBE MTrackers: | 'motionTracker', |
ADBE MTracker Pt Feature Center: | '.featureCenter', |
ADBE MTracker Pt Feature Size: | '.featureSize', |
ADBE MTracker Pt Search Ofst: | '.searchOffset', |
ADBE MTracker Pt Search Size: | '.searchSize', |
ADBE MTracker Pt Confidence: | '.confidence', |
ADBE MTracker Pt Attach Pt: | '.attachPoint', |
ADBE MTracker Pt Attach Pt Ofst: | '.attachPointOffset', |
ADBE Audio Group: | 'audio', |
ADBE Audio Levels: | '.audioLevels', |
ADBE Time Remapping: | 'timeRemap', |
ADBE Layer Styles: | 'layerStyle', |
ADBE Blend Options Group: | '.blendingOption', |
ADBE Global Angle2: | ADBE Global Angle2: |
ADBE Global Altitude2: | '.globalLightAltitude', |
ADBE Adv Blend Group: | '.advancedBlending', |
ADBE Layer Fill Opacity2: | '.fillOpacity', |
ADBE R Channel Blend: | '.red', |
ADBE G Channel Blend: | '.green', |
ADBE B Channel Blend: | '.blue', |
ADBE Blend Interior: | '.blendInteriorStylesAsGroup', |
ADBE Blend Ranges: | '.useBlendRangesFromSource', |
dropShadow/enabled: | '.dropShadow', |
dropShadow/mode2: | '.blendMode', |
dropShadow/color: | '.color', |
dropShadow/opacity: | '.opacity', |
dropShadow/useGlobalAngle: | '.useGlobalLight', |
dropShadow/localLightingAngle: | '.angle', |
dropShadow/distance: | '.distance', |
dropShadow/chokeMatte: | '.spread', |
dropShadow/blur: | '.size', |
dropShadow/noise: | '.noise', |
dropShadow/layerConceals: | '.layerKnocksOutDropShadow', |
innerShadow/enabled: | '.innerShadow', |
innerShadow/mode2: | '.blendMode', |
innerShadow/color: | '.color', |
innerShadow/opacity: | '.opacity', |
innerShadow/useGlobalAngle: | '.useGlobalLight', |
innerShadow/localLightingAngle: | '.angle', |
innerShadow/distance: | '.distance', |
innerShadow/chokeMatte: | '.choke', |
innerShadow/blur: | '.size', |
innerShadow/noise: | '.noise', |
outerGlow/enabled: | '.outerGlow', |
outerGlow/mode2: | '.blendMode', |
outerGlow/opacity: | '.opacity', |
outerGlow/noise: | '.noise', |
outerGlow/AEColorChoice: | '.colorType', |
outerGlow/color: | '.color', |
outerGlow/gradientSmoothness: | '.gradientSmoothness', |
outerGlow/glowTechnique: | '.technique', |
outerGlow/chokeMatte: | '.spread', |
outerGlow/blur: | '.size', |
outerGlow/inputRange: | '.range', |
outerGlow/shadingNoise: | '.jitter', |
innerGlow/enabled: | '.innerGlow', |
innerGlow/mode2: | '.blendMode', |
innerGlow/opacity: | '.opacity', |
innerGlow/noise: | '.noise', |
innerGlow/AEColorChoice: | '.colorType', |
innerGlow/color: | '.color', |
innerGlow/gradientSmoothness: | '.gradientSmoothness', |
innerGlow/glowTechnique: | '.technique', |
innerGlow/innerGlowSource: | '.source', |
innerGlow/chokeMatte: | '.choke', |
innerGlow/blur: | '.size', |
innerGlow/inputRange: | '.range', |
innerGlow/shadingNoise: | '.jitter', |
bevelEmboss/enabled: | '.bevelAndEmboss', |
bevelEmboss/bevelStyle: | '.style', |
bevelEmboss/bevelTechnique: | '.technique', |
bevelEmboss/strengthRatio: | '.depth', |
bevelEmboss/bevelDirection: | '.direction', |
bevelEmboss/blur: | '.size', |
bevelEmboss/softness: | '.soften', |
bevelEmboss/useGlobalAngle: | '.useGlobalLight', |
bevelEmboss/localLightingAngle: | '.angle', |
bevelEmboss/localLightingAltitude: | '.altitude', |
bevelEmboss/highlightMode: | '.highlightMode', |
bevelEmboss/highlightColor: | '.highlightColor', |
bevelEmboss/highlightOpacity: | '.highlightOpacity', |
bevelEmboss/shadowMode: | '.shadowMode', |
bevelEmboss/shadowColor: | '.opacity', |
innerGlow/opacity: | '.shadowColor', |
bevelEmboss/shadowOpacity: | '.shadowOpacity', |
chromeFX/enabled: | '.satin', |
chromeFX/mode2: | '.blendMode', |
chromeFX/color: | '.color', |
chromeFX/opacity: | '.opacity', |
chromeFX/localLightingAngle: | '.angle', |
chromeFX/distance: | '.distance', |
chromeFX/blur: | '.size', |
chromeFX/invert: | '.invert', |
solidFill/enabled: | '.colorOverlay', |
solidFill/mode2: | '.blendMode', |
solidFill/color: | '.color', |
solidFill/opacity: | '.opacity', |
gradientFill/enabled: | '.gradientOverlay', |
gradientFill/mode2: | '.blendMode', |
gradientFill/opacity: | '.opacity', |
gradientFill/gradientSmoothness: | '.gradientSmoothness', |
gradientFill/angle: | '.angle', |
gradientFill/type: | '.style', |
gradientFill/reverse: | '.reverse', |
gradientFill/align: | '.alignWithLayer', |
gradientFill/scale: | '.scale', |
gradientFill/offset: | '.offset', |
patternFill/enabled: | '.patternOverlay', |
patternFill/mode2: | '.blendMode', |
patternFill/opacity: | '.linkWithLayer', |
patternFill/align: | '.scale', |
patternFill/scale: | '.opacity', |
patternFill/phase: | '.offset', |
frameFX/enabled: | '.blendMode', |
frameFX/color: | '.color', |
frameFX/size: | '.size', |
frameFX/opacity: | '.opacity', |
innerGlow/opacity: | '.opacity', |
innerGlow/opacity: | '.opacity', |
frameFX/style: | '.position', |
After Effects 图层属性及属性组结构详解的更多相关文章
- Maven配置文件POM属性最全详解
注:本文内容来源于: BlueKitty1210 <Maven配置文件POM属性最全详解> <project xmlns="http://maven.apache.org/ ...
- moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解
☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>和<moviepy音视频剪辑:moviepy中的剪辑基类Cl ...
- Linux文件系统的目录结构详解
Linux文件系统的目录结构详解 一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件 ...
- web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 规范 HTML结构详解 {前端之前端初识}
前端之前端初识 前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...
- JS函数动作分层结构详解及Document.getElementById 释义 js及cs数据类型区别 事件 函数 变量 script标签 var function
html +css 静态页面 js 动态 交互 原理: js就是修改样式, 比如弹出一个对话框. 弹出的过程就是这个框由disable 变成display:enable. 又或者当鼠标指向 ...
- OpenCV-Mat结构详解
前面博客中Mat函数谈到一些理解,但是理解的比较浅显,下面谈谈通道,行列等意义: Mat的常见属性 opencv中type类型· CV_<bit_depth>(S|U|F)C<num ...
- JVM结构详解
JVM 结构详解 JVM 结构图 程序计数器(PC 寄存器) 程序计数器的定义 程序计数器是一块较小的内存空间,是当前线程正在执行的那条字节码指令的地址.若当前线程正在执行的是一个本地方法,那么此时程 ...
- Netsuite Formula > Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt
PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 ...
- BS模式的模型结构详解
编号:1004时间:2016年4月12日16:59:17功能:BS模式的模型结构详解 URL:http://blog.csdn.net/icerock2000/article/details/4000 ...
随机推荐
- 关于Typora的使用
关于Typora的使用 今天介绍一个做笔记用的一款markdown编辑器,用了之后,顺利被圈粉: Typora,美观小众,可用性强! 和传统的markdown编辑器不一样,传统的markdown编辑器 ...
- 在ubuntu18.04上部署项目时遇到的问题总结
因为在实验室中,有几台空闲的机子,我便选了一台准备做一个本地的服务器,因为买的阿里云学生机和之前用于FQ的机子感觉都不太顺手,阿里的学生机配置稍低,FQ用的服务器延迟太高.开始在centos和ubun ...
- CNN的Pytorch实现(LeNet)
CNN的Pytorch实现(LeNet) 上次写了一篇CNN的详解,可是累坏了老僧我.写完后拿给朋友看,朋友说你这Pytorch的实现方式对于新人来讲会很不友好,然后反问我说里面所有的细节你都明白 ...
- 【Qt pro 文件配置】
一.默认配置 默认的pro文件配置如下: 如果采用Qt默认的pro配置,其编译后产生的文件会默认集中分布在debug和release目录下,如下图的obj和moc等文件对后续打包发布并没有意义. 二. ...
- 文件权限的管理以及acl权限列表
ls -l? 文件名称 上面的命令以长格式显示文件与目录,每一行都是一个文件或目录的属性数据,每个文件或子目录的属性数据又以7个字段显示,各个字段的说明如下: (1)文件类型与权限:该字段共有10个字 ...
- Python面向对象编程及内置方法
在程序开发中,要设计一个类,通常需要满足以下三个要求: [1]类名 这类事物的名字,满足大驼峰命名法 [2]属性 这类事物具有什么样的特征 [3]方法 这类事物具有什么样的行为 定义简单的类: 定义只 ...
- Mybatis-Plus - 条件构造器 QueryWrapper 的使用
目录 前言 查询示例 基础代码 QueryWrapper 的基本使用 QueryWrapper 的lambada写法 LambadaQueryWrapper 的使用 LambdaQueryChainW ...
- Tars | 第5篇 基于TarsGo Subset路由规则的Java JDK实现方式(上)
目录 前言 1. 修改.tars协议文件 1.1 Go语言修改部分 1.2 修改地方的逻辑 1.3 通过协议文件自动生成代码 2. [核心]增添Subset核心功能 2.1 Go语言修改部分 2.2 ...
- Dubbo No provider问题排查思路
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 不想看字的同学可直接划到底部查看思维导图 问题分析 使用过Dubbo的朋友很多都碰到过如下报错 ...
- RSA及其证明 [原创]
描述RSA的实现步骤介绍文章非常多,但说明并证明其原理,并进而讨论为什么这样设计的文章不多.本人才疏学浅,不敢说理解了R.S.A.三位泰斗的设计初衷,简单就自己的理解写一写,博大家一笑. 以下原创内容 ...