Dlaczego grafika w grach nie jest tak piękna jak filmy animowane?

60

Pamiętam, jak oglądałem zwiastun Tomb Raider i żałowałem, że ta grafika nie może być w samej grze.

Dlaczego jest tak duża różnica między zwiastunem a rzeczywistą grą? Rozumiem, że gra jest zupełnie inną koncepcją, ma inny przebieg, musi przechodzić różnego rodzaju interakcje z graczami itp. Chcę wiedzieć, o co chodzi w grach, co czyni je tak trudnymi w porównaniu do filmów animowanych.

Jak dotąd wiem, że tworzenie gry i filmu animowanego wiąże się z pewnym podstawowym obciążeniem, np. Tworzenie modeli 3D, renderowanie ich (tylko w grze dzieje się to na żywo). Filmy animowane renderowane są przez długi czas i widzimy tylko wstępnie renderowane sceny. To wszystko, co wiem, więc mam nadzieję, że odpowiesz z tej perspektywy!

Co z renderowaniem filmów animowanych godzinami, które sprawiają, że są tak piękne, podczas gdy renderowanie na żywo w grze jest mniej piękne (z ogólnego punktu widzenia)?

cowboysaif
źródło
1
Naprawdę nie rozumiem, w jaki sposób zaakceptowana odpowiedź naprawdę odpowiada punktom twojego pytania. Czy możesz tutaj zostawić komentarz jako podsumowanie tego, co z niego zrozumiałeś, tj. Jakie wiadomości Ci to przyniosły, abyś teraz zrozumiał problem, którego wcześniej nie rozumiałeś?
Bogdan Alexandru
4
Nie jestem pewien, o co się mylisz. Pytanie to tytuł; zaakceptowany post odpowiada na to pytanie.
jhocking
2
Właściwie zrozumiałem 80% z odpowiedzi. Reszta obejmowała 20%, szczególnie dużo nauczyłem się z odpowiedzi @ Vladimira (patrz poniżej). Niektóre odpowiedzi dotyczyły nawet rzeczy, o których nie myślałem, np. Dodawania szczegółów po renderowaniu. I aby odpowiedzieć na twoje pytanie, wybrałem odpowiedź, ponieważ myślę, że przyniosło to głębszy poziom zrozumienia (nie tylko wspomniał o punktach, ale algorytmy / pojęcia działające za tym). Do tego czasu skończyłem czytać, inne odpowiedzi były również niesamowite! Trudno było wybrać, który z nich jest najlepszy, ale wydaje się, że ludzie też to lubią! Zaznaczę je wszystkie!
cowboysaif
Być może dlatego, że twórcy gier nie są zainteresowani wydaniem ponad 50 000 000 $ na efekty - dziś producenci filmowi robią to rutynowo.
Pieter Geerkens,

Odpowiedzi:

109

Wspomniałeś już o jednym z głównych punktów: Czas .

W procesie renderowania animacji o wysokiej wierności stosuje się wiele różnych podejść i algorytmów (wszystkie zwykle łączone pod nazwą „Globalne oświetlenie” ), przy czym Ray-Tracing jest jednym z najczęstszych (inne obejmują na przykład Radiosity i Ambient Occlusion ).

Śledzenie promieni polega na symulowaniu (zwykle dużej) liczby promieni świetlnych przechodzących przez scenę i obliczaniu ich ścieżek, ich odbić i załamań, gdy uderzą one w obiekty z różnych materiałów. Różne materiały w zamian mają wtedy różne właściwości fizyczne, które powodują określone reakcje na promienie (ilość światła, które odbija się na przykład od jednego obiektu, jest wyższa dla obiektów błyszczących w porównaniu do błyszczących).

Kolejna kwestia to fizyka : symulowanie tysięcy napięć włosów w fizycznie poprawny sposób jest czasochłonne. Dlatego w starszych grach włosy są często zbliżone do bardzo szorstkiej siatki, która jest następnie teksturowana, aby uzyskać wrażenie włosów, być może z dodatkowymi ruchomymi przedmiotami, aby wyglądały nieco bardziej realistycznie.

