Come usare
- Copia il comando e controlla il pacchetto prima di installarlo nel tuo ambiente agente.
- Controlla strumenti, credenziali e ambienti richiesti nel documento originale.
- Descrivi input e risultato desiderato; confronta l’output con le fonti.
npx skills add https://github.com/solomondivyananth/aftereffects-mcp --skill ae-transitionsPrima di iniziare
- L’installazione non include abbonamenti, quote API o accesso ai file.
- Stelle e installazioni indicano attività, non un test indipendente di qualità o sicurezza.
Contenuto dal repository con titoli, esempi, codice, tabelle, link e immagini preservati.
Transitions
A transition is two layers overlapping for a few frames: the outgoing shot (A) and the incoming shot (B). Everything below is a way to animate that overlap. Keep transitions short (4–12 frames at 30 fps). Put them on beats, using comp markers placed with ae_markers.
Set up the overlap first. Stack B above A with a few frames of overlap:
ae_layer_action {"layers": ["Shot A", "Shot B"], "action": "sequence", "overlap": "8f"}When A and B are whole scenes, precompose each (ae_precompose) so the transition animates one layer per scene.
The cut
Most transitions should be cuts. A cut on a beat, a cut on motion (the movement carries across), or a cut on a match (same shape or position in both shots) needs no effect at all. Before adding one, ask whether a clean cut on the marker is better.
Choosing one
Pick from what the two shots have in common, not from a menu of effects:
| A and B are… | Use | Why |
|---|---|---|
| the same subject, moved or changed | a match cut, or a morph (ae-morph) | the shared shape does the work; an effect would hide it |
| different moments of one idea | a cut on the beat | the cheapest and the strongest |
| different places, same energy | whip pan or zoom punch | motion carries the eye across the join |
| different sections of a film | a shape or colour wipe in the brand colour | it reads as a chapter mark, not a glitch |
| a build that must not lose its place | a masked reveal that grows from the element the eye is on | the frame never goes blank |
| a hard change of tone | dip to colour, or a flash cut | a deliberate blink |
| beauty shots, slow content | a crossfade or a light wipe | anything faster fights the pace |
Two rules that save most transitions:
- Keep the direction. If A leaves to the left, B arrives from the right.
Reversing direction across a cut reads as a mistake even when nobody can say why.
- One transition style per piece, twice at most. A film that wipes, then
whips, then iris-wipes looks like a demo of transitions.
The shape of a transition in time
A transition is not a linear crossing. Give it the same acceleration as a move: leave fast, arrive soft.
| Type | Overlap | Where the cut sits | Easing |
|---|---|---|---|
| Whip pan / zoom punch | 6–10 frames | at the fastest frame, where the blur is heaviest | A {out: 85}, B {in: 85} |
| Shape or mask wipe | 8–12 frames | the middle of the wipe | {out: 20} → {in: 85} |
| Effect wipe (Completion 0→100) | 8–12 frames | at ~50% completion | same |
| Dip / flash | 2–6 frames | on the beat | hold keys, no ease |
| Crossfade | 12–20 frames | the midpoint | linear, or the fade spends too long half-there |
Put the marker on the beat first, then build outwards from it, so the loudest frame of the transition and the beat are the same frame.
Whip pan and zoom punch
The energetic ones, built from motion plus blur:
- On both A and B, keyframe Position (whip) or Scale (punch) across the cut.
A leaves fast (ease {"out": 85} on its last move), B arrives fast then settles (ease {"in": 85}).
- Blur the fastest frames. Whip:
ADBE Motion Blur(Directional Blur):
Direction along the move, Blur Length 0 → 60–120 → 0 across the cut. Zoom: ADBE Radial Blur with Type Zoom, or CC Radial Fast Blur Amount.
- Motion blur on the layers and the comp (see the
ae-effectsskill). - For a seamless whip, add
ADBE Tile(Motion Tile) with Mirror Edges on,
so the frame edges never show.
Wipes with masks and shapes
Full control, any shape. Animate a mask on B that grows to reveal it:
ae_masks {"layer": "Shot B", "action": "add", "mask": {"rect": [0, 0, 0, 1080], "feather": 40}}
ae_add_keyframes {"layer": "Shot B", "path": ["Masks","Mask 1","Mask Path"], "keys": [
{"time": "0f", "value": {"vertices": [[0,0],[0,0],[0,1080],[0,1080]]}},
{"time": "10f", "value": {"vertices": [[0,0],[1920,0],[1920,1080],[0,1080]]}, "ease": {"in": 85}}]}A shape wipe (a brand shape or a circle that scales up to fill the frame) is a shape layer used as a track matte:
ae_shape {"name": "Wipe", "shape": "ellipse", "size": [10, 10], "fill": "#ffffff"}
ae_set_layer_props {"layer": "Shot B", "props": {"trackMatte": {"layer": "Wipe", "type": "alpha"}}}Then scale Wipe from 0 to cover the frame (about 2300% for a 100 px circle on 1920×1080) in 8–12 frames. Layered colour wipes (two or three coloured shapes chasing each other 2 frames apart, ending on B) are the classic motion-design transition.
Transition effects
Put these on the outgoing layer A, above B. Every one has a Transition Completion (or Completion) parameter: keyframe it 0 → 100.
| Effect | matchName | Parameters |
|---|---|---|
| Linear Wipe | ADBE Linear Wipe | Transition Completion, Wipe Angle, Feather |
| Radial Wipe | ADBE Radial Wipe | Transition Completion, Start Angle, Wipe Center, Wipe, Feather |
| Gradient Wipe | ADBE Gradient Wipe | Transition Completion, Transition Softness, Gradient Layer, Invert Gradient |
| Iris Wipe | ADBE IRIS_WIPE | Iris Center, Iris Points, Outer Radius, Inner Radius, Feather. Animate Outer Radius |
| Venetian Blinds | ADBE Venetian Blinds | Transition Completion, Direction, Width, Feather |
| Block Dissolve | ADBE Block Dissolve | Transition Completion, Block Width, Block Height, Feather |
| Card Wipe | APC CardWipeCam | Transition Completion, Transition Width, Back Layer, Rows, Columns, Flip Axis |
| CC Light Wipe | CC Light Wipe | Completion, Center, Intensity, Shape |
| CC Glass Wipe | CC Glass Wipe | Completion, Layer to Reveal, Gradient Layer, Softness |
| CC Grid Wipe | CC Grid Wipe | Completion, Center, Rotation, Tiles |
| CC Twister | CC Twister | Completion, Backside, Center, Axis |
ae_apply_effect {"layer": "Shot A", "effect": "ADBE Linear Wipe", "params": {"Wipe Angle": 90, "Feather": 60}}
ae_add_keyframes {"layer": "Shot A", "path": ["Effects","Linear Wipe","Transition Completion"], "keys": [
{"time": "0f", "value": 0, "ease": {"out": 20}}, {"time": "10f", "value": 100, "ease": {"in": 85}}]}Master controls (After Effects 2026). This generation ships prebuilt transition rigs as effects — ADBE CM TransComplete (Transition Master Control), plus ADBE CM TransWipe, TransSlide, TransCard, TransIris, TransRadial, TransDissolve, TransFade, TransFadeMask, TransStretch, TransCorner, TransDirection. They wrap the work below behind one set of dials. Apply with ae_apply_effect and read the parameter names back from the result; list what this install has with ae_catalog {"kind": "effects", "query": "master control"}. Hand-built is still better when the transition has to carry brand shapes or a specific element across the cut.
Luma transitions: a Gradient Wipe driven by a hidden layer (Fractal Noise, a gradient ramp ADBE Ramp, or a texture) gives organic, ink-like wipes. Set Gradient Layer to that layer and turn its visibility off (enabled: false).
Layer-reference parameters (Gradient Layer, Layer to Reveal, Back Layer) point at other layers. If ae_apply_effect can't set them from a name, set them with ae_run_jsx (prop.setValue(layerIndex)), or ask the user to pick the layer in the Effect Controls.
Transitions that use depth
With a camera in the comp (ae-camera-3d), the change of shot can be a move rather than an effect:
- Push through. A is a 3D layer; dolly the camera past it while B sits
further back. Add a little motion blur and the frame edge does the wiping.
- Rotate the world. Parent A and B to a null at 90° to each other and
rotate the null — a card flip at full-frame scale.
- Z stack. Lay the scenes out in depth at build time and fly forward
through all of them; every "transition" is then one continuous camera move.
These only work if both shots are built as precomps with matching size, and if the camera move eases (20–30 frames, landing ease 85–90).
Carrying an element across
The strongest scene change is one where nothing cuts: an element survives into the next shot and becomes part of it — a logo that becomes the app header, a word that turns into a chip, a line that becomes a ring. Build it as one layer that exists in both scenes, and change only what has to change (scale, position, colour) over 4–8 frames. ae-ui-motion has the worked versions; ae-morph has the ones where the shape itself changes.
Match cuts
A match cut hands one motion from shot A to shot B. The eye follows the motion across the cut, so what has to match is where the thing is, how fast it moves and which way. Whether the two shots look alike matters less.
- Read the motion on both sides. Watch 6–12 real frames before and
after the cut, not a spread across the whole shot:
ae_review_motion {"comp": "Scene A", "start": "84f", "duration": "12f", "frames": 12}- Continue it; don't restart it. B's first frame is the next sample
of A's motion. It must not repeat A's last pose (that reads as a stall), and it must not start from rest. So the keys either side of the cut carry speed. Don't ease into the cut or out of it: give the handoff key a linear or velocity-matched side, and a continuous spatial handle so the path doesn't kink:
ae_add_keyframes {"comp": "Scene B", "layer": "Ring", "path": ["Transform", "Position"],
"keys": [{"time": 0, "value": [980, 540], "ease": {"in": 33, "out": 33, "inSpeed": 1400, "outSpeed": 1400}, "spatial": "continuous"},
{"time": "14f", "value": [1500, 540], "ease": "easy_in"}]}Measure the speed A leaves with (px/s at its last key, from ae_find_animation) and give B's first key the same speed.
- One source for the shared element. If the same ring, word or icon
exists on both sides, make it one precomp used in both shots. Two copies drift apart in size, colour and weight, and the cut exposes the difference.
- Ranges are half-open. If frame N is A's last visible frame, A's out
point is frame N+1 and B's in point is frame N+1. Setting A's out point to N drops a frame; setting B's in point to N shows both for a frame.
ae_set_layer_props {"comp": "Edit", "layer": "Scene A", "props": {"outPoint": "90f"}}
ae_set_layer_props {"comp": "Edit", "layer": "Scene B", "props": {"inPoint": "90f"}}- Check the four frames around the cut at full size:
ae_render_frame
with "times": ["88f", "89f", "90f", "91f"], then ae_proof for empty-frame and pops. The shared element should sit on one smooth line across all four.
Sound
Most transitions are sold by audio, not picture. A whoosh that starts 4–6 frames before the cut and an impact exactly on it will make a plain cut feel designed. Place them against the same markers (ae-audio-sync).
Crossfades and dips
- Crossfade: B's Opacity 0 → 100 over the overlap. Use it rarely; it
reads as soft and old-fashioned unless it's intentional.
- Dip to colour: a solid above both, Opacity 0 → 100 → 0 around the cut.
- Flash cut: a white solid on 1–2 frames with hold keys (
interp: "hold") exactly on the cut.
When it goes wrong
| Symptom | Cause | Fix |
|---|---|---|
| A frame of white or transparency mid-transition | A ends before B starts | extend the overlap; ae_proof reports it as empty-frame |
| A hard line where the wipe starts | no feather, or the mask begins inside the frame | feather 20–60, and start the mask fully outside |
| The frame edge shows during a whip | the layer is exactly comp-sized | ADBE Tile (Motion Tile) with Mirror Edges, or scale to 110% |
| It strobes | fast motion with motion blur off | both switches on; ae_proof's strobe check finds these |
| The transition feels late | it was built from the cut, not from the beat | move the loudest frame onto the marker |
| It reads as long and soft | 20+ frames, linear easing | halve it and ease it |
| Every cut has a transition | no cuts at all | most of them should be cuts |
Check it
Transitions live in a few frames, so look at every one:
ae_review_motion {"start": "<cut time minus 6f>", "duration": "12f", "frames": 12}Sample about two frames per frame of transition — at 8 samples across 10 frames you are not seeing the transition, you are seeing a slideshow of it.
Look for: a frame where neither shot shows, a mask edge visible at the start, a hard edge where there should be feather, and whether the transition lands on the beat. Then ae_proof over the same window with a high samples count (ae-motion-proof) — that is where one-frame pops and empty frames show up as numbers. With a reference, compare it at native frame rate with the video-reference-compare skill.


