DavinciのTransformのpositionが難しい話

今回は、Davinci Resolveを使うときの小ネタの話を書いていきたいと思います。

Davinci Resolve便利でいいと思います。

しかし、納品フォーマットの都合や素材の合成などでピクセル単位で揃えたい時に何度か困ったことになったのでブログとしてまとめておきたいと思います。

内容としては以下のツイートの詳細とFXで移動させる方法の検証になります。

位置の値の単位ってなんだ?

基本的には以下の記事に書いてある通りです。

asteriscus.jp

移動させた時に、これってなんの値なんだってなりません...?

この値の単位が以下の計算式になっているので、ピクセル単位で合わせたい時に毎回複雑になります。

(タイムライン解像度/画面上でのクリップの表示解像度)*ピクセル単位の移動=設定する移動量

これを100x100pxの赤い四角をx:150px,y:150pxに持ってくるケースを例に、手順を追って説明していきたいと思います。

今回はIllustratorで100x100pxの赤い四角の画像と、テンプレートとなるFullHDにx:150,y:150pxの位置に枠を設置した画像を用意しました。

位置の基準位置は左上とし、枠のストロークはAlignOutsideでの1mmで作成しました。なので、最終的にはテンプレートの灰色の部分が赤色になって枠線の黒部分が残っていれば成功ということになります。

1. タイムライン上でのクリップの表示解像度

Davinciではクリップのスケーリングを設定することができます。 プロジェクトのデフォルト設定とクリップごとの設定の二つがあります。

プロジェクト設定でのスケーリングの設定
インスペクタウィンドウでのスケーリングの設定

値としては以下のような対応になります。 * Crop: スケーリングしない * Fit: 長辺をタイムラインに合わせる * Fill: 短辺をタイムラインに合わせる * Streach: 角の4点をタイムラインに合わせる

今回はスケーリングしたくないのでCropを使用します。

このスケーリングの値によってタイムライン上でのクリップの表示解像度が決まります。(スケーリングされた後の解像度が必要) Cropであれば画像の解像度そのままでStreachであればタイムライン解像度そのままですが、FitやFillはタイムラインに合っていない方の辺は計算で求める必要があります。

2. ピクセル単位の移動量を計算する

Davinciでの座標の基準点はタイムラインのセンターで、移動の基準点もクリップのセンターになります。

そして、x軸が右方向に正、y軸が上方向に正です。

なので、今回のケースであれば以下のような計算になります。

x: (-960+150)+50=-760
y: (540-150)-50=340

3. 式に当てはめてる

あとは難しくないですね。以下の式に当てはめていきます。

(タイムライン解像度/画面上でのクリップの表示解像度)*ピクセル単位の移動=設定する移動量

x: (1920/100)-760=-14,592 y: (1080/100)340=3,672

さてここで問題が発生します。

Xが行って欲しいところまで行かない

そう、このインスペクタで設定できる位置の値には上限があるのです...

どうやら、タイムライン解像度の-4〜4倍の値までのようです。

今回のケースのように小さな画像を大きなタイムラインで移動させようと思った時に問題が生じます。

それ以外のケース、タイムライン解像度の-4〜4倍の移動に収まるような移動であればこのやり方で問題なく行えます。 今回で言うとY座標の方は概ね正しい位置に表示されているのはわかるかと思います。

エフェクトを使った移動のやり方

インスペクタを使ったやり方ではなく、Effectを使ったやり方だとこの問題を回避しやすいです。

クリップに対して、Open FXのResolve FX TransformのTransformエフェクトを適用します。

こちらのエフェクトでは、Position XとPosition Yでパラメータを設定することができます。

こちらの値の基準はタイムラインでのクリップの表示解像度を1として-100~100まで移動することができます。

今回であれば、設定する値は以下のようになります

x: -760/100=-7.6
y: 340/100=3.4

いけてそうですね。拡大しても問題なさそうです。

これでもいけない時

例えば、素材がそもそも2pxとかしかなかったら100倍したとしても200pxしかありません。 このような時は本当に困ってしまいそうです。

そんな時は、一旦中くらいの解像度のタイムラインを作ってそれで合わせてから、そのタイムラインを本ちゃんのタイムラインに乗せてあげる必要がありそうです。

一応10x10pxでやった時の画像を添付しておきます。

半分の解像度のタイムラインでの作業
本ちゃんのタイムラインでの作業
実際に書き出したピクセルパーフェクトな10x10pxを配置した画像

まとめ

Davinciしんどいよって感じの内容でしたが、今回はクリップをピクセルパーフェクトに移動したい時のTipsでした。

ただ、このやり方であんまり納得していないので、もっと簡単にできるような気もするんですがやり方ご存知の方いないですかね...?