リンクをクリップボードにコピー
コピー完了
このPSDファイルを使って、➋・➌・❹・❺の図形を動き回らせる動画を作りたい場合、
ファイルを読み込む際、“ドキュメントサイズ”を選ぶと、
それぞれの画像がきちんと配置された状態になるものの、シーケンス全体を囲うバウンディングボックスになってしまい、
“レイヤーサイズ”を選ぶと、
図形ごとの大きさに合ったバウンディングボックスにはなるものの、全ての図形が中央に配置されてしまいます。
図形の初期配置を保持させた状態で、バウンディングボックスを各画像のサイズに合わせる方法があれば、お教えくださいませ。
読み込みの段階でそう出来るのが理想ですが、三枚目の画像の状態から、バウンディングボックスの大きさを後から設定し直す方法でも有難いです。
どうぞよろしくお願い致します。
Windows10で、プレミアプロのバージョンは最新です。
各オブジェクトの位置は、Photoshop上でスクリプトを使って求めることができます。
下記リンクに投稿されているスクリプトは、左上と右下の座標を表示できるので応用して中心の座標を表示するようにしてみました。
Solved: How to find X & Y position of multiple objects on ... - Adobe Community - 11322087
コードをコピーしてメモ帳に貼り付けて拡張子 .jsx を付けて保存します。
// 2020, use it at your own risk;
#target photoshop
if (app.documents.length > 0) {
var theLayers = collectSelectedLayersBounds ();
alert (theLayers.join("\n"));
};
////// collect bounds of selected layers //////
function collectSelectedLayersBounds () {
...
リンクをクリップボードにコピー
コピー完了
こんにちは、myname_aaaa さん
Premiere Proなバージョンが具体的な番号(v25.1等)で教えていただければ有りがたいです。
私も試してみましたが、Photoshopからではご要望に沿うようにはできませんでした。
別案ですが、Premiere Proのグラフィックスのシェイプで各オブジェクトを描いてみたらいかがでしょうか。
各オブジェクト毎にバウンディングボックスが表示され、アニメーションは「エフェクトコントロール」の「トランスフォーム」の「位置」や「スケール」にキーフレームを打って行うことができます。
Photoshopで描いたオブジェクトの位置、サイズに合わせる場合は、Photoshopの画像をV1トラックに配置し、上からなぞれば良いのではと思います。ズームレベルを上げて微調整すれば精度良くできると思います。
【さらに別案ですが】
対象のオブジェクトのクリップを選択して、「エフェクトコントロール」パネルの「アンカーポイント」を選択すると、「プログラムモニター」中心に「アンカーポイント」マークが表示されます。このマークをドラッグ&ドロップでオブジェクト中心へ移動します。
「アンカーポイント」マークがオブジェクト中心にあれば、移動、拡大縮小、回転等のアニメーションが容易にできるようになります。
リンクをクリップボードにコピー
コピー完了
ご回答くださり、ありがとうございます!
返事が遅くなりまして、申し訳ございません。
プレミアプロのバージョンは25.1です。
例ではシンプルな四角や丸を使っていますが、実際は文字を動かしたりするので、シェイプで同じ形を作るのは少し難しいかも知れません。
案2の方についてもう少しお伺いしたいのですが、オブジェクトのちょうど中心にアンカーポイントを置く方法、もしくはちょうど中心のXY値を特定する方法をご存知でしょうか。
よろしければ、ぜひご教示願いたいです。
リンクをクリップボードにコピー
コピー完了
各オブジェクトの位置は、Photoshop上でスクリプトを使って求めることができます。
下記リンクに投稿されているスクリプトは、左上と右下の座標を表示できるので応用して中心の座標を表示するようにしてみました。
Solved: How to find X & Y position of multiple objects on ... - Adobe Community - 11322087
コードをコピーしてメモ帳に貼り付けて拡張子 .jsx を付けて保存します。
// 2020, use it at your own risk;
#target photoshop
if (app.documents.length > 0) {
var theLayers = collectSelectedLayersBounds ();
alert (theLayers.join("\n"));
};
////// collect bounds of selected layers //////
function collectSelectedLayersBounds () {
// set to pixels;
var originalRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
// get selected layers;
var selectedLayers = new Array;
var ref = new ActionReference();
ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
var desc = executeActionGet(ref);
if( desc.hasKey( stringIDToTypeID( 'targetLayers' ) ) ){
desc = desc.getList( stringIDToTypeID( 'targetLayers' ));
var c = desc.count;
var selectedLayers = new Array();
// run through selected layers;
for(var i=0;i<c;i++){
try{activeDocument.backgroundLayer;
var theIndex = desc.getReference( i ).getIndex();
}catch(e){var theIndex = desc.getReference( i ).getIndex()+1 };
// get id for solid color layers;
try {
var ref = new ActionReference();
ref.putIndex( charIDToTypeID("Lyr "), theIndex );
var layerDesc = executeActionGet(ref);
var theName = layerDesc.getString(stringIDToTypeID('name'));
var theIdentifier = layerDesc.getInteger(stringIDToTypeID ("layerID"));
var theBounds = layerDesc.getObjectValue(stringIDToTypeID("bounds"));
var theseBounds = [theBounds.getUnitDoubleValue(stringIDToTypeID("left")) + (theBounds.getUnitDoubleValue(stringIDToTypeID("right")) - theBounds.getUnitDoubleValue(stringIDToTypeID("left"))) / 2, theBounds.getUnitDoubleValue(stringIDToTypeID("top")) + (theBounds.getUnitDoubleValue(stringIDToTypeID("bottom")) - theBounds.getUnitDoubleValue(stringIDToTypeID("top"))) / 2 ];
selectedLayers.push([theName, theIdentifier, theseBounds]);
} catch (e) {};
};
// if only one:
}else{
var ref = new ActionReference();
ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
var layerDesc = executeActionGet(ref);
try {
var theName = layerDesc.getString(stringIDToTypeID('name'));
var theIdentifier = layerDesc.getInteger(stringIDToTypeID ("layerID"));
var theBounds = layerDesc.getObjectValue(stringIDToTypeID("bounds"));
var theseBounds = [theBounds.getUnitDoubleValue(stringIDToTypeID("left")) + (theBounds.getUnitDoubleValue(stringIDToTypeID("right")) - theBounds.getUnitDoubleValue(stringIDToTypeID("left"))) / 2, theBounds.getUnitDoubleValue(stringIDToTypeID("top")) + (theBounds.getUnitDoubleValue(stringIDToTypeID("bottom")) - theBounds.getUnitDoubleValue(stringIDToTypeID("top"))) / 2 ];
selectedLayers = [[theName, theIdentifier, theseBounds]]
} catch (e) {};
};
// reset;
app.preferences.rulerUnits = originalRulerUnits;
return selectedLayers;
};
対象のレイヤーを全て選択した状態で、Photoshopのメニューからスクリプトを選択して実行するとレイヤー名と数値が表示されます。
Premiereの読み込みは「レイヤーサイズ」を選択して、位置に値を入力します。
尚、After Effects は、Photoshopのレイヤーの位置のままで読み込みができるので、すぐに作業が行えます。
リンクをクリップボードにコピー
コピー完了
リンクをクリップボードにコピー
コピー完了
便利なスクリプトを教えて頂き、ありがとうございます!
早速使わせて頂きました。ガイドを使ってちまちまと一文字ずつ真ん中を割り出していたので、大変助かりました。
ありがとうございます!
リンクをクリップボードにコピー
コピー完了
こんばんは
情報ありがとうございます。
>実際は文字を動かしたりするので、シェイプで同じ形を作るのは少し難しいかも知れません。
ここの部分は、文字の移動やサイズ変更に連動してシェイプも移動やサイズ変更をさせるのでしょうか。これだったら「レスポンシブデザインー位置」機能を使用して容易に行うことができます。
また、シェイプは「ペンツール」を使用すれば自由な形を作成することもでき、キーフレームを打って変形もできます。
>オブジェクトのちょうど中心にアンカーポイントを置く方法、もしくはちょうど中心のXY値を特定する方法をご存知でしょうか。
目視ではなく、数値でということですね。次の方法はいかがでしょうか。
①「定規」と「ガイド」を表示させて、オブジェクトの上下端および左右端の座標値を読み取ります。この時「ズームレベル」を400%くらいにすると正確な座標値を読み取れると思います。
②読み取った座標値から上下方向、左右方向のそれぞれの中心座標値を算出して、ガイドを表示します。
③アンカーポイントをドラッグ&ドロップでガイドの交点へ移動します。この時「ズームレベル」を400%くらいにすると正確な位置に移動できると思います。
リンクをクリップボードにコピー
コピー完了
シェイプの機能を存じ上げなかったので、目から鱗でした。さっそく使用してみたのですが、効率があがったように思います!
色々な活用の仕方がありそうでしたので、調べてみながら使い続けていきたいと思います。
ありがとうございました!
リンクをクリップボードにコピー
コピー完了
こんばんは
>シェイプの機能を存じ上げなかったので、目から鱗でした。さっそく使用してみたのですが、効率があがったように思います!
少しはお役に立てたようで良かったです。
「プロパティ」パネルでシェイプをいろいろ試してみていただけますか。任意形状が描ける「ペンツール」、「長方形ツール」、「楕円ツール」、「多角形ツール」等があります。
1個のグラフィッククリップの中に複数のシェイプやテロップを入れることができ、それぞれが別個にアニメーションできるのも魅力ですね。
またシェイプを使用して容易にワイプ画面を作成することもできます。下記リンクの投稿の私の回答をご覧いただけますか。
リンクをクリップボードにコピー
コピー完了
シェイプに関する詳しいご説明、ありがとうございます!
色々と応用の幅が広い機能なようですね。自分の動画制作にも役立ちそうに思うので、たくさん触れてみたいと思います!
ありがとうございました!
新しいアドビコミュニティで、さらに多くのインスピレーション、イベント、リソースを見つけましょう
今すぐ検索