AV Layer
AVLayer
¶
Bases: Layer
The AVLayer object provides an interface to those layers that contain
AVItem objects (composition layers, footage layers, solid layers, text
layers and sound layers).
Example
Info
AVLayer is a subclass of Layer object. All methods and attributes
of Layer are available when working with AVLayer.
Info
AVLayer is a base class for TextLayer object, so AVLayer
attributes and methods are available when working with TextLayer
objects.
See: https://ae-scripting.docsforadobe.dev/layer/avlayer/
Attributes¶
active
¶
active: bool
When True, the layer is active at the current time.
Overrides PropertyBase.active to evaluate active_at_time at time.
adjustment_layer
¶
When True, the layer is an adjustment layer. Read / Write.
audio_active
¶
audio_active: bool
True if the layer's audio is active at the current time.
For this to be True, audio_enabled must be True,
has_audio must be True, no other layer with audio may be
soloing unless this layer is also soloed, and the current
time must be between in_point and out_point.
Read-only.
audio_enabled
¶
When True, the layer's audio is enabled. This value corresponds
to the audio toggle switch in the Timeline panel. Read / Write.
auto_orient
¶
auto_orient = enum(AutoOrientType, '_ldta', 'auto_orient')
The type of automatic orientation to perform for the layer. Read / Write.
can_set_collapse_transformation
¶
can_set_collapse_transformation: bool
True if it is possible to set the
collapse_transformation value.
Returns True for pre-composition layers and solid layers.
Read-only.
can_set_enabled
¶
can_set_enabled: bool
True if the enabled attribute value can be set.
This is True for all layers, effect property groups, shape
vector groups, text path options, and the Layer Styles group
and its individual styles. Read-only.
can_set_time_remap_enabled
¶
can_set_time_remap_enabled: bool
True if it is possible to enable time remapping on this layer.
Time remapping can be enabled when the layer's source has a non-zero duration (i.e. it is not a still image or text layer). Read-only.
collapse_transformation
¶
collapse_transformation = bool(
"_ldta",
"collapse_transformation",
validate=_validate_collapse_transformation,
)
True if collapse transformation is on for this layer.
Read / Write.
effects
¶
effects: PropertyGroup | None
Contains a layer's effects.
This is the Effects PropertyGroup (match name ADBE Effect Parade).
Each child in properties is itself a
PropertyGroup representing one effect.
Like ExtendScript's layer.property("Effects"), the group is
returned even when it is empty, so the first effect can be added
with layer.effects.add_property(...). An empty group is falsy,
so if layer.effects: still means "has effects".
None on CameraLayer and LightLayer, the only layer kinds
AE gives no Effects group; every other layer kind always has one.
effects_active
¶
True if the layer's effects are active, as indicated by the
elided
¶
elided: bool
When True, the property is not shown in the UI. An elided
property is still present in the timeline but hidden from view.
Read-only.
enabled
¶
When True, the layer is enabled. Overrides PropertyBase.enabled
to read from the ldta chunk. Read / Write.
environment_layer
¶
True if this is an environment layer in a Ray-traced 3D
composition. Setting this to True automatically sets
three_d_layer to True. Read / Write.
essential_property_controllers
¶
essential_property_controllers: list[
EssentialGraphicsController
]
The source composition's Essential Graphics controllers that this precomp layer's Essential Properties overrides reference.
Each entry corresponds to a UUID in essential_property_uuids (same
order), resolved against the source comp's
motion_graphics_controllers by shared UUID. Empty for a non-precomp
layer, a source comp with no controllers, or a layer with no
overrides. Read-only.
essential_property_uuids
¶
UUIDs of Essential Properties overrides on this layer.
Each UUID corresponds to an EssentialGraphicsController in the source composition's Essential Graphics panel.
frame_blending_type
¶
frame_blending_type = enum(
FrameBlendingType, "_ldta", "frame_blending_type"
)
The type of frame blending for the layer. Read / Write.
frame_in_point
¶
frame_in_point: int
The "in" point of the layer, expressed in composition time (frames). Read / Write.
frame_out_point
¶
frame_out_point: int
The "out" point of the layer, expressed in composition time (frames). Read / Write.
frame_start_time
¶
frame_start_time: int
The start time of the layer, expressed in composition time (frames). Read / Write.
frame_time
¶
frame_time: int
The current time of the layer, expressed in composition time (frames). Read-only.
guide_layer
¶
True if the layer is a guide layer. Read / Write.
has_track_matte
¶
has_track_matte: bool
True if this layer has track matte. When true, this layer's track_matte_type
value controls how the matte is applied. Read-only.
has_video
¶
has_video: bool
True if the layer has a video component. An AVLayer has video
when its source has video, or when the layer has no external source
(text and shape layers always render video). Read-only.
height
¶
height: int
The height of the layer in pixels.
Returns the source item's height if available, otherwise falls back to the containing composition's height (matches ExtendScript behavior for source-less layers like text and shape layers). Read-only.
id
¶
id = ChunkField[int]('_ldta', 'layer_id', read_only=True)
Unique and persistent identification number used internally to identify a Layer between sessions. Read-only.
in_point
¶
in_point: float
The "in" point of the layer, expressed in composition time
(seconds). Clamped to start_time for non-still footage layers.
Read / Write.
On a time-reversed layer the in point is the later end, and sits
|stretch| / 100 / 3000 s before the start time (1.2995 s for a
-150 % layer starting at 1.3 s), as After Effects reports it.
index
¶
index: int
The 0-based index position of the layer in its containing comp.
Warning
Unlike ExtendScript (1-based), this uses Python's 0-based
convention so that comp.layers[layer.index] works directly.
is_modified
¶
is_modified: bool
True if any child property is modified.
For indexed groups (such as Effects or Masks parades), the group is considered modified when it has any children - adding items to an indexed group is itself a modification. Shape vector groups (value) follow the same rule.
is_name_from_source
¶
is_name_from_source: bool
True if the layer has no expressly set name, but contains a named source.
In this case, layer.name has the same value as layer.source.name. False if the layer has an expressly set name, or if the layer does not have a source. Read-only.
label
¶
label = enum(Label, '_ldta', 'label')
The label color. Colors are represented by their number (0 for None, or 1 to 16 for one of the preset colors in the Labels preferences). Read / Write.
layer_type
¶
layer_type: str
The type of layer. Matches ExtendScript layerType values:
"AVLayer", "LightLayer", "CameraLayer",
"ParametricMeshLayer", or "Layer". Read-only.
locked
¶
When True, the layer is locked. This corresponds to the lock toggle
in the Layer panel. Read / Write.
marker
¶
marker: Property | None
The layer's marker property.
A Property with
match_name="ADBE Marker" whose keyframes hold marker values.
None when the layer has no markers.
markers
¶
markers: list[MarkerValue]
A flat list of MarkerValue objects for this layer.
Shortcut for accessing marker data without navigating the property tree. Returns an empty list when the layer has no markers.
masks
¶
masks: PropertyGroup | None
Contains a layer's masks.
This is the Masks PropertyGroup (match name ADBE Mask Parade).
Each child in properties is itself a
PropertyGroup representing one mask.
Like effects, the group is returned even when it is empty (an
empty group is falsy), and is None only on CameraLayer and
LightLayer, which AE gives no Masks group.
match_name
¶
match_name: str
A special name for the property used to build unique naming paths. The match name is not displayed, but you can refer to it in scripts. Every property has a unique match-name identifier. Read-only.
motion_blur
¶
True if motion blur is enabled for the layer. Read / Write.
null_layer
¶
null_layer = ChunkField[bool](
"_ldta", "null_layer", read_only=True
)
When True, the layer was created as a null object. Read-only.
num_properties
¶
num_properties: int
The number of child properties in this group.
Equivalent to ExtendScript PropertyGroup.numProperties.
out_point
¶
out_point: float
The "out" point of the layer, expressed in composition time
(seconds). Clamped to start_time + source.duration * stretch for
non-still footage layers without time remapping. Read / Write.
On a time-reversed layer the out point is the earlier end (see in_point).
parent
¶
parent: Layer | None
The parent of this layer; can be None.
Offset values are calculated to counterbalance any transforms above this layer in the hierarchy, so that when you set the parent there is no apparent jump in the layer's transform.
For example, if the new parent has a rotation of 30 degrees, the child layer is assigned a rotation of -30 degrees.
Like After Effects, the offsets are computed from the transforms at the composition's current time, and a parent scaled to 0 is set without any offset.
To set the parent without changing the child layer's transform values, use the set_parent_with_jump method.
Read / Write.
parent_property
¶
parent_property: PropertyGroup | None
The parent PropertyGroup of this property, or None for
top-level layer property groups. Read-only.
preserve_transparency
¶
True if preserve transparency is enabled for the layer.
Read / Write.
properties
¶
properties: list[Property | PropertyGroup]
List of properties in this group. Read-only.
property_depth
¶
property_depth: int
The number of levels of parent groups between this property and the containing layer. The value is 0 for a layer. Read-only.
property_index
¶
property_index: int | None
The 0-based position of this property within its parent group.
Returns None for layers (property depth 0).
Warning
Unlike ExtendScript (1-based), this uses Python's 0-based
convention so that group.properties[prop.property_index]
works directly.
Read-only.
property_type
¶
property_type: PropertyType
The type of this property. One of PropertyType.PROPERTY,
PropertyType.NAMED_GROUP, or PropertyType.INDEXED_GROUP.
Read-only.
quality
¶
quality = enum(LayerQuality, '_ldta', 'quality')
The layer's draft quality setting. Read / Write.
sampling_quality
¶
sampling_quality = enum(
LayerSamplingQuality,
"_ldta",
"sampling_quality",
min_version=12,
)
The layer's sampling method. Read / Write.
selected
¶
selected: bool
When True, the property is selected. Read / Write.
Note
Property selection is stored in the .aep binary format but very complex.
Parsed projects report False for now.
shy
¶
When True, the layer is "shy", meaning that it is hidden in the
Layer panel if the composition's "Hide all shy layers" option is
toggled on. Read / Write.
start_time
¶
start_time: float
The start time of the layer, expressed in composition time (seconds). Read / Write.
Writing snaps the time to the nearest tick of the layer's own timebase (see stretch), a tie rounding up, as After Effects does: on AE 2026, 1.3 s on a 24 fps layer reads back as 1.3000081 s (31949 / 24576) and on a 150 % one as 1.2999946 s (47923 / 36864). A later stretch change leaves the stored start alone.
stretch
¶
stretch: float
The layer's time stretch, expressed as a percentage. A value of 100 means no stretch. Values between 0 and 1 are set to 1, and values between -1 and 0 (not including 0) are set to -1. Read / Write.
Writing also rescales every keyframe on the layer. A layer counts its
keyframe ticks against its own timebase,
comp internal_timebase * max(1, |stretch| / 100) (at most 115200
ticks a second), so stretching it
while leaving the counts alone would halve or double each keyframe's
position in LAYER time. After Effects keeps them fixed there and
rescales the counts (measured on AE 2026: a key at layer-second 1 on
a 24 fps comp holds 24576 ticks, and 49152 after the layer is
stretched to 200 %, where its composition time becomes 2 s).
The stretch is stored as AE writes it, a float32 of the percentage / 100: 133.33 reads back as 133.32999944686890. A value under 1 (0 included) becomes the smallest stretch AE stores, 655 / 65536, which reads back as 0.99945068359375 (with the sign of a negative value), as on AE 2026. AE refuses more than 9900 % from a script but opens a file holding 1000000 %; py_aep accepts any stretch the file's signed 32-bit ratio can hold.
text
¶
text: PropertyGroup | None
Contains a layer's text properties.
This is the Text PropertyGroup (match name ADBE Text Properties),
holding Source Text, Path Options, More Options and the Animators.
None on every layer that is not a TextLayer: unlike
effects and masks, this group is never synthesized for
other layer kinds because AE does not expose it on them.
three_d_layer
¶
True if this layer is a 3D layer. Setting this to True
automatically sets environment_layer to False.
Read / Write.
three_d_per_char
¶
True if this layer has the Enable Per-character 3D switch set,
allowing its characters to be animated off the plane of the text
layer. Applies only to text layers. Read / Write.
time
¶
time: float
The current time of the layer, expressed in composition time (seconds). Read-only.
time_remap_enabled
¶
time_remap_enabled: bool
True if time remapping is enabled for this layer. Read / Write.
track_matte_layer
¶
track_matte_layer: AVLayer | None
The track matte layer for this layer. Returns None if this layer has no
track matte layer. Read-only.
track_matte_type
¶
track_matte_type: TrackMatteType
Specifies the way the track matte is applied.
Setting TrackMatteType.NO_TRACK_MATTE removes the track matte
for this layer and resets the matte layer reference.
Note
This functionality was updated in After Effects 23.0.
Warning
This is a legacy API. Consider using set_track_matte and remove_track_matte instead.
Read / Write.
transform
¶
transform: PropertyGroup
Contains a layer's transform properties.
This is the Transform PropertyGroup (match name
ADBE Transform Group). Individual transform properties (Position,
Scale, Rotation, etc.) are accessible via
properties.
width
¶
width: int
The width of the layer in pixels.
Returns the source item's width if available, otherwise falls back to the containing composition's width (matches ExtendScript behavior for source-less layers like text and shape layers). Read-only.
Functions¶
active_at_time
¶
Return whether the layer is active at the given time.
For this method to return True, three conditions must be met:
- The layer must be
enabled. - No other layer in the containing_comp may be soloed unless this layer is also solo.
timemust fall between in_point (inclusive) and out_point (exclusive).
Parameters:
-
time(float) –The time in seconds.
add_property
¶
add_property(name: str) -> Property | PropertyGroup
Create and return a new property with the specified name, and add it to this group.
Indexed groups (and, as a named-group exception, the text
animator Properties pool) support adding properties; see
can_add_property. Accepted names cover every ExtendScript
addable family: mask atoms (ADBE Mask Atom / Mask), the
expression controls including the Dropdown Menu Control (e.g.
ADBE Slider Control / Slider Control, ADBE Dropdown
Control), shape elements on a contents group (e.g.
ADBE Vector Shape - Rect, ADBE Vector Group), text
selectors (e.g. ADBE Text Selector / Range Selector), text
animators (ADBE Text Animator / Animator), and animator
properties from the fixed pool (e.g. ADBE Text Position 3D /
Position).
Note
Unlike ExtendScript, adding a property does not invalidate existing references to the group's other properties.
Parameters:
-
name(str) –The display name or match name of the property to add.
Raises:
-
ValueError–If a property with this name cannot be added to this group.
add_to_motion_graphics_template
¶
Add this layer to comp's Essential Graphics panel as a Media
Replacement controller, named after the layer.
Returns True on success, or False when the layer cannot be
added (see can_add_to_motion_graphics_template).
Parameters:
-
comp(CompItem) –The composition to add the layer to.
add_to_motion_graphics_template_as
¶
Add this layer to comp's Essential Graphics panel as a Media
Replacement controller with an explicit name.
Returns True on success, or False when the layer cannot be
added (see can_add_to_motion_graphics_template).
Parameters:
add_variable_font_axis
¶
Create and return a Property for a variable font axis, and add it to this group.
Mirrors ExtendScript PropertyGroup.addVariableFontAxis(). Can
only be called on the ADBE Text Animator Properties group
within a text animator. The axis binds to the first free of the
8 ADBE Text VF Axis slots; calling it again with an already
active tag returns the existing property.
The axis bounds, default value, and display name are read from
the variable font file with fontTools (After Effects reads them
from the installed font; the project file does not store a font
path). Pass font_file explicitly, or leave it None to locate
the installed font from the text document's font family.
Note
This functionality was added in After Effects 26.0.
Parameters:
-
axis_tag(str) –The 4-character tag identifying the variable font axis (e.g.
wght,wdth,slnt,ital,opsz). -
font_file(str | None, default:None) –Optional path to the variable font file. When
None, the font is located in the OS font directories by the text document's font family.
Raises:
-
ValueError–If this group is not a text animator Properties group, the font cannot be located or is not a variable font,
axis_tagis not one of the font's axes, or all 8 axis slots are in use.
audio_active_at_time
¶
Return whether the layer's audio is active at the given time.
For this method to return True, four conditions must be met:
- has_audio must be
True. - audio_enabled must be
True. - No other layer with audio in the containing_comp may be soloed unless this layer is also soloed.
- time must fall between in_point (inclusive) and out_point (exclusive).
Parameters:
-
time(float) –The time in seconds.
calculate_transform_from_points
¶
calculate_transform_from_points(
point_top_left: list[float],
point_top_right: list[float],
point_bottom_left: list[float],
) -> dict[str, Any]
Calculates a transformation from a set of points in this layer.
A pure function of the three points and the layer's source
dimensions - the current transform is ignored (verified against
AE 2026). Shear between the axes is absorbed into
scale[2] = 100 * sin(angle), and mirrored point sets come out as
180-degree rotation combinations rather than negative scale.
Note
The AE Scripting Guide names the third parameter
pointBottomRight, but After Effects treats it as the
BOTTOM-LEFT corner (the guide's own example passes bl);
py_aep names it accordingly.
Parameters:
-
point_top_left(list[float]) –[x, y, z]comp-space position of the source's top-left corner. -
point_top_right(list[float]) –[x, y, z]position of the top-right corner. -
point_bottom_left(list[float]) –[x, y, z]position of the bottom-left corner.
Returns:
-
dict[str, Any]–A dict of transform property values (
anchor_point, -
dict[str, Any]–position,x_rotation,y_rotation,z_rotation, -
dict[str, Any]–scale), assignable to the matching transform properties.
Raises:
-
ValueError–If the points are coincident or collinear.
can_add_property
¶
Check whether a property with the given name can be added.
Returns True if this group is an indexed group and name is
a valid match name or display name for the group type. For the
Effect Parade, the expression controls py_aep can create plus
any effect already defined in the project (LIST:EfdG) are
accepted.
Parameters:
-
name(str) –A match name or display name to check.
can_add_to_motion_graphics_template
¶
Test whether this layer can be added to comp's Essential Graphics
panel as a Media Replacement.
The layer must be a Media Replacement layer (has video, not an
adjustment or null layer, and its source is a footage or comp item
that is not a solid), must be in comp, and must not already be
exposed.
Parameters:
-
comp(CompItem) –The composition whose Essential Graphics panel to test.
comp_point_to_source
¶
Converts composition coordinates, such as sourcePointToComp,
to layer coordinates.
The layer's transform chain (parenting included) is evaluated at
the composition's current time - like After Effects,
which uses the playhead position stored in the file; pass time
to evaluate at another time (py_aep extension). For a 3D layer the
comp point is cast as a ray from the ACTIVE camera (the front-most
enabled camera layer active at that time, else AE's default comp
camera) and intersected with the layer's plane - unlike
sourcePointToComp(), this direction IS camera-dependent
(verified against AE 2026). The camera is placed by its own parent
chain. Transform values are read before expressions, as in
source_point_to_comp.
Parameters:
-
point(list[float]) –A position array of
[x, y]composition coordinates. -
time(float | None, default:None) –Composition time in seconds (py_aep extension; defaults to the comp's current time).
Returns:
Raises:
-
NotImplementedError–If a layer in the parent chain uses an auto-orientation the transform math does not model (see
resolvers.transform.build_world_matrix). -
ValueError–If the camera ray does not reach the layer plane going forward - it is parallel to the plane, or the layer is at or behind the camera. After Effects returns a literal
[0, 0]for these; py_aep raises instead, because that sentinel cannot be told apart from a real result. Also when the layer plane is degenerate (an X or Y scale of 0) or the result overflows a float.
copy_to_comp
¶
Copy this layer into a composition, as After Effects'
copyToComp() does.
The copy is placed at the top of the target layer stack. Its parent is cleared and its transform rewritten so it keeps its place (the parent's transform at time 0 is baked in, whatever the playhead), and the layers its effects reference are cleared - also when the target is this layer's own containing_comp (use duplicate to keep them). Into another composition the track matte and an environment light's source are cleared too, and keyframe and marker times are kept in seconds whatever the target's frame rate (measured on AE 2026).
Parameters:
Returns: The newly created Layer in the target composition.
move_after
¶
move_after(layer: Layer) -> None
Moves this layer to a position immediately after (below) the specified layer.
Parameters:
-
layer(Layer) –The target layer in the same composition.
move_before
¶
move_before(layer: Layer) -> None
Moves this layer to a position immediately before (above) the specified layer.
Parameters:
-
layer(Layer) –The target layer in the same composition.
move_to
¶
move_to(new_index: int) -> None
Move this property to a new 0-based index within its parent group.
Only valid for children of indexed groups.
Parameters:
-
new_index(int) –The target 0-based position.
Raises:
-
ValueError–If this property is not in an indexed group.
-
IndexError–If
new_indexis out of range.
move_to_beginning
¶
Moves this layer to the topmost position of the composition.
property
¶
property(key: int | str) -> Property | PropertyGroup
remove
¶
Deletes this layer from the composition.
Layers that reference this layer as a parent become unparented (their transforms are recalculated to preserve world-space appearance). AVLayers that use this layer as a track matte lose their matte reference.
remove_all_keys
¶
Remove every keyframe from all properties in this group, recursively.
Calling this on a Layer clears the keyframes of every
property on the layer, including its marker keyframes. Each
animated property reverts to a static value; see
Property.remove_all_keys.
remove_all_markers
¶
Remove all markers from this layer.
A no-op when the layer has no markers.
remove_track_matte
¶
Remove the track matte layer reference.
The track_matte_type value is preserved. To also reset
it, assign TrackMatteType.NO_TRACK_MATTE separately.
Note
Requires AE 23.0+ file format.
Raises:
-
AttributeError–If the file predates AE 23.0.
replace_source
¶
Replace the source item for this layer.
Warning
Contrary to ExtendScript, if this method is performed
on a null layer, the layer's null_layer attribute
changes to False, making the layer visible
in comp viewer and renders.
Parameters:
-
new_source(AVItem) –The new source AVItem.
-
fix_expressions(bool, default:False) –Update expressions that reference the old source name. Not yet implemented.
Raises:
-
NotImplementedError–If
fix_expressionsisTrue. -
ValueError–If the layer has no source (e.g. shape or text layers), if
new_sourceis not in the project, ifnew_sourcewould create a composition cycle, or if the layer is a 3D model layer.
set_parent_with_jump
¶
set_parent_with_jump(new_parent: Layer | None) -> None
Sets the parent of this layer to the specified layer, without changing the transform values of the child layer.
There may be an apparent jump in the rotation, translation, or scale of the child layer, as this layer's transform values are combined with those of its ancestors.
If you do not want the child layer to jump, set the parent attribute directly. In this case, an offset is calculated and set in the child layer's transform fields, to prevent the jump from occurring.
Parameters:
-
new_parent(Layer | None) –The new parent layer, or
Noneto unparent.
Raises:
-
ValueError–If
new_parentis this layer itself, one of its descendants, or a layer in another composition.
set_track_matte
¶
set_track_matte(
track_matte_layer: AVLayer | None,
track_matte_type: TrackMatteType | int,
) -> None
Sets the track matte layer and type for this layer.
Passing in None to track_matte_layer parameter removes
the track matte. See [remove_track_matte] for another way
of removing track matte.
Note
Requires AE 23.0+ file format.
Parameters:
-
track_matte_layer(AVLayer | None) –The layer to use as a track matte, or
Noneto remove the track matte. -
track_matte_type(TrackMatteType | int) –The TrackMatteType to apply. Passing
NO_TRACK_MATTEwith a non-Nonelayer is a no-op.
Raises:
-
AttributeError–If the file predates AE 23.0.
-
ValueError–If
track_matte_layerbelongs to a different composition.
source_point_to_comp
¶
Converts layer coordinates, such as boxTextPos, to composition
coordinates.
The layer's transform chain (parenting included) is evaluated at
the composition's current time - like After Effects,
which uses the playhead position stored in the file; pass time
to evaluate at another time (py_aep extension). 3D layers project
through AE's DEFAULT comp camera: sourcePointToComp() is
camera-independent (verified against AE 2026 across one-node,
two-node and keyframed-zoom rigs). A 2D layer ignores the
out-of-plane part of 3D ancestors, as After Effects does.
Transform values are read before expressions: a layer whose transform chain is driven by expressions converts with the values the expressions replace, where After Effects uses their results.
Parameters:
-
point(list[float]) –A position array of
[x, y]layer coordinates. -
time(float | None, default:None) –Composition time in seconds (py_aep extension; defaults to the comp's current time).
Returns:
Raises:
-
NotImplementedError–If a layer in the parent chain uses an auto-orientation the transform math does not model (see
resolvers.transform.build_world_matrix). -
ValueError–If the result overflows a float.
source_rect_at_time
¶
Retrieves the rectangle bounds of the layer at the specified time index, corrected for text or shape layer content.
For footage, solid, precomposition and adjustment layers this is
(0, 0, width, height) of the layer source at every time
(verified against AE 2026 - the layer transform never affects it).
For a shape layer it is the box of its painted paths, grown by the
strokes with extents (rules in resolvers.shape_bounds); for a
text layer the tight box of its glyph outlines, from the fonts
installed on this machine (rules in resolvers.text_ink). Values
are read before expressions.
time is in the layer's own time, not composition time: After
Effects neither offsets it by the layer's start time nor applies
its stretch (measured on AE 2026 - a layer starting at 0.5 s and
stretched to 200 % reports its layer-second-1 content at time=1).
Parameters:
-
time(float) –The time index, in seconds of layer time.
-
extents(bool) –Trueto include the extents. Only relevant for shape layers.
Returns:
Raises:
-
NotImplementedError–For a shape layer using a path operation other than Trim Paths and Repeater, a text layer using a feature outside the measured envelope (text animators, text on a path, faux styles, a font that is not installed, ...), or a 3D model layer (whose box is the model's bounds).