イトウ先生のTipsnote AfterEffects CC 2014・相対的なプロパティリンクと一緒にコピー

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

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

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

イトウ先生のTipsnote:目次

【 AfterEffects CC 2014の新機能:相対的なプロパティリンクと一緒にコピー 】 

今週は、AfterEffects CC 2014から、「プロパティリンクと一緒にコピー」(CC)と、「相対的なプロパティリンクと一緒にコピー」(CC2014)の機能についてご紹介します。
AfterEffectsでは、各レイヤー毎に持っているトランスフォームのそれぞれの値、例えば、アンカーポイント、スケール、位置の場合はX値とY値の2つ、回転の場合は回転角度、不透明度の場合は不透明度の値、がそれぞれありますが、これらに設定する値は、エクスプレッションを使って、他の値を参照することが可能です。例えば、不透明度に50%と入力している場合、その50という数値を、回転角度に適用することが可能です。
さらに、これらの数値は、他のコンポジションが持っているレイヤーから参照することも可能です。例えば、Aというコンポジションの中にあるA1というレイヤーが不透明度50%だった場合、その50という数値を、Bという別のコンポジションにあるB1というレイヤーの回転角度に適用する、ということが可能です。このように、エクスプレッションを使用すると、1つの値を他のどこかで流用し、1つを変更すると連動して他も変更できる、というような、動きそのものを構造的に作り上げることが可能になります。

この場合、コンポジションBのB1レイヤーの回転トランスフォームには、以下のようにエクスプレッションを作成します。

comp(“A”).layer(“A1”).transform.opacity

opacityとは、CSSでおなじみ不透明度のことですので、Webでのお仕事に従事されている方であれば、AfterEffectsを使用したことがなくても、JavaScriptのドットノーテーションや代入が理解できていれば、何をいっているのかはなんとなくわかるかと思います。

では、この時、Cというまったく別のコンポジションに、コンポジションBのB1レイヤーをコピーペーストした場合、何の属性を引き継いでコピーペーストするのか、その違いをご紹介します。

プロパティリンクと一緒にコピー(CC)

コンポジションAにあるレイヤーを参照している、コンポジションBのレイヤーを、コンポジションCに対してただコピーペーストすると、以下のようになります。

Aecc14_pro006

現在設定しているエクスプレッションはそのまま維持され、コンポジションCでもAを参照したまま、コンポジションは引き継がれます。
コンポジションBのレイヤーをコピーする際、編集メニュー>プロパティリンクと一緒にコピー、を選択してペーストすると、以下のようになります。

Aecc14_pro008

Aecc14_pro007

すべてのトランスフォームにエクスプレッションが設定され、参照先が、コンポジションBのB1レイヤーに変更になります。と同時に、ペースト先のレイヤー名も変更になります。
すべての値を、コンポジションBのB1レイヤーを参照することになるため、コンポジションBのB1レイヤーを変更すると、すべての変更が自動的に適用されるようになります。
ただし、いずれにしてもコンポジションBのB1レイヤーは、コンポジションAのA1レイヤーの不透明度の値を参照しているため、結果的にコンポジションAの不透明度を変更すると、コンポジションCの回転も自動的に更新されることとイコールになります。

なお、この機能は、すべてのキーフレームを設定できるプロパティを対象としているため、トランスフォーム以外にも、キーフレームを設定可能なすべてのプロパティにエクスプレッションが適用されます。

Aecc14_pro012

親子付けやヌルオブジェクトの使い方と考え方は似ていますので、特定のトランスフォームのみを連携させる場合はヌルオブジェクトに親子付けし、ヌルオブジェクトのトランスフォームで親子付けした全体を調整するといいですが、すべてのトランスフォームを連携する場合は、このオペレーションの方がいいでしょう。
すでに存在するレイヤーや異なる形状のシェイプに、個別のエクスプレッションのみをコピーペーストする場合は、これは従来からの機能としてある、エクスプレッションを指定したプロパティを右クリックし、エクスプレッションをコピー、または編集メニュー>エクスプレッションをコピー、でペーストすればOKです。

Aecc14_pro009

相対的なプロパティリンクと一緒にコピー(CC2014)

AfterEffects CC2014から新しく加わったコピーの仕方が、「相対的なプロパティリンクと一緒にコピー」の機能です。

Aecc14_pro010

