// Last edited on DATE TIME by USER
// Processed by remove-cam-lights

background{ color rgb < 0.75, 0.80, 0.85 > }

#declare tx_preto =
  texture{
    pigment{ color rgb < 0.18, 0.09, 0.01> }
    finish{ diffuse 0.9 ambient 0.5 specular 1.0 roughness 0.01 }
  }

#declare tx_branco =
  texture{
    pigment{ color rgb < 0.23, 0.14, 0.05> }
    finish{ diffuse 0.9 ambient 0.9 specular 1.0 roughness 0.01 }
  }

#declare tx_branco_main =
  texture{
    pigment{ color rgb < 0.40, 0.30, 0.15> }
    finish{ diffuse 0.9 ambient 0.9 specular 1.0 roughness 0.01 }
  }

#declare raio_tunel = 0.500;

#declare camara =
        union {
                box{
                        < -1.20, -1.20, -raio_tunel >,
                        < +1.20, +1.20, +0.00 >
                }
                box{
                        < -1.10, -1.10, +0.00 >,
                        < +1.10, +1.10, +1.00 >
                }
                box{
                        < -1.15, -1.15, +0.70 >,
                        < +1.15, +1.15, +1.30 >
                }
                box{
                        < -1.00, -1.00, +1.00 >,
                        < +1.00, +1.00, +2.00 >
                }
                difference {
                        sphere{
                                < 0, 0, +1.70 >,
                                1.00
                        }
                        box{
                                < -1.00, -1.00, 0.00 >,
                                < +1.00, +1.00, +2.00 >
                        }
                }
        }

#include "eixos.inc"

#macro mina (N_cam, M_tun)
        union {
                #declare roleta1 = seed(15);
                #declare centro_cam = array[N_cam];
                #declare i = 0;

                #while ( i < N_cam )
                        #declare centro_cam[i] = < 500*rand(roleta1), 500*rand(roleta1), 200*rand(roleta1)>;
                        object { camara translate centro_cam[i] texture{ tx_preto } }
                        #declare i = i+1;
                #end
                #declare i = 0;

                #while ( i < M_tun )
                        #declare cam1 = int(N_cam*rand(roleta1));
                        #declare cam2 = int(N_cam*rand(roleta1));
                        #while (cam1 = cam2 & N_cam > 1)
                                #declare cam2 = int(N_cam*rand(roleta1));
                                #end
                        object { cylinder{ centro_cam[cam1], centro_cam[cam2], raio_tunel } texture{ tx_branco } }
                        #declare i = i+1;
                #end

                #declare cam = int(N_cam*rand(roleta1));
                object { cylinder{ centro_cam[cam], centro_cam[cam]+<0.00 , 0.00, +500.00>, raio_tunel*1.5 } texture{ tx_branco_main } }
        }
#end

object{ mina(50, 50) }

#include "camlight.inc"
#declare centro_cena = < 500.00, 500.00, 200.00 >;
#declare raio_cena = 250.0;
#declare dir_camera = < 14.00, 14.00, 4.00 >;
#declare dist_camera = 5*raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)