スクリプト

文章を分解してテキストレイヤーにするスクリプト「textLayerImporter.jsx」

[概要]

1行を1テキストレイヤーに変換するスクリプト。
字幕を1つ1つコピペする時間を節約できます。

空白行はラベルを黒にしてタイムライン上での視認性を向上し、配置するシーンの切り替わりを段落として視覚的に管理できます。

[使い方]

  1. スクリプトを実行しウィンドウを開く
  2. テキストボックスに任意のテキストを入力
  3. 複数行を1レイヤーにしたい場合は、改行を<br>で繋ぐ
  4. 「1行を1テキストレイヤー作成」ボタンをクリック

[オプション]

<新規作成モード>:
テキストレイヤーを選択せず実行すると、1行ごとに1テキストレイヤーに新規テキストレイヤーを作成していきます。

<複製モード>:
テキストレイヤーを選択して実行すれば、選択レイヤーを複製し1行ごとに1レイヤーとして増やしていきます。


(1)テキストレイヤーごとにデザインを変える必要がある場合は新規作成モードで、とりあえず必要なテキストを全て読み込む

(2)統一されたデザインで字幕を作る場合はレイヤースタイルなど整えてから複製モードで実行する

というのが基本的な使い方になるかと思います。

また、解説で後述しますが、複数行の字幕にも対応しています。

[解説]

var scName="textLayerImporter";

/*
===============
--- GUI準備 ---
===============
*/

function f_showDialog(){
	this.w = new Window("palette{properties:{resizeable:false, }}",scName);
	this.w.center();
        this.ed = this.w.add("edittext",[0,20,360,320],"",{multiline: true, alignChildren: "fill",});
        this.go = this.w.add("button",[0,20,220,40],"1行を1テキストレイヤー作成");
         
	this.show = function()
	{
        return this.w.show();
	}
}
var wobj = new f_showDialog;


wobj.show();
wobj.onResizing = wobj.onResize = function(){ this.layout.resize()};

/*
===============
--- ボタン操作 ---
===============
*/
wobj.go.onClick = function(){
    var dupFlag,dupLyr;
    app.beginUndoGroup("textLayerImporter");// 取り消し用グルーピング

    if(app.project.activeItem.selectedLayers==""){// レイヤー未選択時
        dupFlag=0;
    }else{// レイヤー選択時
        dupFlag=(app.project.activeItem.selectedLayers[0].property("Source Text")==null)?0:1;
        
    }
//まず"<br>改行"を"<br>"に変換
    var txArbr=wobj.ed.text.replace(/<br>\r|<br>\r\n|<br>\n/g, '<brbrr>');
    //alert(txArbr);
    var txAr = txArbr.split(/\r\n|\r|\n/);
    //alert(txAr);
    for(i=0;i<txAr.length;i++){
        if(dupFlag==1){//テキスト選択中
            dupLyr=app.project.activeItem.selectedLayers[0].duplicate();
        }else{//テキスト未選択中
            dupLyr=app.project.activeItem.layers.addText(txAr[i]);
        }
        dupLyr.property("Source Text").setValue(txAr[i].replace(/<brbrr>/g, '\r\n'));
        dupLyr.label=(txAr[i]=="")?0:1;
        dupLyr.name="";
        app.project.activeItem.selectedLayers[0].selected=false;
        dupLyr.selected=true;
    }//for
    app.endUndoGroup();
}

テキストレイヤーを作成or複製し、改行毎にソーステキストへ設定を繰り返します。

レイヤーの区切りは元テキストの改行をトリガーとします。そこで、複数行の字幕にも対応できるよう、末尾に”<br>”と入力し改行した行は1つのテキストレイヤーとして読み込まれるようにしてあります。

この際の処理としては、改行直前の”<br>”は「テキストレイヤー内の改行」に変換されます。つまり、2行以上を1テキストレイヤーに変換できます。

“テキスト<br>テキスト”と1行に打った場合は改行せずこのまま1行のテキストレイヤーとなります。改行を含むテキストレイヤーは、あくまで行の末尾の<br>を検知します。


例えば下記のように入力すると、

1行のテキストレイヤー
2行の<br>
テキストレイヤー
3行の<br>
テキスト<br>
レイヤー

このようにテキストレイヤーに変換されます。

この機能を使えば、字幕の作成を1つのテキストエディタで俯瞰しながら準備→After Effectsに入れ込みまで完結できるため、テキストの行選択→コピペ→行選択→コピペ…という作業から開放されます。

ダウンロード

裏面を非表示にするスクリプト「hideBackface.jsx」前のページ

選択レイヤーのソーステキストを編集するスクリプト「textLayerEditor.jsx」次のページ

ピックアップ記事

  1. なぜ?After Effectsのレイヤーをエクスプレッションで効率化
  2. フリーランスの開業届提出は開業freeeでとにかく簡単に
  3. なぜ?After Effectsの操作を「スクリプト」で効率化

関連記事

  1. スクリプト

    レイヤーに連番を振るスクリプト「[_nn]seqNumRenamer.jsx」

    タイムライン上で連番管理したいレイヤーを選択した順に連番でリネームする…

  2. スクリプト

    なぜ?After Effectsの操作を「スクリプト」で効率化

    出来る範囲はマウスやキーボードで編集者が直接できる操作に限られますが、…

  3. スクリプト

    パスに沿ってレイヤーを均等配置するスクリプト「masktoPosPathAlign.jsx」

    全選択レイヤーをパスに沿って配置するスクリプト。…

  4. スクリプト

    使用フォント一覧をテキストファイル出力するスクリプト「exportFontName.jsx」

    実行すると、開いているaepファイルと同じフォルダに、使用フォント一…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA