반응형
(function () {
function getWorldPosition(layer) {
var positionProp = layer.transform.position;
var expressionBackup = positionProp.expressionEnabled ? positionProp.expression : null;
var wasExpressionEnabled = positionProp.expressionEnabled;
// 익스프레션 비활성화 후 값 가져오기
if (wasExpressionEnabled) positionProp.expressionEnabled = false;
var worldPos = positionProp.value;
var scaleFactor = [1, 1, 1];
while (layer.parent !== null) {
var parent = layer.parent;
var parentPos = parent.transform.position.value;
var parentScale = parent.transform.scale.value;
scaleFactor = [
scaleFactor[0] * (parentScale[0] * 0.01),
scaleFactor[1] * (parentScale[1] * 0.01)
];
worldPos = [
worldPos[0] * (parentScale[0] * 0.01) + parentPos[0],
worldPos[1] * (parentScale[1] * 0.01) + parentPos[1]
];
if (layer.threeDLayer) {
if (worldPos.length < 3) worldPos.push(0);
scaleFactor.push(scaleFactor[2] * (parentScale[2] * 0.01));
worldPos[2] = worldPos[2] * (parentScale[2] * 0.01) + parentPos[2];
}
layer = parent;
}
// 원래 익스프레션 복원
if (wasExpressionEnabled) {
positionProp.expression = expressionBackup;
positionProp.expressionEnabled = true;
}
return worldPos;
}
function createNullAndReparent(layer) {
var comp = layer.containingComp;
var worldPos = getWorldPosition(layer);
var nullLayer = comp.layers.addNull();
nullLayer.name = layer.name + "_Null";
nullLayer.transform.position.setValue(worldPos);
nullLayer.threeDLayer = layer.threeDLayer;
nullLayer.moveBefore(layer);
layer.parent = nullLayer;
return nullLayer;
}
function main() {
var comp = app.project.activeItem;
if (!(comp && comp instanceof CompItem)) {
alert("활성화된 Composition이 없습니다.");
return;
}
var selectedLayers = comp.selectedLayers;
if (selectedLayers.length === 0) {
alert("레이어를 선택하세요.");
return;
}
app.beginUndoGroup("Create Nulls Above Layers and Reparent");
for (var i = selectedLayers.length - 1; i >= 0; i--) {
createNullAndReparent(selectedLayers[i]);
}
app.endUndoGroup();
}
main();
})();
단점
부모 레이어에 익스프레션이 있을경우 효과 없음...
-----------------------------------------------
반응형
'Study' 카테고리의 다른 글
| 부모레이어의 좌표로 앵커포인트 옮기는 스크립트 (0) | 2026.01.09 |
|---|---|
| NUM_Count_script 2종 (0) | 2026.01.09 |
| [Ae]lottie_프리컴프 상태일때의 opacity 겹침 문제 (0) | 2021.09.30 |
| [Ae]expression - look at (0) | 2021.08.20 |
| [Ae]expression - 코마가 포함된 숫자 카운트 (0) | 2021.06.02 |
