Skip to main content
Participant
September 13, 2026

UXP API(premierepro)で Motion の Position(PointF型)パラメータに新しい値を書き込むと 32767 に破損する

  • September 13, 2026
  • 0 replies
  • 13 views

環境

  • Premiere Pro 25.6.2 および 26.5.0(両方で再現、Windows 11)
  • @adobe/premierepro UXPプラグインAPI経由

症状 Motionコンポーネントの「位置」(Position)パラメータに ComponentParam.createSetValueAction() で新しい値を書き込むと、書き込んだ側の座標が意図した数値ではなく 32767(符号付き16bit整数の最大値)になります。数値1つだけのパラメータ(スケール等)では同じ書き込み経路で正常に動作するため、PointF型(2値)パラメータに限定した不具合と考えられます。

再現手順

const ppro = require("premierepro");
const project = await ppro.Project.getActiveProject();
const sequence = await project.getActiveSequence();
const track = await sequence.getVideoTrack(1);
const items = await track.getTrackItems(ppro.Constants.TrackItemType.CLIP, false);
const clip = items[items.length - 1];
const chain = await clip.getComponentChain();
// Motionコンポーネントを取得(不透明度以外)
let motion = null;
for (let i = 0; i < chain.getComponentCount(); i++) {
  const c = chain.getComponentAtIndex(i);
  if ((await c.getDisplayName()) !== "不透明度") motion = c;
}
// Positionパラメータ(displayName: "位置")を取得
const posParam = /* motionのparamをdisplayNameで検索 */;

project.lockedAccess(() => {
  project.executeTransaction((compoundAction) => {
    const posPoint = ppro.PointF(300, 100); // newを付けない形式
    const keyframe = posParam.createKeyframe(posPoint);
    compoundAction.addAction(posParam.createSetValueAction(keyframe, true));
  }, "Set Position");
});

 

期待する結果 Position が (300, 100) に設定される。

実際の結果 Position が (32767, 32767) 相当の異常値になる(エフェクトコントロールパネル上でも確認)。

追加の切り分け結果

  • X座標だけ新しい値を書き込む → Xだけ32767になり、Yは元の値のまま正常
  • Y座標だけ新しい値を書き込む → Yだけ32767になり、Xは元の値のまま正常
  • つまり「新しい値を書き込んだ軸だけ」が必ず32767に破損し、書き込んでいない軸は正しく保持される、という対称的な再現性があります
  • new ppro.PointF(x, y)(newあり)は上記よりさらに悪化し、両軸とも常に32767になります。ppro.PointF(x, y)(newなし、関数呼び出し形式)のほうが症状は軽いですが、それでも書き込んだ軸は破損します
  • 同じ createKeyframe + createSetValueAction の経路で、Scale(スケール、単一の数値パラメータ)は正常に動作します(100%→200%への変更を確認済み)

まとめ ComponentParamPointF 型の値を書き込む処理に、Premiere Pro 25.6.2/26.5.0共通の不具合があるようです。