Warum sind Spielegrafiken nicht so schön wie animierte Filme?

60

Ich erinnere mich, dass ich mir den vorgerenderten Trailer von Tomb Raider angesehen und mir gewünscht habe, diese Grafiken könnten im Spiel selbst enthalten sein.

Warum gibt es einen so großen Unterschied zwischen dem Trailer und dem eigentlichen Spiel? Ich verstehe, dass das Spiel ein völlig anderes Konzept ist, es hat eine andere Pipeline, es muss verschiedene Arten von Spielerinteraktionen durchlaufen usw. Ich möchte wissen, was Spiele im Vergleich zu Animationsfilmen so schwierig macht.

Bisher weiß ich, dass das Erstellen eines Spiels und eines Animationsfilms eine gewisse Grundlast mit sich bringt, z. B. das Erstellen von 3D-Modellen und das Rendern (nur im Spiel geschieht dies live). Animationsfilme werden lange gerendert und es werden nur vorgerenderte Szenen angezeigt. Das ist alles, was ich weiß, also hoffe ich, dass Sie aus dieser Perspektive antworten!

Was ist mit Animationsfilmen, die stundenlang gerendert werden, die so schön sind, während Live-Rendering im Spiel weniger schön ist (aus allgemeiner Sicht)?

cowboysaif
quelle
1
Ich verstehe wirklich nicht, wie die akzeptierte Antwort wirklich die Punkte Ihrer Frage erfüllt. Können Sie hier einen Kommentar hinterlassen, um zusammenzufassen, was Sie daraus verstanden haben, dh welche Neuigkeiten hat es Ihnen gebracht, damit Sie jetzt das Problem verstehen, das Sie zuvor nicht verstanden haben?
Bogdan Alexandru
4
Nicht sicher, was Sie verwirrt sind. Die Frage ist der Titel; Der akzeptierte Beitrag beantwortet diese Frage.
jhocking
2
Eigentlich habe ich 80% von der Antwort verstanden. Der Rest deckte 20% ab, insbesondere habe ich viel aus der Antwort von @ Vladimir gelernt (siehe unten). Einige der Antworten behandelten sogar Dinge, über die ich nicht nachgedacht hatte, z. B. das Hinzufügen von Details nach dem Rendern. Und um Ihre Frage zu beantworten, habe ich die Antwort ausgewählt, weil ich denke, dass sie ein tieferes Verständnisniveau gebracht hat (er erwähnte nicht nur Punkte, sondern auch die dahinter stehenden Algorithmen / Konzepte). Und als ich damit fertig war, waren auch andere Antworten erstaunlich! Es war schwer zu entscheiden, welches das Beste ist, aber die Leute scheinen das auch zu mögen! Ich würde sie alle ankreuzen!
Cowboysaif
Vielleicht, weil die Spieleentwickler kein Interesse daran haben, mehr als 50.000.000 USD für Effekte auszugeben - etwas, das Filmproduzenten heutzutage routinemäßig tun.
Pieter Geerkens

Antworten:

109

Sie haben bereits einen der zentralen Punkte erwähnt: Zeit .

Beim Rendern einer High-Fidelity-Animation werden mehrere unterschiedliche Ansätze und Algorithmen verwendet (alle üblicherweise unter dem Begriff "Global Illumination" zusammengefasst ), wobei Ray-Tracing eine der häufigsten ist (andere umfassen beispielsweise Radiosity und Ambient Occlusion) ).

Ray-Tracing beinhaltet die Simulation einer (normalerweise hohen) Anzahl von Lichtstrahlen, die durch die Szene gehen, und die Berechnung ihrer Pfade, Reflexionen und Brechungen, wenn sie auf Objekte mit unterschiedlichen Materialien treffen. Unterschiedliche Materialien haben dann unterschiedliche physikalische Eigenschaften, die zu spezifischen Reaktionen der Strahlen führen (die Lichtmenge, die beispielsweise von einem Objekt reflektiert wird, ist bei glänzenden Objekten höher als bei glänzenden Objekten).

Ein weiterer Punkt ist die Physik : Die physikalisch korrekte Simulation von Tausenden von Haarsträhnen ist zeitaufwändig. Aus diesem Grund werden bei älteren Spielen die Haare häufig mit einem sehr rauen Netz angenähert, das dann texturiert wird, um den Eindruck von Haaren zu erwecken, möglicherweise mit einigen zusätzlichen beweglichen Objekten, um das Aussehen etwas realistischer zu gestalten.

