Thema:
Re:Also nanite ist ja echt mal krass flat
Autor: Spyro2000
Datum:30.05.21 14:27
Antwort auf:Re:Also nanite ist ja echt mal krass von Sachiel


>>Was ich mir erhoffe ist, dass Nanite animierte LowPoly-Meshes verarbeiten kann, damit die LODS für LowPoly-Meshes wegfallen.
>
>Vielleicht können Leute mit mehr Ahnung mehr erzählen. Spyro2000 ist da doch immer sehr fit, nicht, falls ich das nicht verwechsle?


(puff)

Ich wurde gerufen? ;)

Nanite hat im Moment schon noch sehr viele Einschränkungen. Als Faustregel kann man sagen, dass Nanite nur für feste, nicht verformbare Objekte benutzt werden kann ("Rigid Bodies"). Die dürfen zwar beliebig skaliert, rotiert oder bewegt werden aber müssen ihre Form jederzeit beibehalten. Das liegt daran, dass das super-effiziente Rendering bzw. das eingebaute Aussortieren verdeckter Strukturen ("Culling") darauf basiert, dass quasi jedes Dreieck zur Laufzeit eine "Aussage" darüber macht, von welchem Blickwinkel aus welche anderen Dreiecke dahinter sichtbar sind oder nicht (deshalb sind Transparenzen z.B. tabu).

Trifft es jetzt nicht ganz genau, aber es handelt sich dabei eben um eine im Vorfeld berechnete Datenstruktur, die nur funktioniert, wenn sich die relative Position der Nodes untereinander nicht verändert. Technisch wäre es zwar möglich, zur Laufzeit neue Strukturen zu erzeugen, allerdings ist das halt momentan noch sehr langsam bzw. ineffizent. Deshalb wird man in der Praxis vorerst Nanite mit traditionellen Meshes und Rendering einsetzen (nicht umsonst erzeugt UE5 immer auch ein "Proxy Mesh" mit deutlich weniger Polygonen als Fallback).

Auch funktioniert das ganze Verfahren nicht gut, wenn mehrere "Schichten" von Geometrie knapp hintereinander liegen (z.B. Blätter von Bäumen oder Bewachsung von Wänden etc.). Das Problem wird größer, je weiter weg die Kamera von diesem Objekten ist, die gebotene Genaukeitkeit teilt sich quasi auf die aktuelle Entfernung auf. Daraus resultiert dann, dass eigentlich verdeckte Objekte doch gezeichnet werden ("Overdraw"). Im gewissen Umfang ist das nicht zu vermeiden und auch akzeptabel, aber man muss halt darauf achten.

Protagonisten/Gegner können somit nicht mit Nanite Meshes gerendert werden aber es ist sehr wohl möglich, einen Charakter z.B. mit Nanite-Rüstungsteilen "auszustatten". Hauptsache, die sind für sich selbst "starr", verändern also nicht ihre Form. Soll heißen: Nanite Meshes selbst könnten nicht (zumindest AFAIK) nicht gerigged werden, aber umgekehrt kann man Nanite Meshes an ein konventionelles Rig "dranhängen".

Für VR ist die Technik übrigens momentan ausdrücklich noch nicht geignet. Das hängt damit zusammen, dass man hier eigentlich auf "Forward Rendering" setzt. Das ist ein einfacherer Ansatz der sich sehr gut für Stereo Rendering eignet und mit viel weniger Drawcalls auskommt, allerdings so gar nicht mit vielen modernen Techniken wie TAA, globaler Beleuchtung (wie z.B. Lumen) oder eben Nanite zusammenarbeitet. Letzteres ist nämlich in engeren Sinne eigentlich kein (traditionelles) Hardware-Rendering sondern basiert auf virtualisierter Geometrie, die durch einen Compute-Shader (oder bei GPUs der letzten 2 Jahre durch einen Geometry-Shader) quasi immer für jeden Frame "frisch erzeugt" wird. Und diese Arbeit würde dann jeweils doppelt anfallen inkl. doppelter Speicherauslastung und Bandbreitenbedarf - bei mindestens 90 fps aufwärts...

Will nicht sagen, dass da erstmal nichts kommt aber vorerst ist Nanite/Lumen für VR kein Thema. Zum Glück bietet aber auch die UE5 einen alternativen Renderer für VR an - nur halt ohne Nanite/Lumen. Ich hoffe ausdrücklich, dass man das noch hinbekommt, gerade in VR kann man ja an einzelne Objekte sehr nahe herangehen und sie aus allen Winkeln bewundern (z.B. das Cockpit eines Autos). Das wäre eigentlich eine absolute Steilvorlage.


< antworten >