[概要]
1行を1テキストレイヤーに変換するスクリプト。
字幕を1つ1つコピペする時間を節約できます。
空白行はラベルを黒にしてタイムライン上での視認性を向上し、配置するシーンの切り替わりを段落として視覚的に管理できます。
[使い方]
- スクリプトを実行しウィンドウを開く
- テキストボックスに任意のテキストを入力
- 複数行を1レイヤーにしたい場合は、改行を<br>で繋ぐ
- 「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("ADBE Text Document")==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("ADBE Text Properties").property("ADBE Text Document").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に入れ込みまで完結できるため、テキストの行選択→コピペ→行選択→コピペ…という作業から開放されます。
この記事へのコメントはありません。