Należy również wziąć pod uwagę: Pamięć i przepustowość . Im wyższa jakość tekstury zastosowanej do obiektu w scenie, tym więcej pamięci trzeba załadować i wykorzystać w grze. Ale system nie tylko musi mieć wystarczającą ilość pamięci, aby pomieścić dane, ale także te dane muszą być przesyłane wokół, co zużywa dostępną przepustowość. Ponieważ pamięć i przepustowość są ograniczone, można osiągnąć maksimum.

Gry często oszukują trochę, używając tylko tekstur o wysokiej rozdzielczości dla obiektów znajdujących się w pobliżu i używają obrazów o niższej rozdzielczości dla obiektów znajdujących się w pobliżu (termin: MipMapping ), zmniejszając w ten sposób wymaganą szerokość pasma, ponieważ trzeba pobrać mniej tekstur, co w zamian zwiększa wydajność (patrz rozdział o MipMapping w przewodniku programowania OpenGLES firmy Apple).

Podobnie gry często używają różnych siatek dla obiektów w zależności od tego, jak daleko są, przy czym obiekty odległe są mniej szczegółowe (termin: LoD = poziom szczegółowości ).

Wniosek: w grafice w czasie rzeczywistym (takiej jak gry i symulacje) ten szczegółowy i złożony proces renderowania oczywiście nie zadziała, aby uzyskać płynne / płynne sceny. Potrzebujesz co najmniej 20 renderowanych klatek na sekundę, aby uzyskać płynny efekt animacji / ruchu dla ludzkiego oka. Z drugiej strony renderowanie pojedynczej klatki (!) W filmie animacyjnym może zająć od kilku godzin do wielu dni, w zależności od wielu czynników, takich jak liczba wykorzystanych promieni w śledzeniu promieni lub liczba próbek w otoczeniu Okluzja (zobacz zrzuty ekranu Pixar strona 1 / Pixar 2 dla 16 lub 256 próbek), a także żądaną rozdzielczość filmu (więcej pikseli = więcej informacji do obliczenia). Zobacz także ten artykułna temat procesu filmu animowanego Pixar Monsters University , który daje ciekawe spostrzeżenia i wspomina o czasie renderowania 29 godzin na klatkę.

Ogólnie: im wyższy poziom wierności / realizmu, który ma zostać osiągnięty, tym więcej potrzebnych jest iteracji / odskoków / próbek, które w zamian wymagają więcej zasobów (zarówno czasu i / lub mocy obliczeniowej / pamięci). Aby zwizualizować różnicę, zobacz wynikowy rendering na podstawie liczby odrzuceń do obliczenia refrakcji w tym przykładzie: Odbicie diamentowe z Keyshot

Ale oczywiście jakość aplikacji w czasie rzeczywistym rośnie cały czas z dwóch powodów:

  1. Silniejszy sprzęt: w miarę jak komputery (do gier) stają się lepsze (= większa moc obliczeniowa [równoległa], wyższa transmisja danych między elementami komputera, większa i szybsza pamięć itp.), Zwiększa się również dokładność wizualna, ponieważ w rzeczywistości bardziej czasochłonne obliczenia stać się wykonalnym w systemie czasu rzeczywistego.
  2. Opracowano i wdrożono bardziej sprytne metody / formuły, które są w stanie tworzyć raczej fotorealistyczne efekty bez potrzeby raytracingu. Często wiąże się to z przybliżeniami i czasami wstępnie obliczonymi danymi. Kilka przykładów:

Philip Allgaier
źródło
4
@cowboysaif nie, nie możesz tego zrobić na GPU „tak jak jest”. Musisz zdobyć specjalistyczny sprzęt. Istnieją jednak próby przeprowadzania raytracingu w czasie rzeczywistym przy użyciu CUDA lub podobnej technologii.
wondra
4
Istnieje wiele innych technik niż raytracing stosowanych w renderowaniu offline, podczas tworzenia filmów o profesjonalnej jakości. Ale, jak mówisz, używają drogich technik renderowania, oświetlenia i cieniowania, które po prostu nie są praktyczne do renderowania w czasie rzeczywistym.
MrCranky,
40
Ta odpowiedź wyjaśnia, dlaczego wstępnie renderowana animacja zajmuje dużo więcej czasu, ale tak naprawdę nie oddaje skali. Różnica jest ogromna ! Gra musi renderować klatkę w czasie krótszym niż 1/30 sekundy, podczas gdy filmy zwykle renderują każdą klatkę przez kilka dni .
jhocking
9
„Dni” to z pewnością najwyższy koniec skali czasowej, ale tak, czasami renderowanie pojedynczej klatki zajmuje więcej niż 1 dzień (patrz tutaj na przykład venturebeat.com/2013/04/24/... ) I nawet średnio czasy renderowania to nadal pół dnia na klatkę, co jest znacznie dłuższe niż gra. Powodem renderowania całego filmu jest to, że mają farmę renderowania, tj. setki maszyn renderujących w tym samym czasie.
jhocking
7
Kilka faktów: wszędzie stosuje się raytrace, absolutnie nie jest to technika niszowa. VRay to tylko procesor. VRayRT to tylko procesor graficzny. Procesor graficzny nie jest dobrze przystosowany do produkcji, ponieważ sceny zwykle zajmują dużo GB pamięci RAM i nie pasują do procesora graficznego (ale czasami pomaga). Nasze własne ujęcia zajmują 1-2 godziny na klatkę na wysokiej klasy procesorach i nie są aż tak długie. JackAidley jest całkowicie w błędzie.
Calvin1602
44

Oprócz czynnika czasu warto zauważyć, że w filmie artysta ma pełną kontrolę nad tym, co widz będzie, a czego nie obejrzy.

W typowej scenie filmowej aparat nie spędza dużo czasu, wskazując na sufit, nie wskazując ciemnego rogu pokoju lub celując w czyjąś kostkę, więc wielokąt i budżet na teksturowanie tych elementów będą dość niskie.

Jeśli cała scena rozgrywa się z jednego punktu obserwacyjnego, wirtualny zestaw (jak prawdziwy zestaw filmowy) nie musi zawierać części znajdujących się za kamerą. W większości gier gracz może dowolnie wyglądać w dowolnym miejscu i czasie. Oznacza to, że budżet wysokiej jakości może być skoncentrowany na tym, co faktycznie widać. (Niektóre gry z udziałem osób trzecich, np. Seria God Of War, używają ograniczonej kamery; ich wygląd jest zwykle znacznie lepszy niż w przypadku gier z większą liczbą kamer).

Russell Borogove
źródło
12
Punkt, którego nie należy lekceważyć. Renderowanie stałego zestawu ramek pozwala całkowicie skupić się tylko na tych ramkach, wszystko, co powoduje problem w pojedynczej ramce, można rozwiązać ręcznie.
aaaaaaaaaaaa
9
Do cholery, jest to często używane w grach, w których przerywniki filmowe są „na żywo w silniku”, dlatego przerywniki mogą nadal wyglądać lepiej.
trlkly
Jedną z gier, która łamie tę zasadę, IMHO jest Brothers: A Tale of Two Sons . Devs dokładają wszelkich starań, aby kamera znalazła się we właściwym miejscu i była naturalna.
Podstawowy
12
Co z renderowaniem filmów animowanych godzinami, które sprawiają, że są tak piękne, podczas gdy renderowanie na żywo w grze jest mniej piękne (z ogólnego punktu widzenia)?

Zakładasz, że różnica polega po prostu na renderowaniu - w filmie animowanym istnieje również możliwość edycji po fakcie. Mogą mieć złożone efekty, które byłyby trudne do osiągnięcia w oryginalnym silniku, lub mogą nieco poprawiać rzeczy (np. Usuwać lub powtarzać co 10 klatek, aby przyspieszyć / spowolnić animację).

Jeśli masz szansę, wykop jedną z płyt DVD „Roughnecks: The Starship Trooper Chronicles”, ponieważ mają one komentarze redaktorów i animatorów o sztuczkach, które musieli zrobić, gdy zaczęli się spóźniać z harmonogramem dostaw - na przykład recykling ujęć, ale przerzucanie osi, aby nie było tak oczywiste, korekty kolorów, maskowanie rzeczy, których nie lubili, dodawanie eksplozji itp.

Joe
źródło
Silniki do gier również to robią! ;-)
Adrian Maire
@AdrianMaire: mogliby zrobić inne rzeczy, ale nie mieliby człowieka, który działałby jako redaktor i poprawiałby rzeczy w razie potrzeby. Wiem, że wspomniałem o tym , jak poprawiają różne rzeczy, ale moim głównym celem było to, że ludzie byli zaangażowani we wstępnie renderowane rzeczy.
Joe,
10

