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)?
Odpowiedzi:
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:
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:
źródło
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).
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło
Aby odpowiedzieć na jedno z pytań, które OP zadał w komentarzu:
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):
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:
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.
źródło
:)
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:
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.
źródło
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.
Mówiąc prościej, musimy wymyślić „tanie” sztuczki, aby gra wyglądała dobrze. Ale ludzkie oko trudno oszukać.
źródło