Підкаст "ITMO Research_": як підійти до синхронізації AR-контенту з шоу в масштабі цілого стадіону

Це перша частина текстової розшифровки другого інтерв'ю для нашої передачі (Apple Podcasts, Яндекс.Музика). Гість випуску Андрій Карсаков (kapc3d), к.т.н., старший науковий співробітник Національного центру когнітивних розробок, доцент Факультету цифрових трансформацій.

З 2012 року Андрій працює у науковій групі Візуалізація та комп'ютерна графіка. Займається великими прикладними проектами на державному та міжнародному рівні. У цій частині розмови ми говоримо про його досвід AR-супроводу масових заходів.

Підкаст "ITMO Research_": як підійти до синхронізації AR-контенту з шоу в масштабі цілого стадіону
Фото ЦеІнженерний RAEng (Unsplash.com)

Контекст та завдання проекту

Таймкод (за аудіоверсії) - 00:41

dmitrykabanov: Я хотів би почати з проекту «Європейські ігри». Він багатокомпонентний, у підготовці брало участь кілька команд, а забезпечити доповнену реальність для багатотисячної аудиторії під час заходу на стадіоні — досить серйозне завдання. З точки зору вашої участі, це було програмне забезпечення насамперед?

kapc3d: Так, ми зробили програмну частину та забезпечували супровід під час проведення шоу. Потрібно було в реальному часі все відстежувати, моніторити та запускати, ще працювати з телевізійною групою. Якщо розглядати цей проект загалом, то можна говорити про церемонію відкриття-закриття Європейських ігор у Мінську, а також про церемонію відкриття чемпіонату WorldSkills у Казані. То була однакова схема роботи, але різні заходи. Між ними був проміжок на два місяці. Проект ми готували разом із хлопцями з компанії Sechenov.com.

Познайомилися з ними випадково на Science Fest, що проходив восени 2018 року. Наші магістранти шоукейсилися зі своїм курсовим проектом на тему VR. Діти підійшли до нас і запитали, чим ми займаємося у себе в лабораторії. Виглядало це приблизно так:

— Ось ви з VR працюєте, а з доповненою реальністю вмієте?

— Ну, начебто, так.

— Є таке завдання з такими вступними. Чи зможете зробити?

Ріпу трохи почухали, нереального начебто нічого немає:

— Давайте спробуємо попередньо все вивчити, а далі знайдемо рішення.

Дмитро: Вони займаються лише медійним супроводом?

Андрій: Роблять full stack. З погляду менеджменту та організації — повністю займаються режисурою, постановкою, підбором декорацій, логістикою та іншим технічним забезпеченням. Але їм хотілося зробити щось особливе для європейських ігор. Дані спецефекти, на кшталт змішаної реальності, роблять для телебачення досить давно, але вони не бюджетні з погляду технічної реалізації. Тож хлопці шукали альтернативні варіанти.

Дмитро: Давайте докладніше обговоримо завдання. У чому вона полягала?

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

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

Андрій Карсаков, фото з матеріалу Університету ІТМО
Підкаст "ITMO Research_": як підійти до синхронізації AR-контенту з шоу в масштабі цілого стадіонуУ нас було два ключові компоненти цього проекту — персональний досвід, який люди можуть отримати через мобільні пристрої та те, що йде в телевізійну трансляцію та інформаційні екрани на самому стадіоні.

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

Нам потрібно було дві практично різні системи повністю синхронізувати за часом. Але особливість таких шоу в тому, що це комплексні заходи, де задіяна велика кількість технічних служб та всі операції виконуються за тайм-кодами. Тайм-код — це конкретний момент часу, в який щось стартує: світло, звук, вихід людей, пелюстки сцени, що відкриваються, і так далі. Ми повинні були підлаштуватися під цю систему, щоби все у нас запускалося в потрібний момент. Ще одна особливість була в тому, що сцени та епізоди з доповненою реальністю були сценарно зав'язані між собою.

Дмитро: Але ви все-таки вирішили відмовитися від використання тайм-кодів, через високі ризики виникнення форс-мажорів, або спочатку порахували якісь потужнісні характеристики і зрозуміли, що навантаження на всю систему буде досить високим?

Андрій: Якщо робити сервіс синхронізації на таку аудиторію, це не дуже складно. Запити в жодному разі не будуть падати в один момент. Так, навантаження високе, але це не аврал. Питання в тому, чи варто витрачати на це ресурси та час, якщо зненацька мережу погасять. Ми не були впевнені, що цього не станеться. Зрештою, все працювало, з перебоями через навантаження, але працювало, а ми — синхронізувалися за тайм-кодом за іншою схемою. Це був один із глобальних челенджів.

Складності реалізації з погляду UX

