Vývoj: Vyvolání draka na MS
Jak jsme přeměnili pekingské Ptačí hnízdo na dračí doupě.
Naší snahou vždy bylo zajistit, aby bylo mistrovství světa pamětihodné a co nejpůsobivější, ovšem v roce 2017 jsme chtěli zkusit, zda bychom nemohli nastavenou laťku trochu zvýšit. Takže když jsme začali dávat dohromady kostru slavnostního zahájení letošního finále, sestavili jsme tým, který dostal za úkol udělat věc, o které jsme všichni v tom nejnerdovštějším koutku duše vždycky snili: vyvolat draka.
Jak vdechnout LoL život
Jednou z našich nejvyšších priorit při plánování světových turnajů je složit nějakým způsobem hold hostitelskému národu. A jelikož se letos konalo mistrovství světa v Číně, bylo pro nás důležité začlenit do něj nějakým způsobem čínskou kulturu. Už od února 2017 jsme začali pomalu skládat dohromady jednotlivé dílky letošního zahajovacího ceremoniálu, který zahrnoval hráče na autentické čínské erhu, masky pekingské opery v podobě šampionů LoL, vystoupení superstar Jaye Choua a živě hranou skladbu „Legends Never Die“ od Against the Current. Pořád jsme ovšem cítili, že chybí něco speciálního – nějaký prvek, který by odrážel velikost a význam legendárního pekingského stadionu Ptačí hnízdo.
Zvažovali jsme několik různých nápadů a nakonec se rozhodli, že naší zbraní v nadcházejícím boji emocí bude rozšířená realita – umění vkládání grafiky do reálného prostředí. Rozšířená realita (AR) se vytváří tak, že kamera v našem světě ovládá virtuální kameru v renderovacím enginu, přičemž oba tyto obrazy se spojí a tím se neskutečné změní ve skutečnost. AR není ve sportovním vysílání žádnou novinkou – různé typy AR se běžně používají v tradičních sportech i různých akcích esportů, jako je třeba Dota International (či naše vlastní NA LCS, MSI nebo MS). My však chtěli vytvořit něco v takovém měřítku, o jaké jsme se dosud ani nepokusili.
Původní varianty pro využití AR při letošním zahajovacím ceremoniálu počítaly s tím, že by Ryze metal po stadiónu kouzla a Ashe vystřelovala šípy z promítací obrazovky. Ale už roky jsme si z legrace říkali: „Prostě na pódium posadíme draka.“ Neměli jsme (tenkrát) po ruce portál do Runeterry, abychom si přivolali skutečného draka, a v době, kdy se tento vtípek zrodil, ještě nebyla vyvinutá (nebo dostupná) technologie, jež byla zapotřebí pro to, aby byl drak dostatečně kvalitní a působil dojmem, že opravdu přilétá na skutečný stadion. Ovšem v roce 2017 už AR pokročilo tak daleko, že jsme o něm začali vážně uvažovat. Složili jsme tým z našich nejbláznivějších technologických inovátorů, aby se pokusili zodpovědět otázku: „Dokážeme vytvořit draka?“
Ačkoliv AR pro televizní vysílání prošlo v několika posledních letech bouřlivým vývojem, obávali jsme se, že se nedokáže popasovat s nároky na rozměry a kvalitu, jež jsme potřebovali, aby drak působil reálně. Věděli jsme, že se budeme muset vypořádat s těmito hlavními výzvami:
- Jak to udělat, aby drak vletěl do stadionu a přistál na okraji Ptačího hnízda?
- Jak zajistit, aby drak vrhal realistické stíny nejen na podlahu, ale i na zdi samotného stadionu?
- Dokážeme přizpůsobit osvětlení v den ceremoniálu tak, aby odpovídalo venkovnímu počasí? Jak?
- Jak dokonale načasovat jeho přílet s živým vystoupením?
Sny o dracích
Chtěli jsme, aby na nebi nad Pekingem ožil mocný a bázeň vzbuzující tvor, a ve světě LoL není nikdo úžasnější, hrozivější a dokonalejší než starší drak.
Ve spolupráci s několika našimi partnery jsme připravili pár zbrusu nových grafických návrhů, které měly posloužit jako základ pro speciální model a animace, jež jsme pro toto nové ztělesnění staršího draka potřebovali. Zvažovali jsme spoustu různých variant, ovšem při prohlížení návrhů nás nejvíc zaujaly ty, které zdůrazňovaly prvky, jež byly na tom nejděsivějším tvorovi Žlebu úžasné už dříve. Jednou z nejdůležitějších věcí bylo, že ať už uděláme cokoliv, hráči musí okamžitě poznat, že to, co se řítí dolů na stadion, je jejich starý dobrý známý – starší drak.
Abychom trefili to, jak by mohl starší drak vypadat, kdyby skutečně ožil, zkoumali jsme s nesmírnou pečlivostí všechny jeho detaily, od hlavy přes končetiny až po křídla.
Postupně jsme všechny prvky ladili, až jsme je spojili v jednom jediném finálním grafickém návrhu.
Jakmile byl tento návrh hotov, nadešel čas pro modelování. Na rozdíl od tradičního modelování postav pro předrenderované animace jsme museli mít neustále na zřeteli, nakolik může být drak detailní, abychom pak byli schopní ho vykreslovat v reálném čase.
Co je vykreslování v reálném čase?
Vykreslování v reálném čase vytváří animaci, která je renderovaná tak rychle, až se zdá, jako by byla generovaná přímo v daném okamžiku. Tím se liší od předrenderovaných animací, kde vytvoření desetisekundové scény může trvat třeba i hodiny (například Příběh hraček 3 se proslavil tím, že generování jednoho snímku zabralo v průměru sedm hodin). Dokonce i pokud jste o vykreslování v reálném čase nikdy neslyšeli, všichni ho moc dobře znáte – je to totiž způsob, jímž vaše grafická karta renderuje hry.
V našem případě jsme museli v reálném čase vykreslit draka, který přilétá na stadion, a moci volně pohybovat kamerami, abychom dostali celé slavnostní zahájení do jednoho záběru. Bylo tedy zapotřebí sledovat počet polygonů (respektive vertexů) použitých pro vytvoření draka, aby se nám pak ve vzduchu nesekal a nelagoval. Příliš se to neliší od toho, když hlídáme počet polygonů na herních modelech při programování hry – vždy jde o pečlivé udržení rovnováhy mezi kvalitou a výkonem.
Zde je rychlý přehled, jak modelování postupovalo:
A zatímco jsme dělali toto, další samostatný tým pracoval na animaci drakova příletu na stadion. Studovali jsme naše oblíbené draky z Hry o trůny, Dračího srdce a dalších, abychom získali přesnou představu o tom, jak by takový tvor interagoval s prostředím jako Ptačí hnízdo. Jak by po něm létal? Jak by přistál? Jak by reagoval na lidi u svých nohou?
V prvním návrhu animace s sebou starší drak přinesl Vyvolávačův pohár a postavil jej na pódium. Nakonec jsme však tento nápad zavrhli a místo toho použili 16metrovou nafukovací trofej, která stoupala ze země, zatímco drak kroužil kolem stadionu. Navíc skutečný Vyvolávačův pohár je příliš těžký i na draka.
Zkoušeli jsme se starším drakem přistát na různých částech pódia a možná i nějakým způsobem interagovat s účinkujícími, například že by se vyděšení tanečníci rozutekli nebo se strachy krčili. Nakonec jsme došli k názoru, že kdyby skutečný drak vletěl do svého doupěte a našel v něm tisíce lidí, chtěl by dát všem najevo, že pánem tam je on. Je to konec konců starší drak, takže jediným správným řešením bylo dát ho hezky do středu dění, kde bude všem na očích.
Jak začala animace nabírat reálnou podobu, narazili jsme na další problém: drak byl kapánek moc velký. Jeho křídla při sestupu procházela skrz stadion, což výslednou iluzi zcela ničilo. Také jsme neviděli jeho stín, který jsme museli správně promítat přes diváky, aby výsledek působil reálněji (takhle nějak to vypadá, když dračí stín padne na živé lidi na stadionu). Napadlo nás, že bychom ho mohli zmenšit, ovšem pak jsme zkusili věc, kterou by udělal i samotný obří ještěr: změnili jsme trasu jeho letu. Upravili jsme jeho sestup tak, aby stín vypadal správně a on sám se nedostal do kontaktu se zdmi stadionu.
Magitechnika naživo
Dál jsme si vypsali věci, které jsme museli během přípravy zajistit, aby byla animace plynulá a obraz dostatečně detailní.
- Mít jistotu, že animace poběží v reálném čase se stejnou snímkovou frekvencí jako naše vysílání, tedy 59,94 fps
- Zajistit, aby drak dokázal vrhat měkké stíny na geometrii o velikosti a rozsahu Ptačího hnízda
- Vytvořit 3D maskování, aby se mohl drak při příletu a odletu objevit za stadionem a při přistání za buňkami pro hráče
- Dokázat kdykoliv v reálném čase upravit osvětlení scény, abychom se mohli přizpůsobit libovolnému aktuálnímu počasí
- Přidat možnost provádět v reálném čase barevné úpravy na drakovi, aby ladil s expozicí a kontrastem skutečných kamer
- Použít dvě kamery se schopností sledování, které budou komunikovat se dvěma různými enginy pro renderování v reálném čase
- Dokázat aktivovat animaci v obou enginech ve stejný okamžik, aby bylo možné plynule přepínat mezi záběry obou kamer
- Aktivovat animaci v přesně určený okamžik, aby byla v dokonalém souladu s hudbou slavnostního zahájení
- Vše dostatečně naplánovat a nacvičit, aby kameramani dokázali pořizovat dokonalé záběry v prostředí plném akce
Abychom otestovali, zda jsme schopni toto všechno splnit, vynesli jsme veškeré vybavení ven a vyvolali staršího draka na našem parkovišti. Zde je výsledek onoho testu (omlouváme se za zašpiněné čočky kamery), ze kterého jsme byli náležitě nadšení:
Po příjezdu do Ptačího hnízda jsme měli jen jeden týden, během kterého jsme museli všechno připravit, ujistit se, že je síťové připojení dostatečně bezpečné a stabilní pro plynulé sledování, postarat se, aby byly zvuky draka posílány na správné místo, zkontrolovat správné fungování spouštění animace a především vizuálně ověřit, že je drak dokonale zarovnaný na prostředí stadionu – a to vše během hektických příprav, jež doprovázejí každý živý turnaj v LoL.
Také jsme provedli šest nebo sedm nácviků s tanečníky a drakem, během nichž jsme zjistili, že pokud se kamera pohybuje a choreografie účinkujících není dokonale načasovaná, drak je na pódiu rozšlápne (ne že by si z toho něco dělal, ale nevypadalo to dobře). Tanečníci touto dobou trénovali už několik týdnů, takže jakékoliv změny mohly pokazit celkovou synchronizaci.
Rozhodli jsme se tedy skrýt veškeré zašlapávání koordinovaným přibližováním obrazu:
Všechny záběry, které zde vidíte, jsou prováděny naživo skutečnými kameramany. Dračí sekvenci jsme s nimi projížděli bezpočtukrát, aby přesně věděli, kde mají záběr začít, znali detailně každý pohyb a v potřebnou chvíli obraz přibližovali. Chtěli jsme, aby záběry působily nedokonale a zdálo se, že drak kameramany překvapil.
Zde je pohled jednoho z kameramanů, snímajícího přelet draka nad diváky:
Deset minut před vysíláním jsme si všimli, že maskování draka je špatně umístěné (vypadalo to, jako by přistál uvnitř zdi a ne na její hraně). Na vině mohla být celá řada věcí – třeba i jen drobné posunutí základny kamery o několik centimetrů kvůli vibracím. Pár minut před spuštěním živého vysílání jsme museli spustit editační aplikaci realtimové grafiky a posunout draka o kousek nahoru. Při té příležitosti jsme také trochu upravili jeho barvu, aby lépe odpovídala denní době a on nebyl ani příliš jasný, ani moc tmavý. A pak nadešla chvíle vypustit staršího draka na finále.
Když drak seskočil ze střechy, rozlehlo se celým stadionem slyšitelné zalapání po dechu všech diváků a nám naběhla husí kůže. Vidět a slyšet reakce hráčů na draka bylo přesně to, proč jsme tohle všechno dělali. Naší snahou a hlavním cílem je vždy vytvářet pro naše fanoušky nezapomenutelné okamžiky, které si z takovéto akce odnesou a mohou se o ně podělit se svými přáteli. A dokud se nám to bude dařit, budeme se snažit dál zlepšovat a vymýšlet věci, které vám vezmou dech. Dokud naše pokusy s modrými užovkami nevyprodukují malé barony, budeme pokračovat ve zvyšování laťky pro MS a přinášet zážitky hodné nadšení, kterým vy sami den co den obohacujete tuto komunitu.