Auch zu beachten: Speicher & Bandbreite . Je höher die Qualität einer Textur sein sollte, die auf ein Objekt in einer Szene angewendet wird, desto mehr Speicher muss geladen und in einem Spiel verwendet werden. Das System muss jedoch nicht nur über genügend Speicher verfügen, um die Daten zu speichern, sondern diese Daten müssen auch übertragen werden, wodurch die verfügbare Bandbreite aufgebraucht wird. Da Speicher und Bandbreite begrenzt sind, gibt es ein Maximum, was erreicht werden kann.

Spiele schummeln oft ein wenig, indem sie nur die hochauflösenden Texturen für nahe Objekte verwenden, und verwenden Bilder mit niedrigerer Auflösung für weit entfernte Objekte (Begriff: MipMapping ), wodurch die erforderliche Bandbreite verringert wird, da weniger Texel abgerufen werden müssen, was wiederum die Leistung erhöht (Siehe Abschnitt über MipMapping im OpenGLES-Programmierhandbuch von Apple).

In ähnlicher Weise verwenden Spiele auch oft unterschiedliche Maschen für Objekte, je nachdem, wie weit sie entfernt sind, wobei weit entfernte Objekte weniger detailliert sind (Begriff: LoD = Level of Detail ).

Fazit: In Echtzeitgrafiken (wie Spielen und Simulationen) funktioniert dieser detaillierte und komplexe Renderprozess natürlich nicht, um flüssige / flüssige Szenen zu erzeugen. Sie benötigen mindestens 20 gerenderte Bilder pro Sekunde, um diesen fließenden Animations- / Bewegungseffekt für das menschliche Auge zu erzielen. Andererseits kann das Rendern eines einzelnen Frames (!) In einem Animationsfilm leicht einige Stunden bis mehrere Tage in Anspruch nehmen, abhängig von vielen Faktoren wie der Anzahl der beim Ray-Tracing verwendeten Strahlen oder der Anzahl der Samples für Ambient Okklusion (siehe diese Pixar Seite 1 / Pixar Seite 2 für Screenshots von 16 vs. 256 Samples) sowie die gewünschte Filmauflösung (mehr Pixel = mehr zu berechnende Informationen). Siehe auch diesen Artikelüber den Prozess hinter Pixars Monsters University- Animationsfilm, der einige interessante Einblicke gibt und außerdem 29 Stunden Renderzeit pro Frame erwähnt.

Im Allgemeinen gilt: Je höher die zu erreichende Wiedergabetreue / der zu erreichende Realismus ist, desto mehr Iterationen / Bounces / Samples werden normalerweise benötigt, was wiederum mehr Ressourcen erfordert (sowohl Zeit als auch Rechenleistung / Speicher). Um den Unterschied zu visualisieren, sehen Sie sich das resultierende Rendering basierend auf der Anzahl der Bounces für die Refraktionsberechnung in diesem Beispiel an: Diamond Bounces von Keyshot

Die Qualität von Echtzeitanwendungen nimmt jedoch aus zwei Gründen ständig zu:

  1. Stärkere Hardware: Je besser die (Spiele-) Computer werden (= mehr [parallele] Rechenleistung, höhere Datenübertragung zwischen Computerkomponenten, mehr und schnellerer Speicher usw.), desto höher ist auch die visuelle Wiedergabetreue, da zeitaufwändigere Berechnungen tatsächlich erforderlich sind machbar in einem Echtzeitsystem.
  2. Es werden klügere Methoden / Formeln entwickelt und implementiert, die in der Lage sind, eher fotorealistische Effekte ohne Raytracing zu erzielen. Hierbei handelt es sich häufig um Annäherungen und manchmal um vorberechnete Daten. Einige Beispiele:

Philip Allgaier
quelle
4
@cowboysaif nein du kannst es nicht auf der GPU "so wie es ist" machen. Sie müssten spezialisierte HW bekommen. Es gibt jedoch Versuche, Echtzeit-Raytracing mit CUDA oder einer ähnlichen Technologie durchzuführen.
Wondra
4
Es gibt viele andere Techniken als Raytracing, die beim Offline-Rendern verwendet werden, um professionelle Kinofilme zu erstellen. Aber wie Sie sagen, verwenden sie teure Rendering-, Beleuchtungs- und Schattierungstechniken, die für das Echtzeit-Rendering einfach nicht praktikabel sind.
MrCranky
40
Diese Antwort erklärt, warum vorgerenderte Animationen so viel mehr Zeit in Anspruch nehmen, aber den Maßstab nicht wirklich erfassen. Der Unterschied ist riesig ! Ein Spiel muss ein Bild in weniger als 1/30 Sekunde rendern , während Filme routinemäßig mehrere Tage benötigen, um jedes Bild zu rendern.
jhocking
9
"Tage" ist sicherlich das obere Ende der Zeitskala, aber ja, Filme benötigen manchmal mehr als einen Tag, um ein einzelnes Bild zu rendern (siehe hier zum Beispiel venturebeat.com/2013/04/24/… ). Und das sogar im Durchschnitt rendere mal es ist immer noch wie ein halber tag pro bild, was immer noch waaaaay länger ist als ein spiel rendern muss. Der Grund, warum das Rendern des gesamten Films nicht ein Jahrzehnt dauert, ist, dass sie eine Renderfarm haben, d. H. Hunderte von Maschinen rendern gleichzeitig.
jhocking
7
Ein paar Fakten: Raytracing wird überall eingesetzt, es ist absolut keine Nischentechnik. VRay ist nur CPU. VRayRT ist nur GPU. Die GPU eignet sich nicht für die Produktion, da Szenen normalerweise viele GB RAM benötigen und nicht auf die GPU passen (aber manchmal hilft es). Unsere eigenen Aufnahmen dauern 1-2 Stunden / Frame auf High-End-CPUs und es ist nicht so lange. JackAidley ist völlig falsch.
Calvin1602
44

Neben dem Zeitfaktor ist es erwähnenswert, dass der Künstler in einem Film die vollständige Kontrolle darüber hat, was der Betrachter betrachtet und was nicht.

In einer typischen Filmszene wird die Kamera nicht viel Zeit damit verbringen, an die Decke oder in eine dunkle Ecke des Raums zu zeigen oder auf den Knöchel einer Person zu zielen, sodass das Budget für Polygone und Texturen für diese Elemente ziemlich niedrig ist.

Wenn sich die gesamte Szene von einem Standpunkt aus abspielt, muss das virtuelle Set (wie ein reales Filmset) nicht die Teile enthalten, die sich hinter der Kamera befinden. In den meisten Spielen kann der Spieler jederzeit und überall nachsehen. Das heißt, das Qualitätsbudget kann sich auf das konzentrieren, was tatsächlich gesehen wird. (Einige Spiele für Dritte, z. B. die God Of War-Serie, verwenden eine eingeschränkte Kamera. Ihre Grafik ist in der Regel deutlich besser als die von Spielen mit kostenlosen Kameras.)

Russell Borogove
quelle
12
Ein nicht zu unterschätzender Punkt. Das Rendern einer festen Reihe von Frames ermöglicht die vollständige Fokussierung auf nur diese Frames. Alle Probleme, die in einem einzelnen Frame auftreten, können manuell behoben werden.
aaaaaaaaaaa
9
Heck, dies wird oft mit Spielen verwendet, die ihre Zwischensequenzen "live in engine" machen, weshalb die Zwischensequenzen immer noch besser aussehen können.
trlkly
Ein Spiel, das meiner Meinung nach gegen diese Regel verstößt, ist Brothers: A Tale of Two Sons ( Brüder: Eine Geschichte von zwei Söhnen). Die Entwickler sind sehr bemüht, sicherzustellen, dass die Kamera am richtigen Ort landet und sich auch natürlich anfühlt.
Basic
12
Was ist mit Animationsfilmen, die stundenlang gerendert werden, die so schön sind, während Live-Rendering im Spiel weniger schön ist (aus allgemeiner Sicht)?

Sie gehen davon aus, dass der Unterschied einfach im Rendern liegt - in einem Animationsfilm gibt es auch die Möglichkeit, nachträglich zu bearbeiten. Möglicherweise haben sie Effekte, die in der ursprünglichen Engine nur schwer zu erzielen waren, oder sie können die Einstellungen ein wenig verändern (z. B. entfernen oder wiederholen Sie jeden 10. Frame, um die Animation zu beschleunigen / zu verlangsamen).

Wenn Sie eine Chance haben, stöbern Sie in einer der DVDs von 'Roughnecks: The Starship Trooper Chronicles', auf denen der Herausgeber und die Animatoren Kommentare zu den Tricks hinter sich haben, die sie zu machen hatten, als sie anfingen, ihren Liefertermin zu überschreiten Schüsse recyceln, aber die Achse drehen, damit es nicht so offensichtlich ist, Farbkorrekturen, Maskieren von Dingen, die sie nicht mögen, Hinzufügen von Explosionen usw.

Joe
quelle
Game Engines machen das auch! ;-)
Adrian Maire
@AdrianMaire: Sie könnten einige der anderen Dinge tun, aber sie hätten dort nicht den Menschen, der als Redakteur fungiert und die Dinge bei Bedarf optimiert. Ich weiß, dass ich erwähnt habe, wie sie Dinge optimieren, aber mein wichtigster Punkt war, dass es Menschen gab, die an vorgerenderten Dingen beteiligt waren.
Joe,
10

