Skip to main content
tomoyukin45879924
Participating Frequently
October 7, 2018
Answered

AEスクリプトで、選択した複数のコンポ内のレイヤーの位置をまとめて調整したいです。

  • October 7, 2018
  • 1 reply
  • 6653 views

AEのスクリプトで、プロジェクトパネル内のコンポ(複数)を選択し、選択したコンポ内のレイヤーの位置(キーフレーム付き)をまとめて調整するような

スクリプトを作成したいのですが、スクリプトの作成を教えていただきたいです。

なにとぞよろしくお願いいたします。

This topic has been closed for replies.
Correct answer Mukaida

大変恐縮なのですが、「スクリプトで一括処理を行える」がマストです。

細かい作成ルール(会社の縛り)に関しての説明は割愛させていただきますが、

エクスプレッションにした後、キーフレーム変換というのも分け合ってNGなのです。

なので、スクリプトにて「一括で選択したコンポ内のレイヤーの位置キーフレームに、任意の数値を加算」を求めております。


setValueAtKey で検索したところ、下記のフォーラムにレイヤー単位で位置の値を再設定するスクリプトが投稿されていたので、お試しください。

https://forums.creativecow.net/docs/forums/post.php?forumid=227&postid=27135&univpostid=27135&pview=t

<追記>

一括処理までは、できませんでしたが、アクティブなコンポジションの全てのレイヤーに適用できるようにしてみました。

(特定のレイヤーを選択することはできません)

var n = app. project. activeItem. numLayers;

var iLayer;

for (iLayer=1;iLayer<=n;iLayer++) {

     var myLayer = app.project.activeItem.layer(iLayer);

     var myProp = myLayer.property("Position");

     var curVal;

  if (myProp.numKeys > 0){

  for (var i = 1; i <= myProp.numKeys; i++){

  curVal = myProp.keyValue(i);

  myProp.setValueAtKey(i,[curVal[0]+300,curVal[1]+0]);  // X: +300 Y: +0

  }

  }else{

  curVal = myProp.value;

  myProp.setValue([curVal[0]+300,curVal[1]+0]);    // X: +300  Y: +0

  }

}

1 reply

Community Expert
October 8, 2018

スクリプトではありませんが、ヌルオブジェクトを使う方法はどうでしょう。

ヌルオブジェクトを1個作成してから、移動させるレイヤー全てを選択、レイヤーの横にある「親とリンク」の項目を「ヌル」に設定します。

ヌルを移動させるだけで、全てのレイヤーが移動します。

コンポジション単位での編集ですが、作業は数分で終了すると思います。

tomoyukin45879924
Participating Frequently
October 8, 2018

ご回答ありがとうございます。

残念ながら、「ヌル」や、「あらかじめ位置変更用にプリコンポ」をしておくなどのやり方ができない理由があり、どうしてもスクリプトでやる必要があるのです。

理由についてですが、私はゲーム業界にて、CGデザイナーをしております。AEでキャラクターなどが上から下に移動して画面INする素材を作成しAEで保存、そのAEをプログラマーへ渡してゲームに組み込んでいただいたいるのです。

(その際、あくまでキャラクターの動き素材作成としてキーフレームにて動きを付けているので、親子付けしてしまうとプログラマーがデータを吸い出せないそうなのです)

今回も、100個近くキャラクターが上から下にINする動きを作成した後で、クライアント様から、座標を左上にずらしてほしいといった要望がありました。ゲームのインターフェースはクライアント様が頻繁に変更をかけてしまうので、動きを作った後に簡単に変更できるスクリプトがあれば作業時間が大幅に短縮できるのです。

なので、どうしてもスクリプトにてやる必要があるので、やりかたを知っている方がいらっしゃったら教えていただきたいです。

以上です、なにとぞよろしくお願いいたします。

Community Expert
October 8, 2018

事情があったのですね。

スクリプトについては助言できませんが、キーフレームをベイクしてもよければ、下記のツールを使って、複数のレイヤー同時にエクスプレッションの追加とキーフレームに変換後のエクスプレッションの削除を行えます。

Expressionist - aescripts + aeplugins - aescripts.com

エクスプレッション追加の前に、最初と最後のフレームへ キーを作成する必要があると思います。