Soll eine Wand als Fläche oder als Kiste angelegt werden?

22

Was sind die Vorteile einer Wand als Flugzeug oder als Kiste? Sollte ich ein Flugzeug mit einem Box-Collider anstelle eines Mesh-Colliders verwenden?

Pichi Wuana
quelle

Antworten:

15

Es wird ein paar verschiedene Dinge geben, die Sie berücksichtigen müssen.

Beachten Sie, dass die Vorteile der unten beschriebenen Optimierungen nur bei einer Tonne Wänden von Bedeutung sind. An diesem Punkt ist es möglicherweise ratsam, eine andere Lösung in Betracht zu ziehen, beispielsweise die Partitionierung des binären Raums (BSP), um Ihre Wände in Ihrem Spiel zu gestalten. Dies würde Ihre Levels für das Rendern (wenn richtig entworfen) und für die Physik hochoptimieren (da Sie eine sehr gute Definition haben, was kollidiert und was nicht.

Rendern

Für das Rendern einer Box ist mehr erforderlich als für das Rendern einer Ebene. Es hat mehr Vertices und Dreiecke, was bedeutet, dass Ihr Vertex-Shader und der Rasterizer mehr Daten verarbeiten müssen. Verwenden Sie daher eine Box nur, wenn Sie dies in Bezug auf die Sichtbarkeit benötigen. Entfernen Sie Gesichter nach Bedarf, damit der Spieler sie sehen kann.

Physik

Sie sollten immer ein BoxCollideranstelle eines verwenden, MeshColliderwenn Sie können. MeshColliders müssen Kollisionen pro Fläche (oder als konvexe Hülle) des Netzes anwenden und Raycasting und Physik verlangsamen (dies ist jedoch eine vernachlässigbare Menge für nur eine Box). Eine andere Sache mit BoxCollidersist, dass es für den Spieler viel schwieriger ist, sie zu überwinden, wenn sie wirklich schnell sind. Auch bei andauernden Kollisionen können Sie, wenn Sie feststellen, dass die Dinge immer noch durch Wände verlaufen, dieBoxColliders

Produktivität

Wenn Sie viel schneller mit Flugzeugen arbeiten MeshColliders(weil Sie nicht alle BoxCollidersan ihre Abmessungen anpassen müssen), ist es möglicherweise in Ordnung, nur diese zu verwenden, wenn Sie die gewünschte Leistung erzielen.

Coburn
quelle
10

Ein bisschen erweitern auf "Coburn" Punkte :

Rendern : Wenn Sie die Wand nur als Ebene rendern, ist die Wand nur von einer Seite sichtbar, da die Ebene (oder genauer gesagt ihre Flächen) nur eine gerenderte Seite hat. Wenn sich der Spieler also um die Wand bewegen kann, müssten Sie mehrere Ebenen auf allen Seiten abdecken, was bedeutet, dass Sie ohnehin eine Kiste haben.

Physik : Einfache Geometriekollider (Kugeln, Kästchen usw.) sind im Vergleich zu Vollmaschenkollidern immer schneller zu berechnen, da nicht alle Flächen des Netzes einzeln überprüft werden müssen. Stattdessen können "einfache" Raycasts oder Abstandsberechnungen (z. B. Abstand zum Kugelmittelpunkt minus Kugelgröße) verwendet werden.

Für andere Physik-Engines, die einen separaten "Flugzeug-Kollider" haben (der von Unity nicht unterstützt wird), gibt es keinen "besseren". Ein Flugzeug kann etwas schneller sein, aber es kann passieren, dass Sie auf schnelle Objekte stoßen, die es passieren, ohne tatsächlich zu kollidieren. Dann haben Sie entweder dickere Kollisionen (also Box statt Ebene) oder wechseln zur kontinuierlichen Kollisionserkennung (Continuous Collission Detection, CCD), wie hier erläutert .

Philip Allgaier
quelle
Sie können Backface Culling fast immer ausschalten.
Bálint
2
@ Bálint Richtig. Der Benutzer kann dann die Wand auch von der anderen Seite sehen, obwohl in diesem Fall eine falsche Beleuchtung vorliegt (Licht, das von den Quellen von der anderen Seite / vom anderen Raum gesendet wird, statt von derjenigen, in der er steht).
Philip Allgaier
In Ihrem zweiten Punkt haben Sie nicht genau angegeben, ob es ein Pro oder ein Contra ist und wofür. Eine Ebene scheint geometrisch einfacher zu sein als eine Kiste. Ist das Ihr Punkt?
Bakuriu
@ Bakuriu Soweit ich weiß, hat Unity keinen "Flugzeugcollider", also ist "Box" die nächste Sache. Ich habe einen Hinweis für andere Physik-Engines hinzugefügt.
Philip Allgaier
4

Noch etwas zum Rendern: Wenn Sie eine eigene Implementierung für die Schattenzuordnung verwenden, können Wände aus Kästchen Wänden aus Ebenen überlegen sein, da bei Ebenen möglicherweise ein Peter-Panning auftritt.

Hier ist eine Erklärung des Symptoms:

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/#peter-panning

Djindjidj
quelle
Was ist Peter-Panning?
Pichi Wuana
Hast du den Link befolgt, den ich bereitgestellt habe? sollte selbsterklärend sein.
Djindjidj
0

Mir wurde immer gesagt, dass es am besten ist, wenn Sie Schatten haben, diese fest zu machen, um bei leichten Blutungen zu helfen, da der Unterschied in der Tiefe zu gering ist und es bluten wird.

Ich könnte mich irren, aber ich mache alle meine Wände und solche Sachen doppelseitig, eine Wand wird nur ein paar Vert sein, also sollte es nicht so viel Ersparnis bedeuten, wenn man ein Flugzeug dabei hat.

Es gibt einige Dinge, von denen ich Seiten lasse, aber es ist meistens die Unterseite oder Oberseite von Sachen, die viele Sachen um sich haben, um bei leichten Blutungen zu helfen.

Ich mache dasselbe für die Physik, dachte nicht wirklich darüber nach, aber für mich schien es richtig, eine Wand als Wand und ein Flugzeug als Flugzeug zu benutzen, aber das bin nur ich

Justin William Stanley Bryant
quelle