PABEOL escribió:Mi mente ultrapotente acaba de calcular que cada cubo son seis polígonos.
No tengo ni idea de cuántos cubos hay en la demo "de Minecraft" de Tiny3D, pero yo no le echaría más de 1000 en lo que se ve.
¿No serían eso 6000 polígonos? A ver si alguien puede explicar dónde está la magia.
En los motores 3d hay diferentes niveles de discriminación de polígonos. En las consolas de esta época convertir los vértices de 3d a 2d y luego pintarlos era un proceso muy costoso así que se intentaba discriminar lo máximo posible cualquier de esas fases.
Se solía discriminar en este orden:
1) Estructuras de datos espaciales: seguro que por ejemplo has oído hablar alguna vez de BSP, que lo usaban los juegos de ID. En la demo de Tiny utiliza BVH. Todos esos nombrajos son maneras diferentes de organizar el espacio. Imagínate el mapa de “Hyrule Field“ de OOT visto desde arriba, y tú decides dividir todo el mapa en un cuadrante de 8x8, si estás en la mitad del mapa mirando al norte, pues por ejemplo puedes descartar la mitad del mapa (todos los cuadrantes que están el sur). De esa manera no has tenido que ir mirando cada polígono de cada cuadrante. Solo con saber que no se veía el cuadrante ya te vale para descartar todo lo que tenía asociado.
BVH, BSP o los Octrees dividen el espacio de otra forma, pero la función a la hora de renderizar es más o menos la misma (descartar muchos polígonos a la vez).
2) Frustum culling: Esto es básicamente descartar lo que está fuera del campo de vista de la cámara en 3d. En el ejemplo anterior si estabas mirando al norte es posible que algún cuadrante de los del norte que estuviese por los lados, quedase fuera del campo de vista de la cámara y también se puede descartar. La cámara tiene una distancia de lejos y otra de cerca, así que el Frustum Culling también puede descartar polígonos que estén más lejos que X si así lo desean. El Frustum Culling también se puede usar para descartar bloques (cuadrantes en el ejemplo de OOT) del paso anterior.
3) Backface culling y Screen clipping: Backface culling es descartar los polígonos que no están mirando a la cámara y screen clipping es descartar los que están fuera del rectángulo 2d de la pantalla (es como el frustum culling pero ya en 2d)
Lo que se suele contar como polígonos renderizados en un juego es los que quedan después del 3) que son los que se acaban mostrando en pantalla.
En la demo de Tiny te está mostrando los que quedan después de 1), por eso te puede dar la impresión de que salen más de los que hay luego en pantalla. Además, hiciste bien los cálculos de cuantas caras tiene un cubo, pero como n64 solo trabaja con triángulos cada cara la tienes que dividir por 2, ósea cada cubo son 12 triángulos.