W pewnym sensie już odpowiedziałeś na swoje pytanie. Filmy animowane zazwyczaj mają wyższy poziom szczegółowości, co powoduje długi czas renderowania dla każdej pojedynczej klatki.

Z drugiej strony gry nie zawierają tyle szczegółów, ponieważ scena musi być renderowana 30 lub więcej razy na sekundę. Dlatego też programiści starają się wykorzystywać jak najwięcej zasobów (tekstur, modeli itp.), Ponieważ renderowanie tego samego obiektu w dwóch pozycjach jest znacznie szybsze niż gdyby wszystko było unikalne. Muszą też uważać, aby nie używać zbyt wielu wielokątów w swoich modelach, a zamiast tego starać się uzyskać wrażenie głębi za pomocą oświetlenia, tekstur, mapowania wypukłości i innych technik.

Filmy nie mają tego problemu; sprawiają, że scena jest taka, jak chcą i wykorzystuje tyle szczegółowych tekstur, modeli i geometrii, ile potrzebują, aby osiągnąć scenę, której szukają.

Można jednak argumentować, że gry nadrabiają zaległości. Jeśli spojrzysz na niektóre z najlepiej wyglądających gier w ostatnim czasie, nie są one tak dalekie od jakości filmów, jak kiedyś. Oczywiście zawsze będziesz w stanie wcisnąć więcej szczegółów we wcześniej renderowaną scenę niż w grę, ale myślę, że różnica nie będzie tak zauważalna za kilka lat.

chrześcijanin
źródło
1
Uwielbiam te odpowiedzi! Kto powinien być głównym winowajcą? Poziom wielokąta czy ray tracingu? Czy silniki gier zwykle używają bufora Z, ponieważ są bardziej lekkie? A może ray tracing ma więcej pracy niż obliczanie głębokości?
cowboysaif
2
Zgaduję, że to ray tracing. Philip wydaje się być znacznie bardziej kompetentny niż ja, ale o ile wiem, jest to po prostu sposób na symulację promieni świetlnych, tak jak działałyby w rzeczywistości - odbijają się, rozpraszają, łamią lub w inny sposób zmieniają materiały w scenie , i tak dalej. Jeśli masz na scenie takie rzeczy, jak futro, włosy lub inne ciężkie symulacje (np. Płyny), fizyka jest również ciężka w wydajności - również te rzeczy wpływają na złożoność śledzenia promieni.
Christian
2
Aplikacja do śledzenia promieni potrzebuje również czegoś w rodzaju bufora Z, aby określić i zapisać obiekty zakrywające się z innymi obiektami. Jednak śledzenie promieni jest znacznie bardziej szczegółowe niż aplikacja działająca w czasie rzeczywistym, ponieważ robi to wszystko, o czym wspominaliśmy już Christian i ja, aby uzyskać wyższą wierność graficzną, wysyłając te pojedyncze promienie świetlne i obliczając rzeczywiste załamania / rozproszenia, np. W szklanych przedmiotach lub wodzie , fizyczne renderowanie włosów, pośrednie oświetlenie i zasłanianie otoczenia itp. (chociaż niektóre z tych części można obecnie zbliżyć do aplikacji w czasie rzeczywistym, jak już wspomniałem).
Philip Allgaier,
7
Filmy są renderowane z około 10-12 godzinami obliczeń na klatkę. I zgodnie z prawem Blinna za każdym razem, gdy moc obliczeniowa staje się lepsza, po prostu dodają więcej rzeczy do sceny, aby naprawdę nigdy nie było szybciej. Renderowanie filmów ma również tendencję do wykorzystywania zamkniętych „dokładnych” rozwiązań dla wszystkich równań renderowania, w których gry dokonują licznych przybliżeń, ponieważ musi być milion razy szybszy niż film.
Chuck Walbourn
2
nigdy wcześniej nie słyszałem o prawie Blinna, ten link był świetny
jhocking
8

Pozostałe odpowiedzi szczegółowo omawiają surowe kwestie graficzne, ale nie wspominają o istotnej części realizmu gier w porównaniu do filmów i zwiastunów: animacji i ruchów kamery .

