Към съдържанието

ORPHEUS

Клип за българската история, рендериран от код, в който всяко изображение преминава плавно в следващото

Роля
Сам, ръководя агенти
Статус
Пуснат
Код
Частно хранилище
Технологии
Remotion 4ReactTypeScriptPythonuharfbuzzfontToolsffmpegBlender
Кадър от ORPHEUS: заглавието „Krum raised a toast“ в червено и бяло до гравирана чаша-череп със сребърен ръб и червена течна повърхност, червени лъчи зад нея на тъмен фон.
Кадър от филма: наздравицата с чашата-череп.

В числа

139,7s

продължителност, без глас зад кадър

78

плана, зададени в цели такта върху силните времена на музиката

77/ 77

начала на планове попадат на не повече от един кадър от силното си време

20

склейки във v2, срещу 91 при еталона и 309 във v1

3,53

средна разлика между кадрите, срещу 4,14 при еталона

Проблемът

Летвата беше поставена от един вирусен клип за западната цивилизация, рендериран от код, на име Prometheus. Исках такъв за България: от варненското злато (ок. 4500 г. пр. Хр.) до родопската песен от Златната плоча на „Вояджър“, с оригинална музика и без глас зад кадър, на английски и на български. Първите кадри изглеждаха като резултат от vibe coding. v1 оправи външния вид, но загуби зрителя: имаше 309 склейки и тресеше камерата, около три пъти повече движение от еталона. Присъдата ми беше: твърде много движение и трудно за следене. Поисках нещо, което се преобразява плавно и се чете като илюстрация.

Подходът

v2 не прави склейки: всяко изображение се преобразява в следващото, а думите стоят неподвижно, докато се четат. Правилата на проекта забраняват платени услуги и генеративни AI модели, затова всеки кадър идва от код и от шрифтове и изображения с посочен източник, с ред за лиценза на всеки чужд файл и източник за всяко твърдение на екрана (453 реда в research/facts.md). Музиката е главният часовник: 78 плана са зададени в цели такта и са поставени върху силните времена на музиката. Видът е гравюра върху дърво и шевица, отпечатани с две плочи, черна и червена с нарочно разминаване при наслагването, върху хартия от памучни влакна, а за нощните сцени има негативна линогравюра.

Кадър от ORPHEUS: заглавието „There was gold“ над бели изрязани фигури на златен бик и по-малко животно върху тъмен гравиран фон, с надпис „Varna necropolis, 4500 BC“.
Кадър от филма: злато от Варненския некропол.

Как работи

  1. Ключови форми

    Всяко изображение има ключова форма: контурът му, описан с 144 линии по 16 точки, взет от самото изображение (изрязани силуети, брегови линии, контури на букви, гравирани полета от линии). Преходът започва върху силно време и трае от 12 до 34 кадъра. Изображението, което си отива, се издълбава по успоредни линии, ключовата му форма се зашива като прав бод и литва към формата на следващото изображение, а новото се отпечатва от контура си по карта на изрязване.

  2. Надписи, които остават четими

    Заглавията са изчертани по контурите на шрифтове (оформяне с HarfBuzz, контури с fontTools). Думите стоят неподвижно, докато се четат, а цели повтарящи се думи се плъзгат до новото си място: 681 става SINCE 681. Буквите променят формата си само там, където историята е за самите букви: глаголицата става кирилица, а Б, Г и А от АБВГД се плъзгат в БЪЛГАРИЯ. На всеки кадър екранът показва четима дума или нищо.

  3. Две проверки на всяко рендериране

    verify_render.py сравнява звука със заключената музика чрез кръстосана корелация (отместване 0 кадъра) и изисква видима промяна на изображението в рамките на един кадър от началото на всеки от 77-те плана. flashcheck.py прилага кадър по кадър праговете на WCAG 2.2 SC 2.3.1 за общи и за червени проблясъци. Скриптът за рендериране завършва с код 1, ако някоя от двете проверки падне, а кодирането за споделяне минава през проверките още веднъж. Стартовото отместване на AAC (priming) при Remotion се избягва, като картината се рендерира без звук, а музиката се добавя към нея с ffmpeg.

  4. Измерено спрямо еталона

    Един скрипт с ffmpeg измерва всяка склейка: оценка за смяна на сцена над 0,2 върху кадри 160 на 90, плюс средна разлика между кадрите. Еталонният клип има 91 склейки и 4,14, v1 имаше 309 и 12,73, v2 има 20 и 3,53. 20-те „склейки“ на v2 са смени на хартията и най-натоварените заглавни надписи; нито един план не преминава в друг със склейка.

Заглавен кадър на ORPHEUS: големи червени букви със засечки над гравирани на ръка хълмове с контурни линии, с малки черни дървета и червено изгряващо слънце върху пергамент.
Началното заглавие над гравирани родопски хълмове.

Какво избрах и какво отпадна

Избрах

Плавно преобразяване между изображенията по ключови форми и карти на изрязване

Пред

Склейките, рязките завъртания на камерата, стробоскопите, тресенето на камерата и треперещите контури от v1

Около три пъти повече движение от еталона и трудно за следене.

Избрах

Заглавия, изчертани по контурите на шрифта, при които се плъзгат само цели повтарящи се думи

Пред

Букви, които се топят в други букви, и думи, които се пръскат на летящи контури

Междинното състояние не се четеше, както показаха първите контактни листове.

Избрах

Карти на изрязване като статични PNG файлове, с праг, зададен от SVG филтър зад CSS маска

Пред

Маскиране през SVG foreignObject и CSS маски, чийто URL адрес се сменя на всеки кадър

Този Chromium не прилагаше първото, а второто губеше кадри във v1.

Избрах

Без слой със звукови ефекти във v2

Пред

Звуковите ефекти от печатница във v1

Бяха съобразени със склейките на v1, а във v2 няма склейки, към които да се подравнят.

Резултатът

Английската основна 2D версия минава и двете проверки: 77 от 77 начала на планове в рамките на един кадър, отместване на звука 0,0 кадъра, най-висока честота на проблясъците 3 в секунда. Българската основна 2D версия е рендерирана, а редът ѝ за проверката в README още е само заглушка. 3D вариантите на v2 не са рендерирани. Пълното рендериране в пълна резолюция отнема около 11 минути, а кодирането за споделяне 3. Хоровите семпли са с лиценз CC Sampling Plus, който изключва употреба в реклама, така че клипът не може да стане реклама, без да се сменят.

Какво следва

Ще пусна българската основна версия през проверките, ще изчертая двата 3D варианта от плочите в Blender и ще сменя хора, преди клипът да се ползва за търговски цели.