我很想知道你对我博客的看法!方便请到 关于 页面留下评论!

上一篇文章提到了 DaVinci Resolve 对于素材位置的计算逻辑非常奇怪并且不肯修改,这篇我试图概括一下具体的计算逻辑方便自己使用。如果你也遇到了同样的问题并且希望他们改进,可以去支持 我发的帖子(英语)

计算基准

缩放/裁切/位置永远以原图大小作为基准,不会互相影响。

项目设置里有“缩放原图至适配大小且不出现裁切”和“不调整原图大小并裁切超出部分”两个比较合理的选项,“缩放原图至适配大小且不出现裁切”可以理解为插入时间线之前就改变了原图大小。例如画布尺寸 1920x1080,素材尺寸 512x512,选择“缩放原图至适配大小且不出现裁切”,相当于用外部命令把素材缩放到 1080x1080 然后再插入时间线,后续缩放/裁切/位置均以 1080x1080 作为基准。

缩放

缩放变换只计算原图大小。

缩放变换默认以素材中心作为基准。由于位置变换计算太复杂了,不考虑改变锚点参数的情况。

裁切

裁切只计算原图大小。无论素材的缩放变换参数是多少,都使用原图大小计算结果。

例:画布 1920x1080,素材 512x512。

  • 选择“缩放原图至适配大小且不出现裁切”,此时原图大小是 1080x1080,左侧裁切 50% 应输入 1080 * 50% = 512
  • 选择“不调整原图大小并裁切超出部分”,此时原图大小是 512x512,左侧裁切 50% 应输入 512 * 50% = 256

由于位置变换计算太复杂了,不考虑勾选“保留图片位置”的情况。

位置

位置变换只计算原图大小。无论素材的缩放变换参数和裁切参数是多少,都使用原图大小计算结果。

DaVinci Resolve 对于素材位置输入框使用特殊的计算逻辑(怀疑是 bug),假设画布宽度为 canvas_width,画布高度为 canvas_height,原图宽度为 clip_width, 原图高度为 clip_height,如果想将素材水平方向移动 x 像素,垂直方向移动 y 像素,则需要填入的数据需要按照 f(x) = x / clip_width * canvas_widthf(y) = y / clip_height * canvas_height 进行计算。注意,按此计算逻辑,填入的两个数据的比例显然和实际移动的像素比例不同。

例:画布 1920x1080,素材 512x512。

  • 选择“缩放原图至适配大小且不出现裁切”,此时原图大小是 1080x1080,向左移动 540 像素应输入 540 / 1080 * 1920 = 960
  • 选择“不调整原图大小并裁切超出部分”,此时原图大小是 512x512,向左移动 540 像素应输入 540 / 512 * 1920 = 2025
既然看了喵写的文章,不打算投喂一下再走吗?哼!
微信支付 微信支付
支付宝 支付宝