W filmie lub zwiastunie każdy ruch ludzi i kamer można dokładnie skoordynować, aby na chwilę pokazać właściwe emocje i nigdy nie trzeba ich powtarzać. W grach wideo gra musi być w stanie natychmiast reagować na ruchy gracza i musi ponownie użyć małej puli podstawowych animacji, aby wypełnić nieograniczoną liczbę godzin gry.

Przykładem tego z omawianej przyczepy jest to, że terapeuta kiwa głową i daje „niezły” uśmiech , a kiedy Lara chwyta podłokietnik, porusza nogą lub patrzy na jaskinię z podziwem. Te małe rzeczy (lub ich brak, a także zaangażowane „plastikowe” postacie) wpływają na postrzegany realizm bardziej niż drobne ulepszenia grafiki.

W przeciwieństwie do innych różnic graficznych, nie jest to problem, który można potencjalnie rozwiązać poprzez zwiększenie mocy obliczeniowej: jest to podstawowa różnica między światem skryptowym a światem reagującym na każde Twoje działanie. W tym względzie spodziewam się, że realizm dzisiejszych zwiastunów przewyższy całą rozgrywkę w najbliższej przyszłości.

Tim S.
źródło
8

Oprócz innych świetnych odpowiedzi, które już zostały opublikowane, warto zauważyć, że aby osiągnąć szybki czas przetwarzania, którego potrzebują gry, twórcy gier muszą upiec wiele swoich efektów wizualnych jako proste tekstury. Oznacza to, że należy bardzo uważać, aby uniknąć efektu, który nie będzie dobrze upiec.

Jednym ważnym efektem, który trudno upiec w grach wideo, jest Suburface Scattering (SSS) . Niestety ten efekt jest naprawdę ważny w generowaniu realistycznie wyglądającej ludzkiej skóry. Dlatego wiele „realistycznych” postaci z gier wychodzi z plastiku.

Jednym ze sposobów, w jaki programiści unikają tego problemu, jest celowe nadanie postaciom jasnych kolorów, aby odwrócić uwagę od plastikowego wyglądu lub dodanie do twarzy wielu cieni i szczegółów teksturalnych (takich jak brody itp.) W celu rozbicia dużych, ciągłych części skóra.

Vladimir
źródło
2
Nie wspominając już o całej obróbce końcowej związanej z animacjami filmowymi. Wiele rzeczy jest renderowanych jako wiele osobnych scen, które po renderowaniu muszą zostać połączone warstwami. Dlatego w wielu filmach animowanych często widać względnie statyczne tła z postaciami poruszającymi się na pierwszym planie.
Vladimir
6

Aby odpowiedzieć na jedno z pytań, które OP zadał w komentarzu:

„Więc kto powinien być głównym winowajcą? Poziom wielokąta czy ray tracingu?”

To pytanie jest trudniejsze niż się wydaje. Myślę, że dobrą ogólną zasadą jest następujące równanie (które stworzyłem przy okazji):

number of calculations = {polygons} * {light sources} * {effects}

Zasadniczo oznacza to, że w przypadku modeli ze stosunkowo niewielką liczbą specjalnych materiałów (tj. Bez lustra, podpurf itp.) Czas obliczeń będzie duży, zależny od liczby poligonów. Zwykle dzieje się tak w przypadku bardzo prostych grafik gier wideo.

W praktyce jednak w nowszych grach high-end, a zwłaszcza w filmach, winowajcą jest „zwykle” raytracing. Dlaczego? Cóż z dwóch powodów. Najpierw podam powód matematyczny, a na końcu moją opinię o prawdziwym powodzie.


Powód matematyczny:

Aktualizacja: To wyjaśnienie matematyczne może nie być całkowicie dokładne. Więcej informacji można znaleźć w wyjaśnieniu CrazyCasta w komentarzach.

Załóżmy, że masz 1000 wielokątów i 3 źródła światła. Najmniejsza liczba śladów promieni, które musisz wykonać, to 3 * 1000.

Jeśli nadmiernie uprościmy sytuację i założymy, że 1 promień śledzenia = 1 obliczenie (rażące niedoszacowanie), będziemy potrzebować 3000 obliczeń.

Ale teraz załóżmy, że chcesz też mieć refleksje.

Domyślne ustawienia odbić w darmowym programie Blender to:

max reflections  = 2
ray length limit = None
...

