¿Cómo hacer la eliminación de caras en un mundo de cubos unitarios a la Minecraft?

Nota IMPORTANTE Esta pregunta NO se trata de la eliminación de geometría (eliminación de frustrum, eliminación de la cara posterior, eliminación de oclusión o cualquiera de sus amigos). Esta pregunta se trata de la geometríaeliminació en el momento de la configuración, mucho antes de comenzar a seleccionar y procesar.

En un mundo de cubos unitarios a la MineCraft), estoy tratando de encontrar algoritmos sobre cómo eliminar de mi lista de caras de geometría que no se pueden ver desde ningún ángulo, sin importar dónde se encuentre la cámara.

Por ejemplo, imagine 2 cuadrados:

+----+      +----+
|    |      |    |
|    |      |    |
+----+      +----+

claramente hay 8 lados visibles (4 en cada cuadrado). Ahora muevo los cuadrados juntos, vis:

+----+----+
|         |
|         |
+----+----+

En lugar de tener 8 lados, ¡ahora solo tengo 6! Los dos que se tocan en el medio no se pueden ver, sin importar dónde se coloque la cámara, ni a qué ángulo se enfrenta. (Los cuadrados tienen una textura diferente, por lo que no podemos llamarlo 4 lados).

(Lo mismo funciona en 3D con cubos, pero 12 caras (6 por cubo) se convierten en 10 a medida que se eliminan los 2 toques).

Mi pregunta es: ¿cuáles son algunos algoritmos que me ayudan a reconocer estas caras ocultas? (¡Estoy feliz de hacer mi propio Google, pero ni siquiera sé cómo se llama!) En particular, estoy buscando algo que maneje los puntos huecos en el medio, puntos que PODRÍAN ser visibles si estuvieras allí, pero, como están rodeados de geometría, no puedes verlos.

Por ejemplo

+----+----+----+----+
|                   |
|                   |
+    +----+         +
|    |    |         |
|    | A  |         |
+    +----+         +
|                   |
|                   |
+----+----+----+----+

n este caso, uno podría pensar que hay 18 lados "visibles" pero, como sabemos con certeza que la cámara está fuera de la geometría, los 4 lados en el cuadrado "A" no son visibles.

Para complicar aún más las cosas, espero encontrar un algoritmo que pueda realizar actualizaciones rápidas si se agrega o elimina un bloque (nuevamente,a la Minecraft.

¡Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta