Jose María Buades Rubio
Visibilidad enVisibilidad enEscenas ComplejasEscenas Complejas
Entorno de HabitacionesCarretera y Circuitos de carreras
Entorno de HabitacionesEntorno de Habitaciones
• Gran parte del mundo no es visible
• Nos interesa renderizar solo las habitaciones visibles
• El método para determinar que parte es visible ha de ser rapido para poder dedicar el mayor tiempo posible a renderizar
División del espacio BSP-División del espacio BSP-treestrees
• Se divide el espacio 3D mediante planos
Habitaciones VisiblesHabitaciones Visibles
• Las habitaciones visibles se pre-calcula para una mayor eficiencia
Habitaciones Visibles IIHabitaciones Visibles II
• Se considera cada extremo de la puerta como un foco de luz, se determina la zona iluminada, como zona visible
Habitaciones Visibles IIIHabitaciones Visibles III
• Para los objetos estaticos se puede calcular si es visible o no
• Para los objetos en movimiento se calcula en tiempo real
RenderizaciónRenderización
• Para cada zona tenemos una lista (precalculada) con las partes de la escena que hay que renderizar
• Ademas de estos hay que renderizar los objetos dinámicos (cálculado en tiempo real)
Objetos dinámicos. Objetos dinámicos. SolucionesSoluciones
• Renderizarlos todos
• Renderizar aquellos que se encuentren en el triangulo visible
• Renderizar los que se hallan en una habitación visible
• Calcular mediante las zonas visibles que objetos son visibles
CarreteraCarretera
• Deseamos nuevamente no renderizar por completo el circuito, solo el tramo o tramos visibles que aportaran polígonos a la imagen final
• Generalmente podemos restringir el problema a 2D
Solucion ISolucion I
• Renderizar los proximos n tramos
Problemas– Si el tamaño del tramo es variable no
siempre renderizaremos el mismo número de metros y no tendremos la misma distancia de alcance visible
– Al poder darse la vuelta necesita renderizar los proximos y los anteriores tramos
Solucion IISolucion II
• Renderizar los proximos n metros de circuito
Problemas– Al poder darse la vuelta necesita renderizar
el circuito hacia delante y hacia atrás, o detectarlo
– Si tenemos un tramo de circuito lejano pero que pasa justo al lado no se renderiza
Solucion IIISolucion III
• Determinar los tramos visibles mediante un triangulo que marca la zona visible
Problemas– Mayor tiempo computacional si el
número de tramos es muy grande
Solucion IVSolucion IV
• Precalcular para cada tramo que tramos son visibles. Los que se encuentran en un radio r
Problemas– Algoritmo para determinar la visibilidad
laborioso
– El resultado varía según la distancia máxima visible, precalcularlo antes de iniciar el juego
Solucion VSolucion V
• Combinación de las dos anteriores, precalcular y sobre estos tramos ver realmente cuales son visibles
Problemas– Mayor coste de desarrollo, pero
mejores resultados
MejorasMejoras
• Renderizar el tramo a un nivel de detalle en función de la distancia a la que se halla de la cámara