イトウ先生のTipsnote AfterEffects 2020 の新機能:エクスプレッション・text

デジタルスケープ 短期集中クリエイティブ講座

デジタルスケープ・AfterEffects・Photoshop・HTML・CSS・JavaScript・1日トレーニング

Web・動画・映像・ゲーム・DTP・CG・Adobe Creative Cloud・キャリア・就活に

イトウ先生のTipsnote:目次

【 AfterEffects 2020 の新機能:エクスプレッション・text 】

こんにちは、イマジカデジタルスケープの伊藤和博です。
今週は、2019年最後のブログとなりましたが、AfterEffects 2020から新機能で「エクスプレッション・text」をご紹介します。
AfterEffects 2020から、エクスプレッション言語メニュー内に【text】が新設されました。このテキストメニューの新設によって、テキストレイヤーの文字そのものだけでなく、そのレイヤーの様々なスタイルを取得・コントロールすることが可能になりました。 取得した値を使って、様々なアニメーションに活用することが可能になりますが、今回はこの新設されたメニューから取得できるプロパティとその取得の仕方をご紹介します。

さっそくやってみよう!

まずは、空のテキストレイヤーを作成し、ソーステキストにエクスプレッションを適用します。text < sourceText、を選択すると、sourceTextの文字列をエクスプレッションに返すだけ、となり、text < Font…を選択すると、表示されたウインドウ内で指定したフォント名を取得することが可能です。

Ae20_tx013

テキストのスタイルに関するプロパティを取得する場合は、text < Properties < Propertiesから必要なプロパティを選択します。

Ae20_tx005

ただし、空のテキストレイヤーには、何の文字もないため、取得するものがありません。そこで、これらは何らかの文字を入力している別のテキストレイヤーがあり、そのレイヤーで使っている文字のプロパティを取得する、という場合に使用しますが、まずはどのようなプロパティの種類があるのか?をご説明します。直接記述する場合は、【text.sourceText.style】までは共通で、次に取得したいプロパティを記述します。

取得できる値
text.sourceText.style.
text.sourceText.style.font;
text.sourceText.style.fontSize;
text.sourceText.style.fillColor;
text.sourceText.style.strokeColor;
text.sourceText.style.strokeWidth;
text.sourceText.style.tracking;
text.sourceText.style.leading;
プロパティ
現在のテキストレイヤースタイル(の、が、に)
フォント名を返す
フォントサイズを返す
塗りのカラー値を返す
線のカラー値を返す
線幅(px)を返す
トラッキング値を返す
行送り値を返す

なお、塗りと線のカラー値は、0〜1.0の範囲でRGBそれぞれの値をカンマ区切りで返します。
以下は、ブール値を取得します。

取得できる値
text.sourceText.style.isFauxBold;
text.sourceText.style.isFauxItalic;
text.sourceText.style.applyFill;
text.sourceText.style.applyStroke;
text.sourceText.style.autoLeading;
ブール値(True または False)
太字であるかどうか
斜体であるかどうか
塗りが適用されているかどうか
線が適用されているかどうか
自動行送りがオンまたはオフ

文字ツールで、AfterEffectsと入力したテキストレイヤーを新規で作成し、空のテキストレイヤーのソーステキストに、以下のようにエクスプレッションを書きます。

thisComp.layer("AfterEffects").text.sourceText.style.font;

すると、AfterEfectsの文字レイヤーで使っているフォント名を、空のテキストレイヤーの方に文字として返します。

Ae20_tx014

set関数

それぞれのプロパティやブール値を【取得】するのではなく、エクスプレッションで【指定】する場合はset関数を使用します。

text.sourceText.style.に続けて・・ 現在のテキストレイヤースタイル(の、が、に)
setFont("Myriad Pro"); フォントを"Myriad Pro"にする
setFontSize(200); フォントサイズを200にする
setBaselineShift(10); ベースラインシフト値を10にする
setApplyFill(true); 塗りをオンにする
setFillColor([1.0,1.0,1.0]); 塗りのカラーを指定する(setApplyFill(true); の時に使用)
setApplyStroke(true); 線のカラーをオンにする
setStrokeColor([1.0,1.0,1.0]); 線のカラーを指定する(setApplyStroke(true) ;の時に使用)
setStrokeWidth(10); 線幅を10にする
setLeading(100); 行送り値を100にする
setAutoLeading(true); 自動行送りをオンにする