Sie haben Ihre Frage schon beantwortet. Animationsfilme weisen in der Regel einen höheren Detaillierungsgrad auf, was zu einer langen Renderzeit für jedes einzelne Bild führt.

Spiele hingegen enthalten weniger Details, da die Szene mindestens 30 Mal pro Sekunde gerendert werden muss. Das ist auch der Grund, warum Entwickler versuchen, so viele Assets (Texturen, Modelle usw.) wie möglich wiederzuverwenden, da das Rendern desselben Objekts an zwei Positionen viel schneller ist, als wenn alles eindeutig wäre. Sie müssen auch darauf achten, nicht zu viele Polygone in ihren Modellen zu verwenden, und stattdessen versuchen, mithilfe von Beleuchtung, Texturen, Bump-Mapping und anderen Techniken einen Eindruck von Tiefe zu erzielen.

Filme haben dieses Problem nicht. Sie gestalten die Szene nach ihren Wünschen und verwenden so viele und detaillierte Texturen, Modelle und Geometrien, wie sie benötigen, um die gewünschte Szene zu erzielen.

Man könnte jedoch argumentieren, dass die Spiele aufholen. Wenn Sie sich einige der am besten aussehenden Spiele der letzten Zeit ansehen, sind sie nicht mehr so ​​weit von der Filmqualität entfernt wie früher. Natürlich können Sie in einer vorab gerenderten Szene immer mehr Details sehen als in einem Spiel, aber ich denke, der Unterschied wird in ein paar Jahren nicht mehr so ​​deutlich sein.

Christian
quelle
1
Ich liebe diese Antworten! Also, wer sollte der Hauptschuldige sein? Polygonebene oder Raytracing? Verwenden Game Engines in der Regel Z-Buffer, weil sie leichter sind? Oder macht Raytracing mehr als Tiefenberechnung?
Cowboysaif
2
Ich vermute, es ist Raytracing. Philip scheint viel sachkundiger zu sein als ich, aber soweit ich weiß, ist dies im Grunde eine Möglichkeit, Lichtstrahlen so zu simulieren, wie sie in der Realität wirken würden - von Dingen abprallen, diffus sein, zerbrechen oder auf andere Weise durch Materialien in der Szene verändert werden , und so weiter. Wenn Sie Dinge wie Fell, Haare oder andere schwere Simulationen (wie Flüssigkeiten) in Ihrer Szene haben, ist auch die Physik leistungsintensiv - auch diese Dinge wirken sich dann wieder auf die Komplexität der Strahlenverfolgung aus.
Christian
2
Eine Strahlverfolgungsanwendung benötigt auch so etwas wie einen Z-Puffer, um zu bestimmen und zu speichern, welche Objekte mit anderen Objekten verdeckt sind. Die Strahlverfolgung ist jedoch viel detaillierter als eine Echtzeitanwendung, da sie all die Dinge tut, die Christian und ich bereits erwähnt haben, um eine höhere grafische Wiedergabetreue zu erzielen, indem sie diese einzelnen Lichtstrahlen aussenden und die tatsächlichen Brechungen / Streuungen, z. B. in Glasobjekten oder Wasser, berechnen , physikalische Haarwiedergabe, indirekte Beleuchtung und Umgebungsbedeckung usw. (obwohl einige dieser Teile heutzutage, wie ich bereits erwähnt habe, auch in Echtzeit angenähert werden können).
Philip Allgaier
7
Filme werden mit einer Rechenzeit von ca. 10-12 Stunden pro Bild gerendert. Und nach dem Blinnschen Gesetz fügen sie der Szene jedes Mal mehr Dinge hinzu, wenn die Rechenleistung besser wird, sodass sie wirklich nie schneller wird. Beim Rendern von Filmen werden in der Regel auch geschlossene, "exakte" Lösungen für alle Rendering-Gleichungen verwendet, bei denen Spiele zahlreiche Näherungswerte liefern, da sie millionenfach schneller als ein Film sein müssen.
Chuck Walbourn
2
Ich habe noch
8

Die anderen Antworten behandeln die Rohgrafikprobleme ausführlich, erwähnen jedoch nicht einen wichtigen Teil des Realismus von Spielen gegenüber Filmen und Trailern: die Animationen und Kamerabewegungen .

