«Плавна» інтерполяцій ключових кадрів

Чи запитували ви себе, чому режим плавної інтерполяції Kdenlive може призводити до перевищення значень між ключовими кадрами? І як наказати Kdenlive уникати таких ситуацій?

Почнімо заглиблюватися у питання і пориньмо у дивний світ плавності. Не хвилюйтеся, ми обійдемося без вивчення або розуміння математичних основ. Просто розглядатимемо рисунки. Також розглянемо принципи уникнення помилок, коли вони є небажаними. А для тих, кому все ж кортить дізнатися, що таке «плавна» інтерполяція, приготовано матеріали для подальшого вивчення у розділі Нотатки наприкінці цієї сторінки.

Схил наростання

kkdenlive2308_smooth_keyframes_1a.webp

Ключові кадри в ефекті Яскравість (за ключовими кадрами)

Почнімо із простої рампи. Ми скористаємося двома ключовими кадрами[1]. Для одного з них встановимо нижній рівень значення, а для другого — верхній. Конкретні рівні не мають значення. Для обох ключових кадрів встановимо плавний режим інтерполяції.


kdenlive2308_smooth_keyframes_1b.webp

Показ ключових кадрів кольорового кліпу

На панелі показу ефектів у кліпі на монтажному столі форма виглядає яка проста рампа. Але якщо поглянути на інтерпольовані значення ближче, при перетягуванні позиції відтворення на монтажному столі, ви зауважите, що нахил рампи змінюється. Наприкінці і на початку нахил є меншим, ніж посередині, де він вищий.

Але що насправді відбувається?


kdenlive2308_catmull-rom_1.webp

Візуалізація інтерполяції Катмулла-Рома у GeoGebra

Маємо цей інтернет-інструмент з відкритим кодом GeoGebra для роботи з математикою у рушії MLT Kdenlive.

На цьому рисунку показано два ключових кадри P1=0 і P2=1 із зовсім типовою конфігурацією із рампою підвищення. Якщо у вас вже виникло питання: немає значення, на яких саме кадрах розташовано окремі ключові кадри.

Плавну інтерполяцію, яку обчислить MLT, намальовано як товсту зелену лінію. Вона трохи вигинається, подібно до великої літери S, втім, лише трохи.»

І, якщо придивитися, дотична до зеленої лінії у початковій і кінцевій точці не є горизонтальною — цього б очікував автор документації для початку.

Можливо, вам хочеться дізнатися, для чого призначено два інших ключових кадри, P0 і P3? Гаразд, для базових математичних алгоритмів потрібно чотири ключових кадри, щоб інтерполювати посегментно між будь-якими двома сусідніми ключовими кадрами. Якщо немає попереднього (P0) або наступного (P1) ключового кадру, ми просто повторюємо лівий (P1) або правий (P2) ключовий кадр.

Наростання і… надмірне зміщення

kdenlive2308_smooth_keyframes_2a.webp

Ключові кадри в ефекті Яскравість (за ключовими кадрами)

Тепер додамо третій ключовий кадр, щоб усе виглядало як схил із плато. Результат показано на знімках вікон.





kdenlive2308_smooth_keyframes_2b.webp

Показ ключових кадрів кольорового кліпу

А тепер на рампі виник видимий горб замість різкого згину. Гаразд, виглядає плавним, але не зовсім таким, як ми на це сподівалися? Чому ж так сталося?

kdenlive2308_catmull-rom_2.webp

Візуалізація інтерполяції Катмулла-Рома у GeoGebra

Тепер це наша пилка із плато: P0=0, P1=1, P2=2. Втім, не слід перейматися нумерацією ключових кадрів.

Очікували, що плато буде прямим плато? Звичайно ж. Але ви, мабуть, вже зауважили, що Kdenlive не дає точно такого результату. Замість цього, базові математичні алгоритми дають перевищення інтерпольованих значень, як можна легко бачити на рисунку.

Базові математичні алгоритми працюють так: інтерполяція плавна, отже нахил ліворуч від P1 є таким сами, що і праворуч від P1. Так, це трохи інша «плавність», ніж та, на яку ви, можливо, розраховували.

Якщо вам потрібно рівне плато, вам слід встановити лінійний режим інтерполяції у ключовому кадрі P1. Між іншим, це не змінить попередній плавний сегмент будь-яким чином. І це дасть нам «різкий згин» у P1, але, на щастя, це, ймовірно, буде непомітним у більшості ситуацій.

Вгору-на рівні-вниз

kdenlive2308_smooth_keyframes_3a.webp

Ключові кадри в ефекті Яскравість (за ключовими кадрами)

kdenlive2308_smooth_keyframes_3b.webp

Показ ключових кадрів кольорового кліпу

Додамо ще один, четвертий ключовий кадр. Тепер у нас спочатку підвищення, потім плоска ділянка, потім зниження. Типовий шаблон ключових кадрів із наростанням і притлумленням.




І, погляньте, що вийшло: маємо чудовий горбик, але він некрасивий і не плоский усередині.

kdenlive2308_catmull-rom_3.webp

Візуалізація інтерполяції Катмулла-Рома у GeoGebra

Цього разу ми поглянемо на середню секцію P1-P2. Ліворуч ми бачимо рампу підвищення, а праворуч — рампу зниження.

Знову ж таки, «плавність» тепер означає, що у сегментах не буде різких згинів. Замість цього, лівий і правих нахили дотичної є неперервними функціями у P1 і P2; тобто у середній секції. І це спричиняє перевищення нашого інтерпольованого значення.

Робимо плоску ділянку чудовою знову

kdenlive2308_smooth_keyframes_4a.webp

Плавні ключові кадри в ефекті Яскравість (за ключовими кадрами)

kdenlive2308_smooth_keyframes_4b.webp

А тепер, як отримати плоску вершину? На щастя, досягти цього просто, як можна бачити зі знімків вікон.

1. keyframe: smooth,
2. keyframe: linear (interpolated!),
3. keyframe: smooth,
4. keyframe: smooth (albeit that does not really matter if there are no further keyframes).

Нотатки

Інформація для подальшого ознайомлення

Як ви могли знати (а могли і не знати), рушієм обробки даних Kdenlive є MLT Multimedia Framework. Хоча у MLT реалізовано плавну інтерполяцію smooth interpolation десь із середини 2013 року, Kdenlive певний час відставав, і лише тепер у програмі передбачено підтримку трьох режимів інтерполяції — лінійного, дискретного і, нарешті, плавного. Як можна бачити з source code MLT, плавна інтерполяція виконується за допомогою Catmull-Rom spline. Зокрема, у MLT використано так званий «однорідний» варіант, оскільки він дуже простий. Недоліком використання цього варіанта є те, що іноді у нього є небажана властивість перевищення значень, особливо тоді, коли ви цього найменше очікуєте.

Джерела

Початковий текст було подано користувачем TheDiveO до зниклого тепер блогу kdenlive.org. Для цієї документації його було запозичено з kdenlive.org, оновлено і адаптовано до загального стилю.