EDITAR: Así que conseguí que el efecto visual del portal funcionara sin ningún impacto en el rendimiento, y tengo la configuración física de objetos con cuerpos rígidos que se mueven a través de portales sin problemas, y objetos con controladores de personajes que se mueven a través de ellos sin problemas. Lo único que estoy tratando de resolver ahora es combinar dos vistas de cámara para obtener el efecto de transición en primera persona adecuado. ¿Alguna idea sobre cómo combinaría esos dos? Estoy pensando en algo usando un sombreador de profundidad solamente, o el rectificador de ventana normalizado. Mi principal problema es calcular eso en tiempo real y con ángulos.
Así que he estado trabajando para crear un efecto de portal en Unity3D. Obviamente, he tomado el Portal de Valve como una gran influencia para programar esto. Actualmente, simplemente estoy usando el rendertexture de una cámara para obtener el efecto gráfico, y luego algo de código para hacer el resto. El problema está en 2048x2048, parece tan de alta calidad como el de Portal, pero causa una gran pérdida de FPS. Para resolver esto, tendría que reducir la calidad de la textura o la cantidad de veces que actualizo la textura.
Valve ha logrado un efecto de portal de alta calidad sin causar una gran pérdida de velocidad de cuadros. ¿Cómo puedo hacer lo mismo? ¿Alguien tiene alguna buena idea para renderizar a una textura de alta resolución sin causar pérdida de fotogramas?
Estoy considerando hacer mi propio código para renderizar a texturas en lugar de usar el sistema incorporado de Unity, es factible pero definitivamente sería una molestia. Por lo tanto, cualquier idea, idea o sugerencia es muy apreciada.
Respuestas:
Después de horas de investigación y programación, descubrí cómo obtener adecuadamente el efecto visual de esto. Si desea comprar un sistema de portal que funcione para imágenes y la mayoría de todo lo que necesita, consulte el Paquete Portalizer Unity.
Programa en C # y ese paquete está en JS, pero la lógica detrás de esto es increíblemente útil y bien pensada. En general seguí su pensamiento lógico, con algunos ajustes para mi juego y un controlador en primera persona.
Esencialmente, lo que debe hacer es utilizar una versión modificada de Este sombreador de agua / script. Tenga dos espejos en la escena y haga que una cámara muestre lo que ve en cada reflejo al otro espejo. Deberá crear una matriz de transformación modificada para tener en cuenta las relaciones entre los dos portales. Para ayudar a disminuir el impacto en el rendimiento, lea este artículo sobre recorte de plano cercano. Esto lo ayudará a representar solo lo que necesita verse a través del portal.
Puedo crear un tutorial más detallado con imágenes y fuente una vez que descubra cómo combinar las cámaras correctamente para un teletransporte FPS. En este momento estoy demasiado agotado y ocupado para escribir un tutorial completo y esto debería ser suficiente porque le brinda la mayor parte del código necesario.
fuente