【AfterEffects】シナリオスクリプト風に画像切替をエクスプレッションで表示する方法

aftereffects-play-scenario-script-expression

下記のような感じで、ストーリーを再生するスクリプト風に対象の画像が明るくなり、前に描画され表情を変わるようにしてみました。

コンポに使用する素材を並べる

  1. いらすと屋から男性と女声のイラストを3枚の連番で用意

  2. 下記のように並べておきました。コンポ名は「master」

連番画像の設定

5体のキャラを想定しています。

あとでマーカーにエクスプレッションを記述して、そこから記述を参照できるように仕込みます。

STEP.1
画像名は1、2、3、4、5とそれぞれ番号にしておきます。
STEP.2
エフェクト「色相/彩度」を設定、不透明度にエクスプレッションを挿入
//1つ目のコメント
eval(comp("master").marker.key(1).comment)

STEP.3
「Z位置」にエクスプレッションを挿入

//2つ目のコメント
eval(comp("master").marker.key(2).comment)

STEP.4
表情指定用にタイムリマップにもエクスプレッションを挿入しておきます
※アニメーションはクランプに
var str = thisComp.layer("controll").effect("キャラ1")("スライダー")
framesToTime(str);

キャラ1と書いてあるところはキャラ2、キャラ3と画像に合わせて数字を変えておきます。

コントローラーの作成

STEP.1
一番上にヌル「controll」を作成します
STEP.2
スライダーを6つ作成

状態変化用のスライダー1つとキャラ表情用のスライダー5つを名前を設定して設置。

STEP.3
コンポにマーカーを2つ挿入

次にマーカーの内容を記載しています。

マーカー1つ目「明るさ・暗さ」用エクスプレッション

//暗さ
var value = thisComp.layer(index)
str =" "+ thisComp.layer(index).name;
if (comp("master").layer("controll").effect("状態制御")("スライダー")== str) 0 else 100
if (comp("master").layer("controll").effect("状態制御")("スライダー")== 6) 0 

※画像名を条件にして、状態を変化させています。
※値6の時は全員、明るく表示されます。

マーカー2つ目「描画順」用エクスプレッション

//Z値
var value = thisComp.layer(index)
str =" "+ thisComp.layer(index).name;
if (comp("master").layer("controll").effect("状態制御")("スライダー")== str) -1 else 0
if (comp("master").layer("controll").effect("状態制御")("スライダー")== 6) -1 

※画像名を条件にして、状態を変化させています。
※値6の時は全員Z値-1」になります。

以上で2つのマーカーのエクスプレッションをそれぞれの画像が参照しますし、画像名で条件変化もします。

アニメーションの設定

状態とそれぞれの表情のアニメーションキーを好きなように打ちます。

ちゃんと設定すればヌル「controll」の中で作業が完結します。

おまけ

自分自身のレイヤーにあるマーカーから値を取得する

今回は使わなかったのですが、メモです。

//1つ目のマーカー
eval(thisComp.layer(thisLayer,0).marker.key(1).comment)

例:マーカー側

framesToTime(3);

としておくとタイムリマップに先のエクスプレッションを入れておくと3フレーム目に固定されます。

レイヤースタイルの描画順の問題

エフェクト「色相・彩度」で画像を暗くしていますが、レイヤースタイルを使うと描画順がおかしくなります

要注意。

まとめ

思いつきでゲームスクリプト風の画像設定をしてみました。

次回はテキストを作成して見る予定です!

【AfterEffects】シナリオスクリプト風に文字を一定速度で表示する方法