Таймкод (за аудіоверсії) - 10:42

Андрій: Ще нам потрібно було враховувати, що стадіон — це не класичний концертний майданчик, і синхронізувати системи простору для мобільних пристроїв. Так, якийсь час тому вирусилась історія з доповненою реальністю на концертах Eminem, потім був кейс із Лободою.

Фото Роберт Бай (Unsplash.com)
Підкаст "ITMO Research_": як підійти до синхронізації AR-контенту з шоу в масштабі цілого стадіонуАле це - завжди експірієнс in front of you - весь натовп стоїть перед сценою, синхронізація досить проста. У випадку зі стадіоном потрібно розуміти, з якого боку ти перебуваєш по колу, відносне положення, щоб стадіон сів у той простір, який у віртуальному середовищі є. То справді був некислий челендж. Намагалися вирішити його у різний спосіб, і вийшов близький кейс до того, що було реалізовано у Лободи, але не в усьому.

Ми давали користувачеві визначитися, де він знаходиться. Зробили розмітку стадіону, де люди обирали сектор, низку, місце. Усе це — чотири «кліки». Далі нам залишалося визначити напрямок на сцену. Для цього ми показували силует того, як приблизно має виглядати сцена з користувальницького ракурсу. Він поєднував його, тапав і все — сцена сідала. Ми намагалися максимально спростити цей процес. Все ж таки 90% глядачів, які хотіли подивитися шоу, — це не ті люди, які мають досвід спілкування з доповненою реальністю.

Дмитро: Для цього проекту був окремий додаток?

Андрій: Так, додаток для iOS та для Android, яке ми пушили в сторі. По ньому була окрема промо-кампанія. Було попередньо докладно розказано, як завантажити та інше.

Дмитро: Треба розуміти, що людині ніде фізично перевірити та повчитися використовувати таку програму. Тому завдання із «навчанням» аудиторії ускладнювалося.

Андрій: Так Так. З UX ми наловили багато шишок, тому що користувач хоче отримати досвід у три кліки: скачав, встановив, запустив — запрацювало. Багатьом ліньки ходити складними туторіалами, читати навчання та інше. І ми не намагалися все максимально пояснити користувачеві в туторіалі: тут відкриється віконце, доступ до камери, інакше не запрацює і так далі. Скільки б ти не писав пояснень, як би ти не розжовував, які б гіфочки не вставляв, народ цього не читає.

У Мінську ми зібрали великий пул фідбека по цій частині, і вже багато чого змінили для застосування в Казані. Ми заганяли туди не лише ті фонограми та ті тайм-коди, які відповідають конкретному епізоду доповненої реальності, а брали повністю всі фонограми та тайм-коди. Так додаток чув, що відбувається в момент запуску, і — якщо людина не в той момент зайшла — видавала інформацію: «Товаришу, вибач, твій AR-епізод буде через 15 хвилин».

Трохи про архітектуру та підхід до синхронізації

Таймкод (за аудіоверсії) - 16:37

Дмитро: Синхронізацію таки вирішили робити за звуком?

Андрій: Так, це вийшло випадково. Ми перебирали варіанти та натрапили на компанію Cifrasoft з Іжевська. Вони роблять не особливо накручену, але залізно працюючу SDK, яка дозволяє за звуком синхронізуватися з таймінгом. Систему позиціонували для роботи з ТБ, коли ти за звуком умовної реклами можеш виводити щось у додатку або на доріжці фільму давати інтерактив.

Дмитро: Але одна річ — ти сидиш у вітальні, а інша — багатотисячний стадіон. Як у вас все склалося з якістю запису звуку та його подальшим розпізнаванням?

Андрій: Було багато страхів і сумнівів, але здебільшого все розпізнавалася добре. Вони будують сигнатури звуковою доріжкою своїми хитрими алгоритмами — підсумок важить менше вихідного аудіофайлу. Коли мікрофон слухає навколишній звук, він намагається знайти ці особливості та розпізнати трек з них. За добрих умов точність синхронізації 0,1-0,2 секунди. Цього було більш ніж достатньо. У поганих умовах розбіжність була до 0,5 секунд.

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

Дмитро: Розкажіть, будь ласка, про архітектуру – що використовували у проекті?

Андрій: Додаток ми робили на Unity — найпростіший варіант з погляду мультиплатформенності та роботи з графікою. Використовували AR Foundation. Ми відразу сказали, що не хотіли б ускладнювати систему, тому обмежилися парком пристроїв, які підтримують ARKit та ARCore, щоб встигнути протестувати. Зробили плагін для цифрасофтовської SDK, він лежить у нас на GitHub. Зробили систему менеджменту контенту, щоб сценарії запускалися таймлайном.

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