W przypadku tych ustawień możemy domyślić się, że w najlepszym przypadku ten super-prosty odbicie podwoi koszt obliczeniowy twojego modelu.

Ale jak powiedziałem wcześniej, ten przykład jest bardzo uproszczony i można znaleźć bardzo wiele efektów (oprócz tych, o których już wspomniałem), które będą strzelać do twojego renderowania przez dach.

Przypadek i punkt: spróbuj renderować odbicia za pomocą gloss=1(domyślnie w Blenderze), następnie zmniejsz połysk do 0,01 i porównaj dwa czasy renderowania. Przekonasz się, że ten z połyskiem 0,01 będzie znacznie wolniejszy, ale złożoność modelu w ogóle się nie zmieniła.


Mój jakościowy, ale bardziej realistyczny powód:

Zwiększenie złożoności siatki poprawi jakość modelu tylko do pewnego stopnia. Po minięciu kilku milionów twarzy naprawdę niewiele może zrobić dodanie kolejnych twarzy. Posunę się nawet tak daleko, że jeśli użyjesz wygładzania, będziesz w stanie uciec z zaledwie kilkuset twarzami do najbardziej ogólnych celów.

Ale rzeczy, które prawie zawsze robią różnicę, to oświetlenie, efekty materiałowe i śledzenie promieni. Właśnie dlatego filmy wykorzystują wiele z nich, próbując przybliżyć piękne złożoności prawdziwego świata.


Świetnym sposobem, aby poczuć to wszystko, jest spojrzenie na listę obsad na końcu najnowszych animacji Disneya. Prawdopodobnie zdziwisz się, ile osób ma oświetlenie i tekstury.

Vladimir
źródło
2
Mój Boże, o to właśnie chodziło. Chociaż to nie było moje pytanie (byłem trochę zdezorientowany, o co powinienem prosić), myślę, że o to chodzi!
cowboysaif
1
@cowboysaif Miło mi pomóc! :)
Vladimir
1
W rzeczywistości rzeczy nie są tak miłe, jak mogłem się wydawać. Ale myślę, że może to pomóc w uzyskaniu ogólnego pomysłu. Zwykle polegam na próbach i błędach. Na przykład, jeśli renderuję dłuższą scenę (ponad 100 klatek), najpierw renderuję jedną lub dwie klatki, aby zobaczyć, jak szybko to idzie i jakie efekty spowalniają.
Vladimir
2
Stara sztuczka z używania POVRay na 486 z powrotem w ciągu dnia - jeśli chcesz wiedzieć, które części sceny są najdroższe, renderuj wiele widoków całej sceny ze wszystkimi aktorami i rekwizytami na miejscu i obserwuj fragmenty, które zwalniają raytracer do czołgania się. Powiększ te fragmenty i sprawdź najgorszą wydajność, a także poświęć większość swojego budżetu renderowania na ramki zawierające te elementy. Jeśli masz napięty harmonogram renderowania, rozważ zmianę kadrowania niektórych ujęć.
Tom B
1
@TomB Dobra rada! Dodam do tego, że jeśli spodziewasz się, że dana scena będzie wolna, możesz ją wyhodować przez Internet i renderować wszystko inne lokalnie.
Vladimir
4

Warto dodać, że animacja filmowa zwykle wymaga sporej ilości wizualnych sztuczek, aby postrzegany ruch był bardziej płynny.

Animatorzy mogą na przykład stosować tradycyjne techniki animacji ręcznej, które zwykle nie są używane w renderowaniu w czasie rzeczywistym, takie jak rozmazy, wielokrotności lub wypaczenia, aby uzyskać bardziej płynny ruch pomimo niższej liczby klatek na sekundę, jaką są filmy (w każdym razie do niedawna ) wyświetlane o. W szczególności użycie rozmazów i mnożników jest skomplikowane przez użycie siatek - musisz wytworzyć deformacje siatki dla tego rodzaju zniekształceń siatki, i nie sądzę, że widziałem to w grach 3D.

