Divide tus objetos en cubos de 1 × 1 × 1, asignando a cada cubo una imagen de las partes del objeto que estarían físicamente en ese cubo.
Esto es fácil si comienza con objetos 3D reales y los reduce a 2D. Si está dibujando sus objetos directamente en 2D (o si tiene arte existente que necesita dividir), se requiere un esfuerzo manual. Afortunadamente, la división no necesita ser exacta, siempre y cuando se asegure de que ninguna de las partes de la imagen asignadas a un cubo dado se derrame fuera del área hexagonal que cubriría un cubo sólido de 1 × 1 × 1 en esa posición. Puede ser útil hacer una superposición que muestre los contornos de cada cubo como una capa adicional en su editor de gráficos.
Luego, solo asigna una prioridad a cada cubo como p = x + y + z (suponiendo que las tres coordenadas aumenten hacia la cámara) y renderiza los cubos en orden ascendente por prioridad.
Aquí hay un ejemplo rápido basado en esta imagen de Wikimedia Commons (por Phasmatinox / Allefant , usado bajo la licencia CC-By-SA 3.0 ):
La cómoda de la imagen ocupa dos fichas, y he dibujado los límites de esas fichas (los hexágonos rojos) encima. Las partes de la imagen que se encuentran dentro de cada hexágono deben asignarse al mosaico correspondiente; la parte donde se superponen los hexágonos se puede asignar a cualquiera de los mosaicos (o incluso a ambos, si lo desea), ya que la elección no afectará el resultado final.
Tenga en cuenta que es posible que necesite elaborar este algoritmo simple si puede tener varios objetos en una baldosa, paredes / pisos entre baldosas u objetos (como personas) que se mueven suavemente entre baldosas. Las paredes y los pisos son bastante simples de manejar: se pueden dibujar en cualquier punto después del contenido del mosaico que están delante (desde el punto de vista de la cámara) y antes del mosaico que están detrás. Esta también es una regla práctica útil para los objetos que se mueven entre mosaicos; trátelos como si fuera un muro entre esos azulejos.
En cuanto a los objetos múltiples en un mosaico, a veces son bastante simples: por ejemplo, si tuviera un libro sobre el cofre en la imagen, obviamente debería dibujarse después de la superficie en la que se encuentra. Sin embargo, las cosas pueden volverse más complicadas si, por ejemplo, tienes objetos en los que las personas pueden sentarse. Por ejemplo, si una persona estaba sentada en un banco, de espaldas a la cámara, entonces el cuerpo de la persona debe dibujarse después del banco, pero sus piernas (que están detrás del banco de la cámara) deben dibujarse antes. Una solución, en este caso, sería dividir las piernas de una persona sentada en un componente separado con su propia posición (ya sea en el mosaico adyacente o entre los mosaicos).