Skip to main content
saorin23380911
Inspiring
December 4, 2021
Answered

3次元空間で、複数レイヤーを連動させる方法

  • December 4, 2021
  • 2 replies
  • 1279 views

添付写真のようなレイヤー配置と動きを想定したとき、出来ればエクスプレッションなどで一括管理出来るようにしたいのですが、どうにもうまくいきません。

 

試行錯誤した挙句、今のところヌルに一連の動きをキーフレームで打って、それをA〜Cのレイヤーに親子付するという方法を取っています。

実際は3レイヤー以上はあり、奥にあるレイヤーは、Cレイヤーの方向からInしてAレイヤーの方向にOUTする、という流れです。

 

動きとしては、Macのdockのような感じです。

カーソルを合わせるとアプリがスケールアップしますが、あれを3D空間でやっているような感じでしょうか。

 

先に記しましたやり方も一つかと思いますが、もっとキーフレームやレイヤー数を少なく出来る方法があるような気がして、でも自分では今の方法が再現出来る限界でした。。

どなたか、お知恵をお貸しいただけますと幸いです。また、YouTubeなどで近いやり方があったよ、などご存じでしたら、教えていただけますと助かります。

 

何卒、よろしくお願い致します!

 

※使用バージョン2020

This topic has been closed for replies.
Correct answer Mukaida
一例ですが、
レイヤー(1)でモーションを作成した後、下記のエクスプレッションを2番目以降のレイヤー(位置)に追加すると時間をズラして同じ動きにすることができます。
ただし、途中で動きを停止させる場合は、タイミングに試行錯誤すると思います。
let a = thisComp.layer(thisLayer.index - 1).transform.position; // 一つ上にあるレイヤーを参照する
a.valueAtTime(time -  1.8) // −1.8秒遅れて動作する
なお、エクスプレッションの三角関数を使えば、円や楕円状にレイヤーを動かすこともできます。

2 replies

MukaidaCommunity ExpertCorrect answer
Community Expert
December 5, 2021
一例ですが、
レイヤー(1)でモーションを作成した後、下記のエクスプレッションを2番目以降のレイヤー(位置)に追加すると時間をズラして同じ動きにすることができます。
ただし、途中で動きを停止させる場合は、タイミングに試行錯誤すると思います。
let a = thisComp.layer(thisLayer.index - 1).transform.position; // 一つ上にあるレイヤーを参照する
a.valueAtTime(time -  1.8) // −1.8秒遅れて動作する
なお、エクスプレッションの三角関数を使えば、円や楕円状にレイヤーを動かすこともできます。
saorin23380911
Inspiring
December 12, 2021

Mukaidaさん

 

返答が遅くなりすみません。ご助言ありがとうございます!

ご提示いただいた案を試してみたのですが、どうもうまくいかず。。

ヌル同士が良くないのかな? と思い、コンポジション同士などやってみるものの、

同様のエラーで「式が無効」と判断されてしまいました。

 

▼エクスプレッションエラー

 

 

 

▼ちなみに、実際にヌルでどうにかつないだものはこちらになります。

(レイヤー名をソースネームにし忘れて見づらくてすいません…)

 

▼動かしたいコンポジションの位置をピックウィップでヌルに繋ぎ、ヌルの位置にキーフレームを打っています。

 

実際に作った動きは位置をセパレートしていたので、

Mukaidaさんのご提案テストの際は新たにヌルを作り直してやり直したのですが…エクスプレッションもコピペしたので間違ってはないと思うんですが、何がエラーになっているのか分からず。。

 

しかも、できれば導線はリニアではなくゆるくカーブを描くように設定したのですが、

3Dになると導線を曲線にすることができなくて。。

初歩的なつまづきかもしれませんが、ご助言いただけると助かります。

 

======

 

また、別の視点の質問で恐れ入りますが、こちらもよろしければお知恵をお借りしたく。。

画像内のレイヤーの中で、実際に動いている以下のレイヤーの重なりがうまくいきません。

 

<レイヤー順>

1「Image 〇」レイヤー/描画「ノーマル」

2「Frame_〇」コンポジションレイヤー/描画「スクリーン」

3「CTRL」ヌルレイヤー

 

このひと固まりで、次々とレイヤーが手前から奥へ回るように動かしているのですが、

レイヤー順のせいか、重なりが汚くなり、Mukaidaさんがサンプルで見せてくださったようなきれいな重なりが実現できません。

 

出来れば2のコンポジションはスクリーンで透けた状態にし、1は画像そのままの状態で見せたいのですが、ご覧の通りの状態で。。

 

上手く説明できているかどうか段々自信がなくなってきたのですが、

現状をまとめますと、「透けているイメージをMacのDockのようにスムーズに動かしたいのにできない」というところでしょうか。。

 

 

======

 

以上です。

追加で質問もしてしまい大変恐れりますが、ご助言いただけますと幸いです。

何卒よろしくお願い致します!

Community Expert
December 12, 2021

エクスプレッションの設定が、以前の方式になっていないでしょうか。
プロジェクトパネルの下にある、ロケットのアイコンをクリックするとエクスプレッションの設定が出てきます。
「JavaScript」に設定して下さい。

saorin23380911
Inspiring
December 4, 2021

※追記※

すみません、大事なことが抜けておりました。

一括管理したい、というのは、例えばAレイヤーが①②の動きをした時に、BCレイヤーも同じように連動して動くようにしたい、ということです。

こうなるとエクスプレッションかなと思い調べたり試作してみたのですが、思うような動きにならず。。

①②のように、弧を描くような軌道にしたいのですが、そういうモーションパス(ということになるのでしょうか…)はエクスプレッションで制御するのは難しいのでしょうか…