Ramki z szybko poruszającymi się obiektami przechodzącymi przez nie mogą być renderowane z inną szybkością klatek, a następnie ponownie łączone w celu wywołania rozmycia ruchu w scenie. Rozmycie w ruchu jest obecnie dość powszechną techniką w grafice 3D w czasie rzeczywistym. Zwykle efekt nie jest wysokiej jakości, jaki uzyska dom animacji z dziesiątkami procesorów (patrz odpowiedzi „czas” powyżej), głównie ze względu na fakt, że fałszywe rozmycie ruchu naprawdę dobrze wymaga wielu etapów przetwarzania końcowego na warstwę, i duża liczba ramek pośrednich, które są naprawdę płynne.

Wykonanie tego rodzaju sztuczek wizualnych w celu poprawienia postrzeganej jakości za pomocą grafiki w czasie rzeczywistym skutecznie ogranicza wyjściową szybkość klatek do prędkości znacznie poniżej maksymalnych dostępnych ramek pośrednich renderujących tło, a następnie wykonuje kompozycję w celu uzyskania ostatecznej klatki. Prawdopodobnie istnieje wiele szkół myślenia na temat tego, czy niewielkie zwiększenie wizualnej wierności przy stosowaniu takich technik jest warte utraty budżetu na klatkę, szczególnie jeśli bardzo trudno będzie to naprawić.

Aby rozwiązać jeden aspekt pytania:

Co z renderowaniem filmów animowanych godzinami, które sprawiają, że są tak piękne, podczas gdy renderowanie na żywo w grze jest mniej piękne (z ogólnego punktu widzenia)?

Głównie rzemieślnictwo. Artyści działający w czasie rzeczywistym nie mają możliwości dostrojenia każdej klatki ani stworzenia jednorazowych sztuczek, aby poprawić ogólny wygląd sceny lub reakcji, nie tylko z powodu ograniczeń czasowych (zarówno w fazie rozwoju, jak i renderowania), ale także dlatego, że praktycznych ograniczeń. Jak zauważono w komentarzu do interaktywności, odtwarzacz prawdopodobnie nie zrobi dokładnie tego samego za każdym razem, ale film będzie odtwarzany tak samo za każdym razem.

Oznacza to, że twórca gier wideo ma zupełnie inny zestaw priorytetów, jeśli chodzi o jakość modelu i ostateczną jakość renderowania niż twórca filmu. Oba wymagają ogromnych umiejętności, ale każde wymaga innych technik. Oczekuję, że techniki te będą coraz bardziej zbieżne, ponieważ sprzęt do renderowania na poziomie konsumenckim będzie się nadal rozwijał, a dalszy geniusz matematyczny będzie pojawiał się na twoich SIGGRAPH i GDC.

Tom B.
źródło
1
Oooh, właśnie omówiłeś coś, o czym chcę porozmawiać. Deformacja siatki? czy nazywa się to również modyfikatorem siatki? Jest taki modyfikator, którego używałem, gdy majstrowałem przy jedności 3d, zwanym mega- fiers ( west-racing.com/mf/?page_id=2 ). Chociaż jedność 3d obsługuje tylko animacje oparte na kościach, czy myślisz, że technologie gier w końcu sobie poradzą? Nie mam jednak pojęcia o innych silnikach gier!
cowboysaif
1
Ten rodzaj efektu powinien być kompatybilny z dowolną techniką animacji, o ile używasz matematycznych zniekształceń całego modelu z shaderem wierzchołków (prawdopodobnie to, co robią „mega-fiery”). Kilka innych podejść to: * posiadanie siatki „docelowej”, która jest drugą siatką, która jest całkowicie zniekształcona i używanie shadera wierzchołków do przesuwania wierzchołków siatki w kierunku odpowiadających jej wierzchołków w drugiej siatce; * wypaczanie deformacji w samym modelu i używanie animacji klatek kluczowych; * rób swoje zniekształcenia za pomocą animacji szkieletu, umieszczając wyłącznie dodatkowe kości w razie potrzeby ...
Tom B
1
Jestem pewien, że tego rodzaju animacja była możliwa od jakiegoś czasu i do pewnego stopnia została już wykorzystana, chociaż w większości potrafię przywoływać tylko przypadki z grami typu blobby i elastycznymi modelami (takimi jak Gish, Tower of Goo, Octodad) . Trudność polega na ustaleniu, kiedy użyć efektów, szczególnie jeśli chodzi o użycie wielokrotności lub rozmazywania. Kierunek ruchu kamery wpływa na to, jak powinna wyglądać wynikowa wielokrotność lub rozmaz. Podejrzewam, że wytyczne, których używają animatorzy rąk, byłyby dobrym punktem wyjścia, ale pomyśl o całej radości z eksperymentów!
Tom B
3

