2017-05-20 1 views
2

Muss eine 3D-Engine jedes einzelne Objekt auf der Karte analysieren, um zu sehen, ob es gerendert wird oder nicht. Mein Verständnis ist, dass eine Linie vom Projektionszentrum zu einem Pixel im Ansicht Plan, wird der Motor in den nächsten Plan finden, die mit ihm schneiden, aber würde das nicht, dass für jedes Pixel bedeutet die Engine muss alle Objekte in der Karte analysieren, gibt es eine Möglichkeit, die analysierten Objekte zu begrenzen.Muss eine 3D-Engine alle Kartenobjekte vor dem Rendern analysieren?

Danke für Ihre Hilfe.

+1

Das ist die Aufgabe der Beschleunigung von Datenstrukturen wie Gitter, kd-Bäume, Begrenzungsvolumenhierarchien usw. –

+0

@NicoSchertler Danke, warum nicht in eine Antwort! Du hast mir, was ich wollte – habibhassani

Antwort

3

Solche Verfahren heißen frustum-culling algorithm.

Sie können auch weitere Informationen darüber finden Sie hier: -

Vorsicht, was Sie suchen für nicht dasselbe wie „occlusion culling“ (ein anderes zugehörigen Link „Most efficient algorithm for mesh-level, optimal occlusion culling?)“ ist, was eine weitere Optimierung ist, wenn ein Objekt vollständig hinter einem anderen versteckt.

Beachten Sie, dass die meisten Game-Engine von Objekt machen (eine Packung viele Dreiecke - über draw calls, grob gesprochen), nicht durch jedes Pixel Tracing (ray-tracing), wie Sie vielleicht verstehen.

Ray-Tracing ist in den meisten Echtzeitanwendungen zu teuer.

+0

Vielen Dank, aber ich denke, Sie verpasst, was ich will, bevor Sie die Keulung frustum tun, brauche ich etwas, um das Objekt für die Kumpel zu begrenzen, um effizienter zu sein. Wenn zum Beispiel Kegelstümpfe die Anzahl der zu analysierenden Objekte auf diejenigen innerhalb des Kegelstumpfes begrenzen, die die Okklusion schneller killt, kann ich nicht jedes Objekt der Karte jedes Mal analysieren, wenn ich das Frustum Culling mache. – habibhassani

+1

@habibhassani Meinst du einen Algorithmus/Datenstruktur, die Vorteile aus der Annahme ziehen kann: Das Ergebnis (Liste der Objekte in der Ansicht) des vorherigen Frame und aktuellen Frame sind nicht so verschieden? Wenn ja, kann der PDF-Link wahrscheinlich abdecken, was Sie wollen. – javaLover

Verwandte Themen