After Effects│コンポ名を変数にして複製して差分コンポを作成するスクリプト

コンポ名を変数にして差分を作りたい

流し込みたいテキストをコンポジション名に入れて、そこから参照して使う方法です。

ベースを作れば複製するだけで、差分が作成できます。

ベースコンポを複製しつつ、変更したい情報をコンポ名に入れて参照するのはお手軽でおすすめです。

目次

ベースのコンポジションを作成

  1. コンポ名は「コンポ名_名産地_果物」で作成
  2. 2種類のテキストを作成、ソーステキストに下記のエクスプレッションを挿入

1つ目のテキスト(名産地):

var str = thisComp.name.split("_")[1];
text.sourceText = str;

2つ目のテキスト(果物):

var str = thisComp.name.split("_")[2];
text.sourceText = str;

これで、「名産地」、「果物」と表示されます。

コンポ名にテキストを入れつつ複製する方法

matsurai25さんのスクリプトを使用します。

// コンポジションを選択した状態で実行、文字列を1文字ずつ分解して、その文字数分だけコンポジションを複製して"letter_"+nameの形で保存
// 処理書くの面倒だったんでこのへんでユニーク化してください
// http://kiteretsu-world.info/tool/reduce-character.shtml

var Lyrics = "キミスペクトル君だけの色に染めてよ"; //ここの中身を適度に変えてください

//配列化
Lyrics = Lyrics.split('');

// forEach使えないので使えるように
// Production steps of ECMA-262, Edition 5, 15.4.4.18
// Reference: http://es5.github.com/#x15.4.4.18
if (!Array.prototype.forEach) {
  Array.prototype.forEach = function(callback, thisArg) {
    var T, k;

    if (this == null) {
      throw new TypeError(" this is null or not defined");
    }

    var O = Object(this);
    var len = O.length >>> 0;

    if ({}.toString.call(callback) != "[object Function]") {
      throw new TypeError(callback + " is not a function");
    }

    if (thisArg) {
      T = thisArg;
    }

    k = 0;

    while (k < len) {

      var kValue;

      if (k in O) {
        kValue = O[k];
        callback.call(T, kValue, k, O);
      }
      k++;
    }
  };
}
// 選択しているアイテムを取得
var activeItem = app.project.activeItem;
if ((activeItem == null) || !(activeItem instanceof CompItem)) {
  alert("コンポジションを選択した状態で実行しよう");
} else {
  Lyrics.forEach(function() {
    var curComp = activeItem.duplicate();
    curComp.name = "letter" + _;
  })
}

一部、下記のコメントした2箇所を変更します。

//配列でテキストを記述
var Lyrics= [
'青森の_リンゴ', 
'沖縄の_バナナ', 
'栃木の_イチゴ'
];
//Lyrics = Lyrics.split(",");//使わないのでコメントアウト

先程のベースコンポを選択して実行するとテキストを入れて複製されます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次