In einem Film oder Trailer kann jede Bewegung von Personen und Kameras sorgfältig koordiniert werden, um genau die richtigen Emotionen für den Moment zu zeigen, und sie müssen nie wiederholt werden. In Videospielen muss das Spiel in der Lage sein, sofort auf die Bewegungen des Spielers zu reagieren, und muss einen kleinen Pool von Aktienanimationen wiederverwenden, um die unbegrenzte Spielzeit zu füllen, die möglich sein kann.

Beispiele hierfür aus dem fraglichen Trailer sind, wenn der Therapeut nickt und ein "nicht schlechtes" Lächeln gibt , und wenn Lara die Armlehne greift, mit dem Bein wackelt oder ehrfürchtig in die Höhle schaut. Diese kleinen Dinge (oder das Fehlen von ihnen und die damit verbundenen "plastischen" Charaktere) wirken sich weit mehr auf den wahrgenommenen Realismus aus als kleinere Grafikverbesserungen.

Im Gegensatz zu den anderen Grafikunterschieden ist dies kein Problem, das möglicherweise durch mehr Rechenleistung gelöst werden kann: Es ist ein grundlegender Unterschied zwischen einer Welt, in der Skripte erstellt wurden, und einer Welt, die auf jede Ihrer Aktionen reagiert. In diesem Zusammenhang erwarte ich, dass der Realismus der heutigen Trailer auf absehbare Zeit das gesamte Gameplay übertreffen wird.

Tim S.
quelle
8

Neben den anderen großartigen Antworten, die bereits veröffentlicht wurden, ist es erwähnenswert, dass Spieleentwickler viele ihrer visuellen Effekte als einfache Texturen backen müssen, um die für Spiele erforderlichen schnellen Verarbeitungszeiten zu erreichen . Dies bedeutet, dass große Sorgfalt darauf verwendet werden muss, Effekte zu vermeiden, die nicht gut backen.

Ein wichtiger Effekt, der bei Videospielen nur schwer zu erzielen ist, ist das Subsurface Scattering (SSS) . Leider ist dieser Effekt wirklich wichtig, um eine realistisch aussehende menschliche Haut zu erzeugen. Das ist der Grund, warum viele "realistische" Videospielfiguren plastisch wirken.

Eine Möglichkeit für Entwickler, dieses Problem zu vermeiden, besteht darin, die Zeichen absichtlich in hellen Farben zu halten, um das plastische Erscheinungsbild zu beeinträchtigen, oder dem Gesicht viele Schatten und strukturelle Details (wie Bärte usw.) hinzuzufügen, um die ansonsten großen, durchgehenden Bereiche von aufzubrechen Haut.

Vladimir
quelle
2
Ganz zu schweigen von der Nachbearbeitung der Filmanimationen. Viele Dinge werden als mehrere separate Szenen gerendert, die nach dem Rendern überlagert werden müssen. Aus diesem Grund sehen Sie in vielen Animationsfilmen häufig relativ statische Hintergründe, in denen sich die Figuren im Vordergrund bewegen.
Vladimir
6

Um eine der Fragen zu beantworten, die das OP in einem Kommentar gestellt hat:

"Also, wer sollte der Hauptschuldige sein? Polygonebene oder Raytracing?"

Diese Frage ist schwieriger als es aussieht. Ich denke, eine gute Faustregel ist die folgende Gleichung (die ich übrigens erfunden habe):

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

Grundsätzlich bedeutet dies, dass bei Modellen mit relativ wenigen Spezialmaterialien (dh ohne Spiegel, Untergrund usw.) die Rechenzeit durch die Anzahl der Poligone groß ist. Dies ist normalerweise bei sehr einfachen Videospielgrafiken der Fall.

In der Praxis ist jedoch in neueren High-End-Spielen und insbesondere in Filmen die Raytracing-Funktion "normalerweise" der Täter. Warum? Gut aus zwei Gründen. Ich gebe zuerst den mathematischen Grund und dann am Ende meine Meinung zum wahren Grund.


Mathy Grund:

Update: Diese mathematische Erklärung ist möglicherweise nicht ganz korrekt. Weitere Informationen finden Sie in der Erläuterung zu CrazyCasta in den Kommentaren.

Angenommen, Sie haben 1000 Polygone und 3 Lichtquellen. Die kleinste Anzahl von Raytraces, die Sie ausführen müssen, ist 3 * 1000.

Wenn wir die Situation zu stark vereinfachen und davon ausgehen, dass 1 Strahlenspur = 1 Berechnung (eine grobe Unterschätzung), benötigen wir 3000 Berechnungen.

Angenommen, Sie möchten jetzt auch Überlegungen anstellen.

Die Standardeinstellungen für Reflections im Freeware-Programm Blender sind:

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