Для мобільної частини архітектура досить проста. Для телетрансляції все складніше. У нас були обмеження щодо заліза. Від замовника було поставлено умову: «Ось ми маємо такий-то парк заліза, грубо кажучи, треба, щоб у ньому все працювало». Ми відразу орієнтувалися на те, що працюватимемо з відносно бюджетними картами відеозахоплення. Але бюджетні це не означає, що погані.

Було обмеження залізом, картами відеозахоплення та умовами роботи — як ми повинні отримувати картинку. Карти захоплення – Blackmagic Design, працювали за схемою Internal keying – це коли до тебе заходить відеокадр із камери. Картка має свій процесинговий чіп, куди заводиться ще й кадр, який повинен накладатися поверх вхідного. Картка їх змішує - більше ми там нічого не чіпаємо і не впливаємо на кадр із відеокамери. Результат через відеовихід вона випльовує на пультову. Це добрий метод для накладання титрів та інших подібних речей, але він не дуже підходить для ефектів змішаної реальності, тому що там багато обмежень на render pipeline.

Дмитро: З погляду обчислень у реальному часі, прив'язки об'єктів чи чогось ще?

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

Переглянути цей пост в Instagram

Закриття ІІ Європейських ігор у Мінську.

Публікація, якою поділилася Олена Ланська (@alyonalanskaya) on Jun 30, 2019 at 3:19pm PDT

Дмитро: Ви мали свій контент вже на першому проекті для Європейських ігор?

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

Якщо говорити про пайплайн, то для телемовлення ми все збирали на Unreal Engine 4. Так збіглося, що вони якраз на той момент почали форсувати свій інструментарій для змішаної реальності (mixed reality). Виявилось, що все не так просто. Весь інструментарій навіть зараз сирий, нам багато довелося вручну допилювати. У Мінську ми працювали на кастомному складанні двигуна, тобто ми деякі речі всередині двигуна переписували, щоб, наприклад, можна було тіні малювати поверх реальних об'єктів. На тій версії движка, яка була тоді актуальна, не було фіч, що дозволяють це робити за допомогою стандартного інструментарію. З цієї причини у нас хлопці робили своє кастомне складання, щоб забезпечити все, що було життєво необхідним.

Інші нюнаси та адаптація до WorldSkills у Казані

Таймкод (за аудіоверсії) - 31:37

Дмитро: Але все це в досить стислий термін?

Андрій: Стислі терміни були по казанському проекту, по мінському - нормальні. Десь півроку на розробку, але з урахуванням того, що було задіяно шістьох людей. Паралельно робили мобільну частину, розробляли інструментарій для телепродакшену. Там був не лише висновок картинки. Наприклад, система трекінгу з оптикою, для цього потрібно було робити свій інструментарій.

Дмитро: Чи була адаптація від одного проекту до іншого? За півтора місяці потрібно було скористатися напрацюваннями та перекласти проект із новим контентом на новий майданчик?

Андрій: Так, це було за півтора місяці. У нас була запланована двотижнева відпустка всієї команди після мінського проекту. Але відразу після закриття хлопці з Sechenov.com підходять і кажуть: "Ну що, тоді Казань давайте робити". Ми все-таки встигли трохи відпочити, але перейшли на цей проект досить швидко. Дещо доробили з технічної частини. Більшість часу було витрачено на контент, тому що для WorldSkills його повністю ми робили, просто погоджували з режисерською командою. З їхнього боку був лише сценарій. Але було легше – не треба було зайвих ітерацій. Коли ти робиш контент сам, відразу бачиш, як це в движку працює, можеш швидко правити і узгоджувати.


По мобільній частині врахували всі тонкощі, які ми мали по Мінську. Зробили новий дизайн програми, переробили трохи архітектуру, додали туторіалів, але максимально коротко та наочно постаралися зробити. Скоротили кількість кроків користувача від запуску програми до перегляду контенту. Півтора місяці вистачило, аби зробити адекватний проект. За півтора тижні вийшли на майданчик. Там працювати було простіше, бо весь контроль за проектом був у руках організаторів, не треба було узгоджувати з іншими комітетами. У Казані було простіше і легше працювати і цілком нормально, що часу було менше.

Дмитро: Але ж підхід до синхронізації ви вирішили залишити, як він і був, за звуком?

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

PS У другій частині випуску ми говоримо про наукову візуалізацію даних, моделювання процесів в інших проектах, геймдеву та магістерську програму «Технологія розробки комп'ютерних ігор». Опублікуємо продовження у наступному матеріалі. Послухати та підтримати нас можна тут:

PPS Тим часом на англомовній версії Хабра: a closer look на ITMO University.

Джерело: habr.com

Додати коментар або відгук