Come creare effetti di portale veloci e di alta qualità?


9

EDIT: Quindi ho ottenuto l'effetto visivo del portale che funziona senza alcun impatto sulle prestazioni, e ho impostato la fisica degli oggetti con corpi rigidi che si muovono attraverso i portali senza soluzione di continuità e oggetti con controller dei personaggi che si muovono attraverso di esso senza soluzione di continuità. L'unica cosa che sto cercando di capire ora è fondere due viste della telecamera per ottenere l'effetto di transizione in prima persona corretto. Qualche idea su come mescolerei quei due? Sto pensando a qualcosa usando uno shader solo in profondità, o il retto del viewport normalizzato. Il mio problema principale è calcolarlo in tempo reale e con gli angoli.

Quindi ho lavorato sulla creazione di un effetto portale in Unity3D. Ovviamente ho preso Valve's Portal come una grande influenza per la programmazione di questo. Attualmente sto semplicemente usando la texture di rendering di una telecamera per ottenere l'effetto grafico e poi un po 'di codice per fare il resto. Il problema è di 2048x2048 e sembra di alta qualità come quello di Portal, ma causa una grave perdita di FPS. Per risolvere questo problema, dovrei ridurre la qualità della trama o il numero di volte che aggiorno la trama.

Valve ha realizzato un effetto portale di alta qualità senza causare una perdita di frame rate elevata. Come posso fare lo stesso? Qualcuno ha buone idee per il rendering su una trama ad alta risoluzione senza causare la perdita di frame?

Sto pensando di creare il mio codice per il rendering in trame piuttosto che utilizzare il sistema integrato di Unity, è fattibile ma sarebbe sicuramente una seccatura. Quindi qualsiasi pensiero, idea o suggerimento sono molto apprezzati.


3
Non riesco a trovare il riferimento, ma ricordo che qualcuno ha detto che Portal non ha usato il rendering per la trama.
msell

1
Dai un'occhiata a Pseudo Form , un gioco in stile Portal (la fonte è nel download principale). Esistono anche altre "implementazioni del portale" sul Web, ma penso che questa sia la più conosciuta. Inoltre, gioca a Portal con i commenti degli sviluppatori su. In alcuni di essi, parlano delle sfide legate all'implementazione dei portali.
Vasco Correia,

7
Non riesco a capire perché avresti bisogno di una trama 2028x2048 per rendere nitido un portale a meno di 1080p. Non dovresti assolutamente andare oltre la risoluzione del display che stai usando per il tuo gioco in generale. Vorrei arrivare al punto di dire che dovresti capire le dimensioni sullo schermo del portale e usarle per selezionare una trama di rendering delle dimensioni appropriate (rendendola così molto efficiente quando lontana, e "più pesante" quando il portale ottiene più schermo -spazio.
Stig-Rune Skansgård

1
Per l'effetto visivo quale approccio hai adottato? Hai capito come rendere solo ciò che era visibile attraverso il portale?
jhocking

1
Dovresti mantenere la domanda originale com'era e fare una nuova domanda sul nuovo problema.
msell

Risposte:


5

Dopo ore di ricerca e programmazione ho capito come ottenere correttamente l'effetto visivo per questo. Se desideri semplicemente acquistare un sistema di portale che funziona per gli oggetti visivi e quasi tutto il resto, controlla il pacchetto Unity di Portalizer.

Programma in C # e quel pacchetto è in JS, ma la logica dietro è incredibilmente utile e ben pensata. In generale ho seguito il suo pensiero logico, con alcune modifiche per il mio gioco e un controller in prima persona.

In sostanza, ciò che fai è utilizzare una versione modificata di Questo shader / script per l'acqua. Avere due specchi nella scena e fare in modo che una telecamera renda ciò che vede in ogni riflesso all'altro specchio. Dovrai creare una matrice di trasformazione modificata per tenere conto delle relazioni tra i due portali. Per aiutare a ridurre il colpo prestazionale, leggi questo articolo sul ritaglio quasi aereo. Questo ti aiuterà a rendere solo ciò che deve essere visto attraverso il portale.

Potrei creare un tutorial più dettagliato con immagini e sorgente una volta che avrò capito come fondere correttamente le telecamere per un teletrasporto FPS. In questo momento sono troppo sfinito e impegnato per scrivere un tutorial completo e questo dovrebbe bastare perché ti dà la maggior parte del codice necessario.


Potresti pubblicare un link al repository?
Roma Fedor
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.