終了

スクリプトで次元分割した位置プロパティを選択したい

New Here ,
Oct 13, 2022 Oct 13, 2022

リンクをクリップボードにコピー

コピー完了

スクリプト初心者です。スクリプトの勉強をしていて、以下の通りトランスフォームの位置を選択するスクリプトをみつけました。


var selLayers = app.project.activeItem.selectedLayers[0];

var Prop = selLayers.property("Position");

Prop.selected = true;

 

<質問1>
位置を次元分割した場合、上記の「("Position")」の部分は、X、Y、Zそれぞれどのように指定すれば良いのでしょうか。
例えば回転の場合は「("Z Rotation")」で指定できるのに、位置は「("Z Position")」では指定できません(スクリプトが反応しません)。もしくは、このコードではできない場合、他のコードを教えていただけると助かります。

 

<質問2>

初歩的な質問で申し訳ないのですが、1行目の「selectedLayers[0];」の「[0]」は何を意味しているのでしょうか。調べ方もよくわからなくて、すみませんがご教示いただけると助かります。

キーワード
スクリプティング

表示

526

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Oct 14, 2022 Oct 14, 2022

リンクをクリップボードにコピー

コピー完了

2行目は、下記に書き換えてください。

 

var Prop = selLayers.property("トランスフォーム").property("X 位置");  //日本語版の場合

 

 

 [0]は、選択したレイヤーの内、最初に選択したレイヤーになります。

2番目に選択したレイヤーは、[1] です。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Oct 14, 2022 Oct 14, 2022

リンクをクリップボードにコピー

コピー完了

ありがとうございます!できました!大変助かりました。

[0]の意味もありがとうございます。なるほど、だから複数レイヤーを選択しても1つ目のレイヤーしか反応しなかったのですね。知識不足で大変恐縮ですが、「選択したレイヤー全て」でプロパティを選択したい場合は、「[0]」をどのようにすればよいのでしょうか。試しに消してみたら反応しなくなってしまい、方法がよくわからずすみませんがご教示いただけると助かります。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Oct 14, 2022 Oct 14, 2022

リンクをクリップボードにコピー

コピー完了

numLayers で選択したレイヤーの総数を求めて、for文で作業を繰り返す方法になると思います。
After Effects スクリプトリファレンス - numLayers 

 

After Effects 自動化の書籍が出版されているので、読んでみると勉強になると思います。

 

 

<追記>

すいません、

選択レイヤーの総数は、

selectedLayers.length

の間違いでした。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Oct 15, 2022 Oct 15, 2022

リンクをクリップボードにコピー

コピー完了

選択レイヤー全てのプロパティを選択する場合は、下記になります。

 

var myLayer = app.project.activeItem.selectedLayers.length;
for(i = 0; i < myLayer; i++){
var selLayers = app.project.activeItem.selectedLayers[i];
var Prop = selLayers.property("トランスフォーム").property("X 位置");
Prop.selected = true;
}

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Oct 15, 2022 Oct 15, 2022

リンクをクリップボードにコピー

コピー完了

ありがとうございます!さっそく教えていただいた書籍を読みながらforで作っていた所、なかなか反応しなくてどうしようか悩んでいたところでしたので、大変助かりました。

不勉強で本当に申し訳ありませんでした。

最後に頂いたコードを適用した所、思ったとおりに動きました。本当に助かりました。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Oct 15, 2022 Oct 15, 2022

リンクをクリップボードにコピー

コピー完了

After Effects 自動化の事例集を読まれていると思いますが、スクリプトの基本を勉強するには、JavaScriptを学ぶと良いです。
スクリプトは、AdobeのExtendScriptで作成しますが、JavaScriptのECMAScript 3(1999)が基になっています。


なお、エクスプレッションは、ECMAScript 2018が基になっているので、ExtendScriptより新しい機能が使用できます。
但し、JavaScriptのwebページ関連の機能はAfter Effects やPhotoshopでは使用しないので、参考書の大半は読まないかもしれません。


After Effects 自動化の著者が、「ExtendScript Toolkit 基本編」も書いているので、初めてプログラムを作成するなら参考になると思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Oct 15, 2022 Oct 15, 2022

リンクをクリップボードにコピー

コピー完了

最新

ご丁寧に勉強の仕方まで教えて頂きありがとうございます!承知しました。JavaScriptも参考にしてみます。

書籍のご紹介もありがとうございます。こちらも見てみます!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines