Me preguntaba cómo crear un espejo dentro de un juego en 3D. Mi sugerencia es / era rastrear rayos, golpear el objeto "espejo" y luego dibujar una imagen de una segunda cámara en el objeto "espejo" que se encuentra en el "punto" espejo de la cámara original usando el lado golpeado del objeto espejo como Espejo plano.
Tendríamos que usar el rayo que viene del centro de la cámara original para determinar el punto donde se encuentra el centro de la visión en el plano del espejo.
graphics-programming
daemonfire300
fuente
fuente
Respuestas:
Si está utilizando OpenGL, la sección 9 de Preguntas frecuentes de OpenGL: Transformaciones cubre exactamente cómo hacerlo. Y no, no implica el trazado de rayos, ya que es comprensiblemente una forma muy ineficiente (pero de alta calidad) de lograr esto.
9.170 ¿Cómo renderizo un espejo?
Esto es esencialmente lo que dice la entrada de preguntas frecuentes, y el código de ejemplo demuestra:
Obviamente hay mucho espacio para la optimización. Al renderizar la escena reflejada, probablemente debería realizar el mayor sacrificio posible, ya que los espejos suelen ser pequeños y el sacrificio fuera de la pantalla predeterminado no se aplicará a la geometría que está en la pantalla pero que no se ve a través del espejo. También puede renderizar solo una versión simplificada de la escena a través del espejo. Para efectos, y para evitar que el usuario note la calidad reducida, puede aplicar un sombreador (p. Ej., Desenfoque, o tal vez brillante / desvaído) cuando realiza su renderizado en espejo.
Me imagino que si usa DirectX, el procedimiento sería muy similar.
fuente