Bei diesen Einstellungen können wir davon ausgehen, dass diese supereinfache Reflexion im besten Fall den Rechenaufwand Ihres Modells verdoppelt .

Aber wie ich bereits sagte, ist dieses Beispiel sehr stark vereinfacht, und Sie können eine Vielzahl von Effekten (außer den bereits erwähnten) finden, die Ihre Renderzeit durch das Dach schießen.

Fall und Punkt: Versuchen Sie, Reflexionen mit gloss=1(die Standardeinstellung in Blender) zu rendern , drehen Sie den Glanz auf 0,01 herunter und vergleichen Sie die beiden Renderzeiten. Sie werden feststellen, dass die mit 0,01 Glanz viel langsamer sein wird, aber die Modellkomplexität wurde überhaupt nicht geändert.


Mein qualitativer, aber realistischer Grund:

Durch Erhöhen der Netzkomplexität wird die Modellqualität nur bis zu einem Punkt verbessert. Nach ein paar Millionen Gesichtern gibt es wirklich nicht viel, was das Hinzufügen weiterer Gesichter ausmacht. Ich gehe sogar so weit, dass Sie mit der Glättung für die meisten allgemeinen Zwecke mit nur ein paar hundert Gesichtern davonkommen können.

Aber die Dinge, die fast immer einen Unterschied machen, sind die Beleuchtung, die Materialeffekte und die Strahlverfolgung. Das ist der Grund, warum Filme dazu neigen, eine große Anzahl davon zu verwenden, um die schönen Komplexitäten der realen Welt zu approximieren.


Ein guter Weg, um ein Gefühl für all diese Dinge zu bekommen, ist die Besetzungsliste am Ende der neuesten Disney-Animationen in Spielfilmlänge. Sie werden wahrscheinlich überrascht sein, wie viele Licht- und Texturleute sie haben.

Vladimir
quelle
2
Mein Gott, das ist der Punkt, nach dem ich gesucht habe. Obwohl es nicht meine Frage war (ich war ein bisschen verwirrt, was ich fragen sollte), denke ich, das ist es!
Cowboysaif
1
@cowboysaif Bin froh zu helfen! :)
Vladimir
1
In Wirklichkeit sind die Dinge nicht so schön, wie ich sie aussehen lassen könnte. Aber ich denke, das kann Ihnen helfen, sich einen Überblick zu verschaffen. Normalerweise verlasse ich mich nur auf Versuch und Irrtum. Wenn ich beispielsweise eine lange Szene länger rendere (über 100 Bilder), rendere ich zuerst ein oder zwei Bilder, damit ich sehen kann, wie schnell es geht und welche Effekte dazu neigen, es zu verlangsamen.
Vladimir
2
Ein alter Trick aus der Verwendung von POVRay auf einem 486 in der Vergangenheit - wenn Sie wissen möchten, welche Teile Ihrer Szene am teuersten sind, rendern Sie mehrere Ansichten der gesamten Bühne mit allen Akteuren und Requisiten und beobachten Sie die Abschnitte, die langsamer werden der raytracer zum kriechen. Vergrößern Sie diese Bereiche und ermitteln Sie die Leistung im ungünstigsten Fall. Geben Sie einen Großteil Ihres Rendering-Budgets für die Frames aus, die diese Elemente enthalten. Wenn Sie einen engen Zeitplan für das Rendern haben, ziehen Sie in Betracht, einige Aufnahmen neu zu gestalten.
Tom B
1
@ TomB Guter Rat! Ich füge hinzu, dass Sie, wenn Sie erwarten, dass eine bestimmte Szene langsam ist, sie über das Web ausfarmen und alles andere lokal rendern können.
Vladimir
4

Es lohnt sich hinzuzufügen, dass Filmanimationen normalerweise eine Menge visueller Tricks ausführen, um die wahrgenommene Bewegung flüssiger zu machen.

Animatoren können zum Beispiel traditionelle Handanimationstechniken verwenden, die beim Echtzeit-Rendern normalerweise nicht verwendet werden, wie zum Beispiel Abstriche, Multiples oder Warping, um flüssigere Bewegungen zu erzeugen, trotz der niedrigeren Framerate, die Filme aufweisen (zumindest bis vor kurzem) ) angezeigt bei. Insbesondere die Verwendung von Abstrichen und Vielfachen wird durch die Verwendung von Maschen erschwert. Sie müssen Maschendeformationen für diese Art von Maschenverzerrung erzeugen, und ich glaube nicht, dass ich das bei 3D-Videospielen gesehen habe.

