Add motion-design skills from iart-ai/motion-design-skills
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013TAaJBzbmePTECuv62BXYX
This commit is contained in:
47 files changed
+4385
No files matched your search
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* apply-effect-to-layers.jsx
|
||||
* Applies an effect (by internal matchName) to every selected layer.
|
||||
*
|
||||
* Why matchName: display names are localized and change between AE language
|
||||
* versions; matchName is stable. Examples:
|
||||
* "ADBE Gaussian Blur 2" -> Gaussian Blur
|
||||
* "ADBE Fast Box Blur" -> Fast Box Blur
|
||||
* "ADBE Tint" -> Tint
|
||||
* "ADBE Drop Shadow" -> Drop Shadow
|
||||
* "ADBE Glo2" -> Glow
|
||||
*
|
||||
* Usage: select layers in a comp, then File > Scripts > Run Script File...
|
||||
* Edit EFFECT_MATCHNAME (and the optional parameter block) below.
|
||||
*/
|
||||
|
||||
(function applyEffectToLayers() {
|
||||
var EFFECT_MATCHNAME = "ADBE Gaussian Blur 2";
|
||||
|
||||
var comp = app.project.activeItem;
|
||||
if (!(comp && comp instanceof CompItem)) {
|
||||
alert("Open a composition and select one or more layers first.");
|
||||
return;
|
||||
}
|
||||
|
||||
var sel = comp.selectedLayers;
|
||||
if (sel.length === 0) {
|
||||
alert("No layers selected.");
|
||||
return;
|
||||
}
|
||||
|
||||
app.beginUndoGroup("Apply Effect To Layers");
|
||||
try {
|
||||
for (var i = 0; i < sel.length; i++) {
|
||||
var layer = sel[i];
|
||||
if (!(layer instanceof AVLayer)) continue; // effects need an AVLayer
|
||||
|
||||
var effects = layer.property("ADBE Effect Parade");
|
||||
if (!effects.canAddProperty(EFFECT_MATCHNAME)) continue;
|
||||
|
||||
var fx = effects.addProperty(EFFECT_MATCHNAME);
|
||||
|
||||
// --- Optional: set a parameter. Example for Gaussian Blur radius ---
|
||||
// try { fx.property("Blurriness").setValue(25); } catch (e) {}
|
||||
}
|
||||
} finally {
|
||||
app.endUndoGroup();
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* batch-rename.jsx
|
||||
* Renames the selected layers in the active comp to: baseName_##
|
||||
* with a zero-padded, incrementing index.
|
||||
*
|
||||
* Usage: select layers in a comp, then File > Scripts > Run Script File...
|
||||
* Edit BASE_NAME, START_INDEX, and PAD below.
|
||||
*/
|
||||
|
||||
(function batchRename() {
|
||||
var BASE_NAME = "layer"; // base name applied to every selected layer
|
||||
var START_INDEX = 1; // first number
|
||||
var PAD = 2; // zero-padding width (2 -> 01, 02 ...)
|
||||
|
||||
var comp = app.project.activeItem;
|
||||
if (!(comp && comp instanceof CompItem)) {
|
||||
alert("Open a composition and select one or more layers first.");
|
||||
return;
|
||||
}
|
||||
|
||||
var sel = comp.selectedLayers;
|
||||
if (sel.length === 0) {
|
||||
alert("No layers selected.");
|
||||
return;
|
||||
}
|
||||
|
||||
function pad(n, width) {
|
||||
var s = String(n);
|
||||
while (s.length < width) s = "0" + s;
|
||||
return s;
|
||||
}
|
||||
|
||||
app.beginUndoGroup("Batch Rename Layers");
|
||||
try {
|
||||
for (var i = 0; i < sel.length; i++) {
|
||||
sel[i].name = BASE_NAME + "_" + pad(START_INDEX + i, PAD);
|
||||
}
|
||||
} finally {
|
||||
app.endUndoGroup();
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* sequential-offset.jsx
|
||||
* Staggers the selected layers in time so each starts OFFSET_FRAMES after
|
||||
* the previous one (a "domino" / cascade start), based on the first
|
||||
* selected layer's start time.
|
||||
*
|
||||
* Usage: select layers in a comp, then File > Scripts > Run Script File...
|
||||
* Edit OFFSET_FRAMES and ORDER below.
|
||||
*/
|
||||
|
||||
(function sequentialOffset() {
|
||||
var OFFSET_FRAMES = 2; // frames between each layer's start
|
||||
var ORDER_BY_SELECTION = true; // true = order of selection; false = by current startTime
|
||||
|
||||
var comp = app.project.activeItem;
|
||||
if (!(comp && comp instanceof CompItem)) {
|
||||
alert("Open a composition and select two or more layers first.");
|
||||
return;
|
||||
}
|
||||
|
||||
var sel = comp.selectedLayers;
|
||||
if (sel.length < 2) {
|
||||
alert("Select at least two layers.");
|
||||
return;
|
||||
}
|
||||
|
||||
var frameDur = comp.frameDuration; // seconds per frame
|
||||
var offsetSec = OFFSET_FRAMES * frameDur;
|
||||
|
||||
// Build the working order.
|
||||
var layers = [];
|
||||
for (var i = 0; i < sel.length; i++) layers.push(sel[i]);
|
||||
if (!ORDER_BY_SELECTION) {
|
||||
layers.sort(function (a, b) { return a.startTime - b.startTime; });
|
||||
}
|
||||
|
||||
var base = layers[0].startTime;
|
||||
|
||||
app.beginUndoGroup("Sequential Offset");
|
||||
try {
|
||||
for (var j = 0; j < layers.length; j++) {
|
||||
layers[j].startTime = base + (j * offsetSec);
|
||||
}
|
||||
} finally {
|
||||
app.endUndoGroup();
|
||||
}
|
||||
})();
|
||||
Reference in new issue
Block a user