この機能は、エクスプレッションの参照先を、もともと指定していた特定のコンポジションの特定のレイヤーから、「現在のコンポジションの、コピー元と同じ名前のレイヤー」に変更する機能です。
例えば、コンポジションBのB1レイヤーは、コンポジションAのA1レイヤーを参照していましたが、「相対的なプロパティリンクと一緒にコピー」を選択して、コンポジションCにペーストすると、参照先をコンポジションAのA1レイヤーではなく、ペースト先である「コンポジションCの中にあるレイヤーの中」の「コピー元と同じ名前のレイヤー」(つまり、コンポジションCの中にB1というレイヤーがある場合、そのレイヤー)を参照する(参照しようとする)ようになります。
当然ながら、ペースト先であるコンポジションCに、「B1」という名前のレイヤーが無かった場合は、ペーストした直後に以下のアラートを返します。

Aecc14_pro011

OKボタンをクリックし、ペーストされたレイヤーを展開すると、以下のようにエクスプレッションが設定されているのがわかります。

Aecc14_pro013

エクスプレッションを見てみると・・・

thisComp.layer("B1").transform.opacity

というように、冒頭がthisCompに変更になっており、JavaScriptのthisプロパティでそのまんまですが「このコンポジションの・・」に変更されているのがわかります。
つまり、「このコンポジションCの中に、B1のレイヤーを作成すれば、B1のすべてをエクスプレッションで参照するようになる」ということになるわけですが、この機能の使い方は、あらかじめ、コンポジションBからB1のレイヤーを「通常のコピーペースト」で先にペーストしておき、その後に、この「相対的なプロパティリンクと一緒にコピー」の機能で、もう一つ同じレイヤーをペーストすると、最初にペーストしておいたB1というレイヤーを親のようにエクスプレッションで参照するようになる、という機能になります。

もちろん、先に「相対的なプロパティリンクと一緒にコピー」ペーストした後に、新たにB1という新規レイヤーを作成して、そのレイヤーにひもづけて動かす、でもかまいませんが、この機能の意図としては、新たな参照元となるB1というレイヤーを「先に」作成しておくことに意味があり、「相対的なプロパティリンクと一緒にコピー」ペーストする「だけで」、このコンポジションの参照元と同じ挙動をするようエクスプレッション制御が可能になる、というオペレーションに意味があります。

あとから参照元を作成した場合と、エクスプレッションエラー

先に「相対的なプロパティリンクと一緒にコピー」ペーストした後に、参照元となるレイヤーをコピーペーストで配置した、または新規で作成した場合、エクスプレッションエラーを解消する必要があります。エラーの内容を確認するには、エクスプレッションの行に表示されている!のマークをクリックすると確認可能ですが、エラーの解消は、一度エクスプレッションの文字列の上でクリックした後、enterキーで確定するか、タイムラインパネル内の余白でクリックすると、エラーは解消します。

Aecc14_pro018

ただし、大量のエクスプレッションエラーがある場合、エラーの解消は1つづつ手動で解決する必要があるため、この場合は、「相対的なプロパティリンクと一緒にコピー」ペーストしたレイヤーを一度削除してしまい、再度「相対的なプロパティリンクと一緒にコピー」ペーストした方が、エラーの修正をせずにすみます。

なお、エクスプレッションエラーが出ているかどうかを確認する場合は、レイヤー名を右クリックし、「エクスプレッションエラーを表示」を選択すると、エラーが発生しているエクスプレッションをタイムラインパネル内に一覧表示します。

Aecc14_pro015

この2つの機能は、参照元となるレイヤーに関連づけて、エクスプレッション制御で動かす場合に大変便利な機能になりますが、エクスプレッションを設定して いる数が多いレイヤーの場合には、これらの方法でコピーペーストしてしまい、不要なエクスプレッションのみ削除する、という使い方をすると、より効果的に データが作成できるかと思います。

なお、注意点としてですが、この機能は「他のレイヤーの、何らかのプロパティを参照しているエクスプレッション」に対して、その関連性を維持してコピーペーストする際に有効な機能ですが、「他のレイヤーを参照しないエクスプレッション」も使用している場合、そのソースも、元となるレイヤーを参照するエクスプレッションとして全て上書きされます。

例えば、time*100などを設定している場合、別のコンポジションに「プロパティリンクと一緒にコピー」ペーストした場合は、コピー元のデュレーションを参照し、エクスプレッションを手動で書き換えない限り、ペースト先のデュレーションの影響を受けないことになります。
また、相対的なプロパティリンクと一緒にコピーペーストした場合は、参照先は現在のコンポジション内にあるのが前提ですので、エクスプレッションを手動で書き換えない限り、現在のデュレーションを参照することになり、逆に、コピー元のデュレーションの影響を受けなくなります。
そのため、「他のレイヤーを参照するエクスプレッション」と、「他のレイヤーを参照しないエクスプレッション」が混在するレイヤーの場合には、そのエクスプレッション構造に注意してコピーペーストするようにしてください。

関連講座

↑ページTOPへ