Comment créer un effet de portail rapide et de haute qualité?


9

EDIT: J'ai donc obtenu l'effet visuel du portail sans aucun impact sur les performances, et j'ai mis en place la physique des objets avec des corps rigides se déplaçant à travers les portails de manière transparente, et des objets avec des contrôleurs de caractères se déplaçant à travers de manière transparente. La seule chose que j'essaie de comprendre maintenant est de mélanger deux vues de caméra pour obtenir le bon effet de transition à la première personne. Des idées sur la façon dont je mélangerais ces deux? Je pense à quelque chose qui utilise un shader de profondeur uniquement, ou le rectangle de visualisation normalisé. Mon principal problème est de calculer cela en temps réel et avec des angles.

J'ai donc travaillé sur la création d'un effet de portail dans Unity3D. Évidemment, j'ai pris le portail de Valve comme une grande influence sur la programmation de cela. Actuellement, j'utilise simplement le rendu d'une caméra pour obtenir l'effet graphique, puis du code pour faire le reste. Le problème est à 2048x2048, il semble aussi de haute qualité que Portal, mais provoque une forte perte de FPS. Pour résoudre ce problème, je devrais soit réduire la qualité de la texture, soit le nombre de fois que je mets à jour la texture.

Valve a accompli un effet de portail de haute qualité sans provoquer de perte de fréquence d'images élevée. Comment puis-je faire de même? Quelqu'un a-t-il de bonnes idées pour rendre une texture haute résolution sans provoquer de perte de trame?

J'envisage de créer mon propre code pour le rendu dans les textures plutôt que d'utiliser le système intégré d'Unity, c'est faisable mais serait certainement un problème. Ainsi, toutes les pensées, idées ou suggestions sont très appréciées.


3
Je ne trouve pas la référence, mais je me souviens que quelqu'un avait dit que Portal n'avait pas utilisé le rendu à la texture pour cela.
msell

1
Découvrez Pseudo Form , un jeu Portal-esque (la source est dans le téléchargement principal). Il existe également d'autres "implémentations de portail" sur le Web, mais je pense que c'est la plus connue. Jouez également à Portal avec les commentaires des développeurs sur. Dans certains d'entre eux, ils parlent des défis de la mise en œuvre des portails.
Vasco Correia

7
Je ne comprends pas pourquoi vous auriez besoin d'une texture 2028x2048 pour rendre un portail rendu à moins de 1080p net. Vous ne devriez définitivement pas avoir à dépasser la résolution d'affichage que vous utilisez pour votre jeu en général. J'irais jusqu'à dire que vous devriez déterminer la taille à l'écran du portail et l'utiliser pour sélectionner une renduertexture de taille appropriée (la rendant ainsi très efficace lorsqu'elle est éloignée et "plus lourde" à mesure que le portail obtient plus d'écran). -espace
Stig-Rune Skansgård

1
Pour l'effet visuel, quelle approche avez-vous adoptée? Avez-vous compris comment afficher uniquement ce qui était visible à travers le portail?
jhocking le

1
Vous devez conserver la question d'origine telle qu'elle était et poser une nouvelle question sur le nouveau problème.
msell

Réponses:


5

Après des heures de recherche et de programmation, j'ai compris comment obtenir correctement l'effet visuel pour cela. Si vous souhaitez simplement acheter un système de portail qui fonctionne pour les visuels et presque tout ce dont vous avez besoin, consultez le package Portalizer Unity.

Je programme en C # et ce paquet est en JS, mais la logique derrière cela est incroyablement utile et bien pensée. En général, j'ai suivi sa pensée logique, avec quelques ajustements pour mon jeu et un contrôleur à la première personne.

Essentiellement, vous utilisez une version modifiée de ce shader / script d'eau. Ayez deux miroirs dans la scène et demandez à une caméra de restituer ce qu'elle voit dans chaque reflet à l'autre miroir. Vous devrez créer une matrice de transformation modifiée pour tenir compte des relations entre les deux portails. Pour aider à réduire les performances, lisez cet article sur l'écrêtage près du plan. Cela vous aidera à afficher uniquement ce qui doit être vu à travers le portail.

Je peux créer un tutoriel plus détaillé avec des images et une source une fois que j'ai compris comment mélanger correctement les caméras pour un téléport FPS. En ce moment, je suis trop épuisé et occupé pour écrire un tutoriel complet et cela devrait suffire car il vous donne la plupart du code nécessaire.


Pourriez-vous publier un lien vers le référentiel?
Roma Fedor
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.