Einsteigerguide: Einführung in das Portal Culling in Panda3D.

Das Portal-Culling ist ein Verfahren, mit dem eine 3D-Szene in Bereiche unterteilt werden kann, die als Zellen bezeichnet werden und durch Portale miteinander verbunden sind. Ein Portal ist ein Fenster im 3D-Raum, das es ermöglicht, Objekte in einer Zelle (die „out“-Zelle) von einer anderen Zelle (die „in“-Zelle) aus zu sehen.

Das Portal Culling funktioniert am besten in Szenen, in denen die Sicht von einem Bereich zum anderen eingeschränkt ist, z.B. in einem Gebäude oder einem Verbund von Höhlen.

Die Verwendung in weit offenen Szenen hat eine sehr begrenzte Verwendung.

d occlusion e

In diesem Diagramm ist der ursprüngliche Kamerastumpf blau dargestellt, mit dem die Zelle entnommen wird. Die schattierten Bereiche stellen Bereiche dar, die nach dem Aussortieren sichtbar sind. Die Kamera schaut durch ein Portal in die nächste Zelle, und so wird der Stumpf reduziert (in Cyan), um nur das zu rendern, was durch das Portal sichtbar ist. Dieser reduzierte Stumpf wird dann verwendet, um die Sichtbarkeit weiterer Portale in anderen Zellen zu überprüfen, und er wird beim Durchlaufen weiterer Portale (rot und grün) wieder reduziert. Beachten Sie, dass, obwohl mehr Zellen für das ursprüngliche Kameragehäuse sichtbar sind, es keine direkte Sichtlinie gibt und sie daher nicht einmal berücksichtigt werden.

Wie werden Zellen und Portale gehandelt – Beispiel Panda3D.

Zellen in Panda3D sind nur NodePaths, die unter der obersten Ebene des Szenengraphen übergeordnet sind (normalerweise Rendern). Jedes Objekt, das sich physisch in diese Zelle befindet, sollte unter dem NodePath der Zelle übergeordnet werden. Es liegt an Ihnen, Objekte zu re-paren, während sie sich von einer Zelle zur anderen bewegen oder sie überhaupt nicht in eine Zelle zu legen.

Portale sind einseitig und werden daher in der Regel paarweise erstellt. Portale werden unter der Zelle, von der aus sie durchsucht werden sollen, übergeordnet. Wenn es sich beispielsweise um ein Portal aus Zelle A handelt, das in Zelle B schaut, wird es unter Zelle A geparented. Welche Seite des Portals die Vorder- oder Rückseite ist, wird durch die Wicklungsreihenfolge der Nodes bestimmt, genau wie der Rendergeometrie.

Der Code auf Anwendungsebene wird benötigt, um die Zelle anzuzeigen, in der sich die Kamera gerade befindet, und den Rest auszublenden. Während der Entnahmephase wird jedes für die Kamera sichtbare Portal aktiviert und die Objekte, die durch das Portal sichtbar sind, in die angegebene „out“-Zelle übertragen.

Wenn ein anderes Portal durch das vorherige sichtbar ist, wird der Prozess fortgesetzt. Wenn mehrere Kameras verwendet werden, z.B. um eine geteilte Bildschirmwiedergabe durchzuführen, blenden Sie die Zellen mit der gleichen Maske aus, die auf der Kamera mit camera.setCameraMask(mask) eingestellt ist.

Wir hoffen, dass wir Ihnen einen ersten Einblick in die Thematik bieten konnten. Wenn Sie Fragen oder Anregungen haben sollten, hinterlassen Sie unten einen Kommentar.

Vielen Dank für ihren Besuch.