Dies ist unser zweiter Beitrag unser dreiteiligen Serie zum Occlusion Culling in Unity 4.3. Im vorherigen Beitrag, wie das neue Occlusion-Culling-System in Unity 4.3 funktioniert. Wir thematisierten die Verwendung und die Parameter, die Sie kennen müssen, um das Beste aus dem Occlusion Culling herauszuholen. Falls Sie es noch nicht gelesen haben, können Sie es hier nachholen.
In diesem Beitrag präsentieren wir ihnen eine Liste allgemeiner Empfehlungen und Tipps, die ihnen helfen sollten, die besten Ergebnisse beim Occlusion Culling zu erzielen.
.
Occlusion von guter Qualität.
Es mag offensichtlich erscheinen, aber natürlich ist es das erste, was Sie sicherstellen sollten, dass ihre Szene tatsächlich eine sinnvolle Occlusion enthält. Darüber hinaus sollte die Occlusion möglichst aus guten, großen Okkludern bestehen, im Gegensatz zu feinen Details, die sich nur bei Betrachtung aus einem bestimmten Winkel als Okkludatoren ansammeln. Umbra ist in der Regel nicht in der Lage, eine Okkluderfusion durchzuführen, so dass selbst wenn ihr üppiger Wald mit viel laub etwas dahinter verbirgt, dies erst der Fall sein wird, wenn die einzelnen Okkludierer „angesammelt“ sind. In diesem Sinne werden die Bäume und Wälder im Allgemeinen aus Umbras Sicht ziemlich schlechte Okkludatoren sein. Andererseits ist ein Berg ein guter Okkluder und Umbra wird ihn sicherlich wie erwartet in die Occlusion-Daten aufnehmen können
Object Flags.
Es gibt zwei Haupttypen von Objekten, um die sich Umbra kümmert: Occluders und Occludees. Die Ersteren sind nur Geometrie und Umbra behandelt sie grundsätzlich als einziges, solides Modell. Letztere sind diejenigen, deren Sichtbarkeit Umbra tatsächlich mit den Occlusion-Daten testet. Occluders bestehen aus so ziemlich der gesamten Geometrie, bei der das Flag „Occluder Static“ gesetzt ist und nicht überraschend Occludee, die den Flag „Occludee static“ haben.
Als Faustregel und Standard können und sollten Sie die meisten, wenn nicht sogar alle ihrer Renderer als Decludees festlegen, damit Umbra sie aussortieren kann und sollte. Außerdem können die meisten ihrer statischen Renderer standardmäßig auch Occluders sein. Stellen Sie einfach sicher, dass, wenn ihr Renderer nicht opak ist, es auch kein Okkluder sein sollte. (Unity wird in diesem Fall tatsächlich eine Warnung ausgeben). Dazu gehören natürlich auch transparente Objekte und dergleichen.
Aber auch, wenn ihr Objekt sehr kleine Löcher enthält (z.B. eine Käsescheibe), die Sie durchsuchen möchten, aber das Reduzieren des Wertes des kleinsten Lochs weltweit keinen Sinn macht, ist das Entfernen des Okkluderflags aus dem Renderer das Richtige.
Da Okkluder als Solide gelten, kann außerdem ein korrektes Culling in der Regel gewährleistet werden, wenn die Kamera einen Okkluder nicht schneidet. Das bedeutet, wenn z.B. das Kollisionssystem nicht verhindern kann, dass die Kamera in einem Okkluder fliegt, sondern Sie wahrscheinlich das Okkluder-Flag entfernen, um aussagekräftige Ergebnisse zu erhalten.
Objektgranularität.
Angesichts der Tatsache, dass Umbra Occlusions auf Objektebene aussortiert, macht es keinen Sinn, Objekte von mehreren Kilometern Größe zu haben. Solche massiven Objekte sind sehr schwer zu entnehmen, da ein Teil des Objektes fast immer sichtbar ist, insbesondere in Kombination mit Umbras konservativen Culling. Daher ist es in der Regel eine gute Idee, z.B. das Gelände in mehrere Bereiche aufzuteilen, es sei denn, Sie möchten, dass das gesamte Gelände immer sichtbar ist.
In Bezug auf Occlusion Culling ist die beste Objektunterteilung in der Regel eine natürliche, was bedeutet, dass natürlich unterschiedliche Objekte beim Culling wahrscheinlich auch getrennt gehalten werden sollten. So hilft es in der Regel nicht, Objekte zu agressiv zu chunken. Man sollte nur Objekte gruppieren, die in Bezug auf die Sichtbarkeit ähnlich sind. Andererseits kann eine zu feinkörnige Unterteilung zu unnötigem Overhead pro Objekt führen. In Wirklichkeit wird dies erst dann zu einem Problem, wenn es Zehntausende von Okkluden in der Szene gibt.
Vielleicht sollte betont werden, dass nur die Objektunterteilung von Okkluden von Bedeutung ist. Okkludatoren gelten ohnehin als eine einzige große Schale Polygon-Soup.
Wasserdichte Modelle.
Im vorherigen Beitrag haben wir kurz beschrieben, wie Umbra zunächst die Occluding-Geometrie voxelt, diese Voxel zu Zellen gruppiert und anschließend die Zellen mit Portalen verbindet. Dabei ist Umbra immer konservativ, was bedeutet, dass Umbra in verschiedenen Fällen die Occluders etwas kleiner als das, was sie in Wirklichkeit sind oder umgekehrt die leeren Flächen etwas größer betrachtet.
Das bedeutet, dass, wenn es zufällig ein unbeabsichtigtes Loch in ihrer okkludierenden Geometrie gibt, das eher durch Voxelization erhalten bleibt. Es besteht eine gute Chance, dass es in den endgültigen Ausgabedaten etwas vergrößert wird. Dies kann zu überraschenden „Leckagen“ in der Occlusion führen. Die Kamera schaut vielleicht auf eine scheinbar feste Wand, aber die Dinge hinter der Wand werden nicht verstopft, weil irgendwo ein unbemerkt kleiner Spalt ist.
Während die Voxelization also viele unbeabsichtigte Risse und Lücken in der Occlusion-Geometrie repariert, ist es dennoch sehr wichtig, zu versuchen, die Geometrie so wasserdicht wie möglich zu gestalten. Im nächsten Beitrag werden wir die Visualisierung der Sichtlinien beschreiben, welche ihnen helfen kann, diese Art von Problemen zu beheben.
Finden der richtigen Parameterwerte.
Zugegebenermaßen ist das Schwierigste bei der Verwendung von Umbra, die richtigen Parameterwerte zu finden. Die Standardwerte in Unity leisten als Ausgangspunkt gute Arbeit, wenn man davon ausgeht, dass eine Unity-Einheit auf einen Meter im Spiel abgebildet wird und die Skala des Spiels „menschenähnlich“ ist (z.B. nicht auf molekularer Ebene modelliert, noch ist das typische Objekt ein Planet oder ein gigantischer Killer-Roboter).
Eine gute Faustregel ist, mit relativ großen Werten zu beginnen und sich nach unten zu arbeiten. Bei kleinsten Löchern z.B. dem größeren Wert, den Sie verwenden können, ist der Baking-Prozess umso schneller. Daher sollten Sie es nur dann abschalten, wenn Sie anfangen, Artefakte, d.h. falsche Negative, zu entfernen. Ebenso ist es sinnvoll, mit einem relativ großen Wer für den kleinsten Okkluder zu beginnen.
Dann können Sie damit beginnen, es nach unten einzustellen und sehen, wie Umbra besser aussortiert. Stoppen Sie, wenn das Culling zu lange dauert und/oder die Occlusion-Daten zu groß werden.
Was den Schwellenwert für die Rückfläche betrifft, so beginnen Sie mit 100. Wenn ihre Occlusionsdaten zu groß sind oder wenn Sie zufällig seltsame Ergebnisse erzielen, wenn die Kamera sehr, sehr nah ist oder möglicherweise sogar einen Okkluder schneidet, versuchen Sie es mit 90 oder sogar einem kleineren Wert. Mehr dazu erfahren Sie im nächsten Beitrag.
Im nächsten und letzten Beitrag gehen Sie einige häufige Probleme durch, auf die Menschen bei der Verwendung von Umbra stoßen.
Vielen Dank für ihren Besuch.