Frames mit sich schnell bewegenden Objekten können mit einer anderen Framerate gerendert und dann erneut kombiniert werden, um Bewegungsunschärfe in der Szene zu erzeugen. Bewegungsunschärfe ist heutzutage eine weit verbreitete Technik in 3D-Echtzeitgrafiken. Der Effekt ist in der Regel nicht von der hohen Qualität, die ein Animationshaus mit Dutzenden von Prozessoren erzielen kann (siehe die obigen "Zeit" -Antworten), was hauptsächlich darauf zurückzuführen ist, dass eine gefälschte Bewegungsunschärfe mehrere Nachbearbeitungsschritte pro Ebene erfordert. und eine große Anzahl von Zwischenrahmen, um wirklich flüssig zu sein.

Um diese Art von visuellem Trick auszuführen, um die wahrgenommene Qualität mit Echtzeitgrafiken effektiv zu verbessern, muss die Ausgabeframerate auf Raten begrenzt werden, die deutlich unter den maximal verfügbaren Zwischenframes liegen, die im Hintergrund gerendert werden. Es gibt wahrscheinlich mehrere Überlegungen, ob die geringfügigen Verbesserungen der Bildqualität für die Verwendung solcher Techniken den Verlust des Rahmenbudgets wert sind, insbesondere wenn es äußerst schwierig sein wird, die richtigen Ergebnisse zu erzielen.

Um einen Aspekt Ihrer Frage anzusprechen:

Was ist mit Animationsfilmen, die stundenlang gerendert werden, die so schön sind, während Live-Rendering im Spiel weniger schön ist (aus allgemeiner Sicht)?

Vor allem Kunsthandwerk. Die Echtzeitkünstler haben nicht die Möglichkeit, jedes Einzelbild zu optimieren oder einmalige Gimmicks zu erstellen, um das Gesamtbild einer Szene oder eine Reaktion zu verbessern, nicht nur aufgrund von Zeitbeschränkungen (sowohl bei der Entwicklung als auch beim Rendern), sondern auch aufgrund von von praktischen Einschränkungen. Wie im Interaktivitätskommentar erwähnt, wird der Player wahrscheinlich nicht jedes Mal genau das Gleiche tun, aber der Film wird jedes Mal gleich abgespielt.

Dies bedeutet, dass der Videospielkünstler in Bezug auf die Modellqualität und die endgültige Renderqualität ganz andere Prioritäten hat als der Filmkünstler. Beide erfordern enorme Fähigkeiten, erfordern jedoch jeweils unterschiedliche Techniken. Ich gehe davon aus, dass sich diese Techniken zunehmend annähern, wenn die Rendering-Hardware auf Consumer-Ebene weiterentwickelt und weitere mathematische Genies bei Ihren SIGGRAPHs und GDCs auftauchen.

Tom B
quelle
1
Oh, Sie haben gerade etwas besprochen, worüber ich sprechen möchte. Netzverformung? heißt es auch mesh modifier Es gibt einen Modifikator, den ich verwendet habe, als ich an Unity 3D herumgebastelt habe . Er heißt Mega-Fiers ( west-racing.com/mf/?page_id=2 ). Obwohl Unity 3D nur Bone-basierte Animationen unterstützt, glauben Sie, dass die Spieltechnologien dies endlich bewältigen können? Ich habe allerdings keine Ahnung von anderen Spiele-Engines!
Cowboysaif
1
Diese Art von Effekt sollte mit jeder Art von Animationstechnik kompatibel sein, solange Sie mathematische Ganzmodell-Verzerrungen mit einem Vertex-Shader verwenden (wahrscheinlich das, was die "Mega-Fiers" tun). Einige andere Ansätze sind: * Ein "Ziel" -Gitter, das ein zweites Gitter ist, das vollständig verzerrt ist, und Verwenden des Scheitelpunkt-Shaders, um die Scheitelpunkte in Ihrem Gitter in Richtung der entsprechenden Scheitelpunkte im zweiten Gitter zu verschieben. * Die Deformationen in Ihr Modell selbst einbrennen lassen und eine Keyframe-Animation verwenden; * Machen Sie Ihre Verzerrungen mit Skelett-Animation ausschließlich Platzieren von zusätzlichen Knochen nach Bedarf ...
Tom B
1
Ich bin mir sicher, dass diese Art von Animation schon eine Weile möglich ist und teilweise bereits verwendet wurde, obwohl ich mich größtenteils nur an Instanzen in Spielen mit blöden Kreaturen und flexiblen Modellen (wie Gish, Tower of Goo, Octodad) erinnern kann. . Der schwierige Teil besteht darin, herauszufinden, wann die Effekte verwendet werden sollen, insbesondere wenn es um die Verwendung von Mehrfach- oder Abstrichen geht. Die Richtung der Kamerabewegung beeinflusst, wie das resultierende Multiple oder der resultierende Abstrich aussehen soll. Ich vermute, dass die Richtlinien, die Handanimatoren verwenden, ein guter Ausgangspunkt sind, aber denken Sie an den ganzen Spaß, der beim Experimentieren zu haben ist!
Tom B
3

