War Thunder background
Firebirds: Rozmazání pohybu ve War Thunderu

Dnes se podíváme na rozmazání pohybu ve War Thunderu - co to je, jak je ve hře implementováno a s jakými problémy jsme se potýkali. War Thunder jde do kina!

Co je Motion Blur?

Ve hře jsou snímky vytvářeny od začátku, každý snímek zobrazuje jeden časový okamžik.

Skutečné kamery nebo dokonce naše oči takto nefungují. Pořízení snímku trvá dlouho a během této doby se svět ne vždy zastaví. Pokud se během pořizování snímku nějaký objekt pohybuje, objeví se na výsledném snímku na všech těchto místech současně. Tomu říkáme rozmazání pohybu (Motion Blur).

Vysvětlení základů

Abychom mohli simulovat efekt rozmazání pohybu, potřebujeme vědět, jak se každý pixel od posledního snímku posunul. To vyžaduje, aby všechny animace a pohyblivé efekty hlásily svou aktuální a starou pozici. Může to být jedna z nejtěžších částí fungování této funkce. Ale naštěstí jsme to již měli k dispozici pro techniky vyhlazování hran. Těch několik málo animací, které to nepodporovaly, bylo velmi snadné rozpoznat, protože rozmazání pohybu z nich udělalo velkou rozmazanou šmouhu. Tak jsme je rychle opravili!

Pro začátek jsme použili osvědčenou techniku pro implementaci efektu, o které si můžete přečíst zde. V podstatě zkontrolujeme, kde se pixel nacházel v posledním snímku a kde se nachází nyní, a pak tento pixel rozostříme podél rozdílové čáry.

Pro zefektivnění výpočtů a vyhlazení některých hran je čára rozostřena také ve směru dopředu a prodlužuje se za aktuální pozici pixelu. Pro další urychlení rozhodujeme společně o větších blocích pixelů na základě jejich obecného směru.

Je také třeba zohlednit vzdálenost každého pixelu od kamery, abychom mohli rozmazat pozadí a popředí zvlášť. Rozmazaná linie pixelu v pozadí může někdy procházet za statickým ostrým objektem v popředí. Jindy potřebujeme zachovat ostré pozadí, zatímco pixel v popředí je rozmazaný nahoře. Když se dva objekty rozostří v jednom pixelu, je důležitá i jejich individuální rychlost, protože někdy nesmí zůstat ostrý ani jeden z nich.

Technické výzvy ve War Thunderu

Samozřejmě jsme museli rozmazání pohybu trochu upravit, abychom ho přizpůsobili našim potřebám. Abychom mohli rozhodnout, jak pixel rozmazat, musíme znát jeho rychlost. Ale co když neexistuje jediná odpověď, protože v jednom bodě je vidět více věcí? Bez zvláštní péče algoritmus „nevidí“ průhlednost.

Ve War Thunderu máme skleněné kokpity a v nich barevná světla připevněná k letadlům, která létají nad stromy a zároveň překonávají zvukovou bariéru. Proto jsme museli skleněné povrchy nějak ošetřit. Zde máme zcela odlišné rychlosti na stejném pixelu. Sklo je stabilní, ale les za ním je velmi rychlý.

Nakonec jsme použili podobný trik jako při oddělování pozadí a popředí. Pokud něco vidíme přes sklo, považujeme to za jednu kategorii, zatímco přímo viditelné předměty za jinou. Nepřehazujeme jednu kategorii na druhou, ale umožňujeme míchání v rámci kategorií.

Tímto způsobem dosáhneme snímků, na kterých je pozadí přes sklo rozmazané, ale samotné sklo si zachovává ostrou siluetu.

Poznámka: v době psaní tohoto příspěvku je speciální úprava průhlednosti povolena pouze v případě, že je Motion Blur nastaven na maximum.

Omezení

Protože pro každý pixel máme k dispozici pouze jednu známou rychlost, rychle se pohybující průhledné objekty nebudou rozmazány, pouze objekty na pozadí, které jsou přes ně vidět. To také znamená, že odrazy na těchto površích lze rozmazat pouze na základě pozadí.

K vytvoření dokonalého efektu bychom potřebovali dokonalé informace. I když známe pozici pixelu na obrazovce v minulém i aktuálním snímku, nevíme, jakou cestu mezi nimi urazil. Prostě ji rozostříme v linii, jako by se pohybovala rovně, což téměř vždy stačí. Důležitou výjimkou jsou kola vozidel. Zde se může jeden bod na kole přesunout na opačnou stranu v čase jednoho snímku. Předpokládat zde přímý pohyb je daleko od reality.

Prozatím tento problém není vyřešen, kola budou potřebovat vlastní metodu pro správné rozmazání pohybu, která funguje na jiných principech.

Je to reálné?

Rozmazání pohybu je viditelné nejen u rychle se pohybujících objektů, ale také v případě, že se pohybuje samotná kamera. Na filmovém plátně je to velmi častý jev, ale v našem přirozeném vidění se oko obvykle zaměřuje na objekty a udržuje pro nás svět stabilnější. Rozmazání pohybu ve hře je filmové - vypadá jako skutečný film natočený skutečnými kamerami. Ale není to jako vidět svět na vlastní oči.

Pro lepší simulaci lidského vidění jsme přidali možnost vypnout rozmazání pohybu způsobené pohybem kamery. To sice rozostří rychle se pohybující objekty, jako jsou prolétající letadla nebo vybuchující trosky, ale obraz zůstane ostrý, když se jen díváte kolem sebe.

Rozmazání kamery je vypnuté, pohybuje se pouze věžička

Otáčení věže s plným rozmazáním pohybu

Je rozmazání pohybu pro naše hry dobré?

Tuto otázku slýcháme často a interně jsme o ní také vedli rozhovory. Někteří říkají, že to dodává pocit pohybu a činí zážitek více pohlcujícím. Zatímco jiní říkají, že je obtížnější mířit na pohyblivé cíle, odstraňuje to přehlednost, která je důležitá pro kompetitivní hru. Pravdu mají oba. Je to otázka vkusu a toho, co od hry očekáváte. Pokud vás nejvíce zajímá vyhrávání a stoupání po žebříčku, možná to není nic pro vás - klidně ji vypněte. To nám vůbec nevadí. Pokud jste již vyhráli a chcete si z opakovaných záběrů udělat záznam, nebo jen chcete pocítit rychlost při letu, můžete ji maximalizovat a použít pro efekt ve filmové kvalitě.

Přečtěte si více:
Splněné sny: KV-7
Nový vzhled War Thunderu v roce 2024 (CZ titulky)
Fair Play: Listopad 2024
Firebirds: Lepší bláto na bojových vozidlech + Vylepšení efektů na vodě

Komentáře (0)

Komentáře budou předem moderované 
You have to be logged in for posting comments