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 ...
随机推荐
- Java程序设计学习笔记(一)
时间:2015-6-2 23:04 程序员,程序猿,程序媛,码农 ------------------------------------------------------- --Java的应用 ...
- Jsoup学习笔记
时间:2016-7-7 00:05 jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuer ...
- Spring Data JPA:解析CriteriaBuilder
源码 在Spring Data JPA相关的文章[地址]中提到了有哪几种方式可以构建Specification的实例,该处需要借助CriteriaBuilder,回顾一下Specification中t ...
- Golang gomail 发送邮件 --初使用
gomail是一个第三方库,可以发送邮件 安装:go get -u github.com/go-gomail/gomail 使用示例: m := gomail.NewMessage() m.SetHe ...
- Spring系列之事物是如何管理的
前言 我们都知道Spring给我们提供了很多抽象,比如我们在操作数据库的过程中,它为我们提供了事物方面的抽象,让我们可以非常方便的以事物方式操作数据库.不管你用JDBC.Mybatis.Hiberna ...
- linux centos7 控制台下的一些操作
2021-08-20一. 快捷键1. Ctrl+d 退出当前用户2. Ctrl+Insert 复制3. Shift+Insert 粘贴4. Ctrl+l 清屏二. 基础命令1 ...
- Linux下查看哪个网口插了网线
场景: 一台服务器有多个网卡,一个网卡有多个网口,当插了一根网线的时候,不知道网线是插在哪一个网口. 1.查看网口信息 2.查看网口是否插了网线(命令ethtool) 命令:ethtool + 网口名 ...
- 博主有偿带徒 《编程语言设计和实现》《MUD游戏开发》《软件破解和加密》《游戏辅助外挂》《JAVA开发》
<考研专题>操作系统原理 理论解答:8K 实战 1.5W CPU设计 理论解答:1W 实战 2.5W <编程语言设计和实现>初窥门径<5K>:编译原理.编译设计小试 ...
- noip模拟测试52
这套题总体来说比较简单,但是有一些分数我没有拿到,先说T1,我10分钟左右打完了60分的暴力,然后就开始打表找规律,好像只有我去找了循环节,找规律找了一个多小时,到八点四十的时候我还没有正解做法,就直 ...
- 三剑客之awk 逐行读取
目录: 一.awk工作原理 二.按行输出文本 三.按字段输出文本 四.通过管道,双引号调用shall命令 五.CPU使用率 六.使用awk 统计 httpd 访问日志中每个客户端IP的出现次数 一.a ...