Es kann viele Jahre dauern, bis ein einzelner Animationsfilm auf einem einzelnen Tier einer Maschine gerendert ist. Da es vorgerendert ist, spielt es keine Rolle, wie viele kostspielige Effekte wie Lichtreflexe, Schatten usw. wir der Szene hinzufügen. Diese Filme werden normalerweise von Renderfarmen gerendert, auf denen Tausende von PCs miteinander verbunden sind und am selben Job arbeiten.

Der Grund, warum wir nicht dieselbe Qualität in Echtzeit erzielen können, ist einfach, dass das Gerät das aktuelle Bild in etwa 16 ms rendern muss, um eine FPS von 60 zu erreichen. Ein einzelnes Bild für einen animierten Film kann Stunden dauern, um auf einem einzelnen PC gerendert zu werden.

In einem Spiel geht neben der Grafik eine Menge anderer Dinge vor sich. In jedem Frame gibt es Unmengen von Berechnungen. Einfach gesagt, ein Animationsfilm muss nicht den Schaden berechnen, den der Spieler von einem Raketenwerfer erleidet. Sie animieren nur die Leisten und die Polygone werden gerendert.

Zum Glück gibt es einige geniale Menschen, die auf diesem Planeten herumlaufen. Abgesehen von besseren PCs, die mehr Polygone und größere Texturen rendern können, gibt es einige raffinierte Erfindungen, die wie normale Karten erstellt wurden und Licht / Schatten auf einem flachen Polygon sehr billig animieren können, sodass ein langweiliges 3D-Objekt außergewöhnlich detailliert aussieht.

Einige dieser teuren Effekte, die Filme erzeugen, haben das gewisse Extra.

  • Licht prallt ab. Im wirklichen Leben prallt das Licht ab, bis es vollständig von den Oberflächen absorbiert wird, auf denen es abprallt. Für jede Lichtquelle müssen Berechnungen durchgeführt werden. Versuchen Sie, ein farbiges Objekt neben ein Stück weißes Papier zu halten. Sie werden sehen, dass die Farbe auf dem Papier blutet.
  • Für Spiele gelten strenge Einschränkungen hinsichtlich der Anzahl der verwendeten Polygone. Für Prerender-Filme gelten diese Einschränkungen nicht. Das Rendern dauert nur länger. Zurück zum Lichthüpfen: Wenn wir mehr Polygone haben, gibt es mehr Lichtberechnungen für noch bessere Darstellungen, aber auf Kosten der exponentiell wachsenden Kosten.
  • Grafikkarten mit Texturgröße können nur eine bestimmte Datenmenge aufnehmen, und das Umschalten dieser Daten ist teuer. Eine gewöhnliche 1024x1024-Textur, die alle Shader-Maps enthält, kann leicht ein paar Prozent Ihrer 1-GB-GFX-Karte ausmachen. Wenn die Karte Daten wechseln muss, ist dies mit Kosten verbunden. Offensichtlich interessiert uns das beim Vorrendern eines Films nicht so sehr. Außerdem benötigen wir in einem Film nur hochauflösende Texturen, in deren Nähe sich die Kamera befindet. Für ein Spiel möchten wir dies für jedes Objekt, an das sich der Spieler annähern kann.
  • Die Pfadfindung stellt hohe Anforderungen an die CPU. Mit Hilfe von Pfadfindungsalgorithmen können Feinde beispielsweise Routen zu Ihnen finden oder Ihr Spieler kann einen Pfad gehen, wenn Sie auf eine beliebige Stelle klicken. Diese Wegfindung kann kostspielig sein, wenn es 10000 Wegpunkte gibt (das entspricht nur einem Quadratmeter auf einer Karte von 100 mx 100 m), ist es möglich, dass wir alle diese Wegpunkte mehrmals in einem einzelnen Frame überqueren müssen. Es gibt viele Möglichkeiten, dies je nach Bedarf billiger zu machen, aber die Tatsache ist, dass wir dies nicht für vorgerenderte Szenen benötigen.

Kurz gesagt, wir müssen uns "billige" Tricks einfallen lassen, damit ein Spiel gut aussieht. Aber das menschliche Auge ist schwer zu täuschen.

Madmenyo
quelle