UXP API(premierepro)で Motion の Position(PointF型)パラメータに新しい値を書き込むと 32767 に破損する
環境
- Premiere Pro 25.6.2 および 26.5.0(両方で再現、Windows 11)
@adobe/premiereproUXPプラグイン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%への変更を確認済み)
まとめ ComponentParam に PointF 型の値を書き込む処理に、Premiere Pro 25.6.2/26.5.0共通の不具合があるようです。