塗りと線のカラーは、hexToRgb("00FF00")メソッドと組み合わせると、CSSでおなじみの16進数で指定が可能ですので・・

setFillColor(hexToRgb("00FF00"));
setStrokeColor(hexToRgb("FF0000"));
塗りのカラーを緑(00FF00)にする
線のカラーを赤(FF0000)にする

という指定が可能になります。AfterEffectsの文字レイヤーのソーステキストにエクスプレッションを設定し、以下のように書きます。

text.sourceText.style.setFillColor(hexToRgb("00FF00"));

塗りのカラーを緑にすることが可能です。

Ae20_tx015

createStyle()でスタイル変数の作成

また、新しく搭載されたcreateStyle()メソッドを使うと、テキストスタイル変数を作成することが可能です。あらかじめcreateStyle()でスタイル変数を生成しておき、そのスタイルにset関数を使用することで、個々のスタイルを追加していきます。

スタイル生成
text.sourceText.createStyle();

この後、Set関数で個々のスタイルを指定

var x = text.sourceText.createStyle();
var y = x.setFontSize(200);
var z = y.setFont("Myriad Pro");
z;

xにスタイル生成
xにSet関数でフォントサイズ200を指定し、yに代入
yにSet関数でフォント名"Myriad Pro"を指定し、zに代入
zの呼び出し

空のテキストレイヤーを削除するか非表示にし、AfterEffectsの文字レイヤーの、ソーステキストにエクスプレッションを以下のように書き換えます。

var x = text.sourceText.createStyle();
var y = x.setFontSize(200);
var z = y.setFont("Myriad Pro");
z;

Ae20_tx006

なお、変数を省略し、createStyle()の下層に直接set関数を書くことも可能です。

text.sourceText.createStyle().setFontSize(200).setFont("Myriad Pro");

Ae20_tx007

createStyle()を使用する場合は、変数にし、他でも利用できる形にしておくと便利ですが、文字レイヤーが1つしかなく、わざわざ変数を使う必要がない場合は、createStyle()を使わずにそのまま書くことも可能です(以下のソースを1行につなげて書いてみてください)。

text.sourceText.style.setFillColor(hexToRgb("700491"))
.setApplyStroke(10).setStrokeWidth(20).setStrokeColor(hexToRgb("FF00E4"))
.setFontSize(200);

Ae20_tx008

今回のこのバージョンアップによって、フォント、フォントサイズ、ベースラインシフト、塗りと線のONOFF、カラー、線幅、行送り値など、いわゆる文字パネル上で行う編集内容そのものが、エクスプレッションで制御できるようになりましたので、set関数の()の内側に、エクスプレッション言語メニューの中にあるtimeなどを組み合わせて使用したり他から値を参照することで、例えば・・

text.sourceText.style.setStrokeWidth(20+time*250);

のように指定すると、20pxの線幅が時間と共に太くなり、次第に背景を埋め尽くす、というようなアニメーションも可能になります(ちなみにAfterEffectsでのテキストへの最大線幅は1000pxになりますので、1000pxまでの線幅アニメーションが可能です)。(約5秒。音はなりません)

ソーステキストの上で右クリックし、キーフレーム補助 < エクスプレッションをキーフレームに変換、を選択した後、全てのキーフレームを選択して、キーフレーム補助 < 時間反転キーフレームでリバース再生すると、以下のように背景色が次第にテキストの線幅になる、ということも可能になります(約8秒。音はなりません)。

Ae20_tx010

これまでのAfterEffectsでは、アニメータプロパティで行うか、またはアウトライン化した文字であれば様々なアニメーションにすることが可能でしたが、今回のこのテキストへのエクスプレッションの搭載により、テキストのまま、スタイルをコントロールすることで様々なアニメーションに応用することが可能になりました。オープニングやテロップなど様々なアニメーションに応用可能かと思いますので、ぜひアップデートがまだの方はアップデートして使ってみてください。

それでは、2019年、一年間お読みいただき、誠にありがとうございました。どうぞよいクリスマス、年末年始をお過ごしください。来年もどうぞよろしくお願いいたします。

関連講座

↑ページTOPへ