Wyrenderowanie pojedynczego filmu animowanego może zająć wiele lat na jednej bestii maszyny. Ponieważ jest wstępnie renderowany, nie ma znaczenia, ile kosztownych efektów, takich jak odbicia światła, cienie itp., Dodajemy do sceny. Filmy te są zazwyczaj renderowane przez farmy renderujące, w których tysiące komputerów są ze sobą połączone i wykonują tę samą pracę.

Powodem, dla którego nie możemy osiągnąć tej samej jakości w czasie rzeczywistym, jest po prostu fakt, że maszyna musi wyrenderować bieżącą klatkę w około 16 ms, aby osiągnąć liczbę klatek na sekundę wynoszącą 60. Wyrenderowanie pojedynczej klatki filmu animowanego może zająć wiele godzin na jednym komputerze.

W grze, oprócz grafiki, dzieje się mnóstwo innych rzeczy. Każda ramka zawiera mnóstwo obliczeń. Mówiąc najprościej, animowany film nie musi obliczać obrażeń odniesionych przez gracza z wyrzutni rakiet, po prostu animujesz drążki, a wielokąty będą renderowane.

Na szczęście na tej planecie chodzą genialni ludzie. Oprócz lepszych komputerów PC, które mogą renderować więcej wielokątów i większych tekstur, istnieje kilka pomysłowych wynalazków wykonanych jak zwykłe mapy, które bardzo tanio animują światło / cień na płaskim wielokącie, dzięki czemu nudny obiekt 3D wygląda wyjątkowo szczegółowo.

Niektóre z tych kosztownych efektów, które sprawiają, że filmy mają ten dodatkowy efekt.

  • Światło odbija się. W prawdziwym życiu światło odbija się, dopóki nie zostanie całkowicie pochłonięte przez powierzchnie, na które odbija się. Dla każdego źródła światła należy wykonać obliczenia. Staraj się trzymać kolorowy przedmiot obok kawałka białego papieru, zobaczysz kolor na papierze.
  • Gry mają ostre ograniczenia dotyczące liczby używanych wielokątów, filmy z prerenderowaniem nie mają tych ograniczeń, renderowanie zajmuje tylko więcej czasu. Wracając do odbijania światła, jeśli mamy więcej wielokątów, istnieje więcej obliczeń światła dla jeszcze lepszych efektów wizualnych, ale kosztem gwałtownego wzrostu kosztów.
  • Rozmiar tekstury, karty graficzne mogą przechowywać w nich tylko pewną ilość danych, a zmiana tych danych jest kosztowna. Wspólna tekstura 1024x1024 obejmująca wszystkie mapy modułów cieniujących może z łatwością zająć kilka procent twojej karty GFX o pojemności 1 GB. Gdy karta musi przełączać dane, wiąże się to z kosztem. Oczywiście nie przejmujemy się tym zbytnio podczas prerenderingu filmu. Ponadto w filmie potrzebujemy tylko tekstur o wysokiej rozdzielczości, w których zbliża się kamera, do gry chcemy tego dla każdego obiektu, do którego gracz może się zbliżyć.
  • Wyszukiwanie ścieżek jest bardzo wymagające dla procesora. Algorytmy odnajdywania ścieżek, na przykład, sprawiają, że wrogowie znajdują trasy do ciebie lub twój gracz kroczy ścieżką, gdy gdzieś klikniesz. Takie wyszukiwanie ścieżek może być kosztowne, gdy istnieje 10000 punktów nawigacyjnych (czyli tylko każdy metr kwadratowy na mapie o wymiarach 100 x 100 m), możliwe jest, że będziemy musieli przemierzać wszystkie te punkty nawigacyjne wiele razy na jednej ramie. Istnieje wiele sposobów, aby uczynić to tańszym w zależności od potrzeb, ale faktem jest, że nie jest nam to potrzebne w przypadku wstępnie odrenderowanych scen.

Mówiąc prościej, musimy wymyślić „tanie” sztuczki, aby gra wyglądała dobrze. Ale ludzkie oko trudno oszukać.

Madmenyo
źródło