Wie erstelle ich einen hochwertigen und schnellen Portaleffekt?

9

BEARBEITEN: Also habe ich den visuellen Effekt des Portals ohne Leistungseinbußen erhalten, und ich habe die Physik so eingerichtet, dass Objekte mit starren Körpern nahtlos durch Portale und Objekte mit Charakter-Controllern nahtlos durch Portale bewegt werden. Das einzige, was ich jetzt herausfinden möchte, ist das Mischen von zwei Kameraansichten, um den richtigen Übergangseffekt für die erste Person zu erzielen. Irgendwelche Ideen, wie ich diese beiden mischen würde? Ich denke an etwas, das nur einen Tiefen-Shader oder das normalisierte Ansichtsfenster verwendet. Mein Hauptproblem besteht darin, dies in Echtzeit und mit Winkeln zu berechnen.

Ich habe also daran gearbeitet, einen Portaleffekt in Unity3D zu erstellen. Offensichtlich habe ich Valves Portal als großen Einfluss auf die Programmierung genommen. Momentan verwende ich einfach die Rendertextur einer Kamera, um den grafischen Effekt zu vermitteln, und dann etwas Code, um den Rest zu erledigen. Das Problem ist, dass es bei 2048 x 2048 genauso hochwertig aussieht wie das von Portal, aber einen starken FPS-Verlust verursacht. Um dies zu lösen, müsste ich entweder die Texturqualität verringern oder die Häufigkeit, mit der ich die Textur aktualisiere.

Valve hat einen hochwertigen Portaleffekt erzielt, ohne einen hohen Bildratenverlust zu verursachen. Wie kann ich das gleiche tun? Hat jemand gute Ideen, um eine hochauflösende Textur zu rendern, ohne Bildverlust zu verursachen?

Ich denke darüber nach, meinen eigenen Code für das Rendern in Texturen zu erstellen, anstatt das in Unity integrierte System zu verwenden. Das ist machbar, aber definitiv ein Ärger. Gedanken, Ideen oder Vorschläge werden daher sehr geschätzt.

Timothy Williams
quelle
3
Ich kann die Referenz nicht finden, aber ich erinnere mich, dass jemand gesagt hat, dass Portal dafür kein Rendering als Textur verwendet hat.
Msell
1
Schauen Sie sich Pseudo Form an , ein Portal-ähnliches Spiel (die Quelle befindet sich im Hauptdownload). Es gibt auch andere "Portal-Implementierungen" im Web, aber ich denke, dies ist die bekannteste. Spielen Sie auch Portal mit den Entwicklerkommentaren auf. In einigen von ihnen sprechen sie über die Herausforderungen bei der Implementierung der Portale.
Vasco Correia
7
Ich kann mir nicht vorstellen, warum Sie eine Textur von 2028 x 2048 benötigen, damit ein Portal mit weniger als 1080p scharf aussieht. Sie sollten definitiv nicht über die Anzeigeauflösung hinausgehen müssen, die Sie für Ihr Spiel im Allgemeinen verwenden. Ich würde sogar sagen, dass Sie die Bildschirmgröße des Portals herausfinden und diese verwenden sollten, um eine Rendertextur mit der entsprechenden Größe auszuwählen (was sie in der Ferne sehr effizient und "schwerer" macht, wenn das Portal mehr Bildschirm erhält -space.
Stig-Rune Skansgård
1
Welchen Ansatz haben Sie für den visuellen Effekt gewählt? Haben Sie herausgefunden, wie Sie nur das rendern können, was über das Portal sichtbar war?
Jhocking
1
Sie sollten die ursprüngliche Frage unverändert lassen und eine neue Frage zum neuen Problem stellen.
Msell

Antworten:

5

Nach stundenlanger Recherche und Programmierung habe ich herausgefunden, wie ich den visuellen Effekt dafür richtig erzielen kann. Wenn Sie nur ein Portalsystem kaufen möchten , das für Grafiken und fast alles andere, was Sie benötigen, geeignet ist , lesen Sie das Portalizer Unity-Paket.

Ich programmiere in C # und dieses Paket ist in JS, aber die Logik dahinter ist unglaublich nützlich und gut durchdacht. Im Allgemeinen folgte ich seinem logischen Denken mit einigen Verbesserungen für mein Spiel und einem Ego-Controller.

Im Wesentlichen verwenden Sie eine modifizierte Version dieses Wassershaders / Skripts. Haben Sie zwei Spiegel in der Szene und lassen Sie eine Kamera das, was sie in jeder Reflexion sieht, auf den anderen Spiegel übertragen. Sie müssen eine modifizierte Transformationsmatrix erstellen, um die Beziehungen zwischen den beiden Portalen zu berücksichtigen. Lesen Sie diesen Artikel über das Abschneiden in der Nähe des Flugzeugs, um den Leistungseinbruch zu verringern . Auf diese Weise können Sie nur das rendern, was über das Portal angezeigt werden muss.

Ich kann ein detaillierteres Tutorial mit Bildern und Quellen erstellen, sobald ich herausgefunden habe, wie die Kameras für einen FPS-Teleport richtig gemischt werden. Im Moment bin ich zu erschöpft und beschäftigt, um ein vollständiges Tutorial zu schreiben. Dies sollte ausreichen, da Sie den größten Teil des benötigten Codes erhalten.

Timothy Williams
quelle
Könnten Sie einen Link zum Repo posten?
Roma Fedor