2011-02-16

Rendering di un carillon con POV-Ray - 2 - Prima realizzazione

Con questo post inizia la definizione del cilindro che con il suo movimento causa la vibrazione delle lamelle, a parte la fase iniziale di definizione dell'ambiente, dai colori molto discutibili ed illuminazione altrettanto discutibile, iniziano le definizioni necessarie alla realizzazione del cilindro vero e proprio con i denti sporgenti.

#default {
  finish { ambient 0.4 }
}
#include "colors.inc"
#include "textures.inc"
#include "metals.inc"
#include "functions.inc"
#include "transforms.inc"

global_settings { ambient_light <0.99,0.99,0.99> }

sky_sphere {
    pigment {
      gradient y
      color_map {
        [0 color rgb <0.6,0.3,0.5>]
        [1 color rgb <0.6,0.3,0.0>]
      }
      scale 2
      translate -1
    }
  }

camera {
    location <-2, 3.5, -5>
    look_at  <0, 2.4,  -2>

    aperture .2
    focal_point <0,0,0>
    angle 60
}

light_source {
 <200, 100, -100>
 color rgb <0.99,0.99,0.99>
 spotlight radius 450 falloff 180 point_at <0,0,3>
}
light_source {
 <-5, -5, -5>
 color rgb <0.99,0.99,0.99>
 spotlight radius 450 falloff 180 point_at <0,0,3>
}

#declare N_LAMELLE=36; // numero di lamelle che determina anche la larghezza del rullo
#declare RAGGIO_TAMBURO = 2;

// posizionamento dei denti che colpiscono le lamelle
#declare COLPI = array[5][2] {
        { 1, 0 },
        { 7, 1 },
        { 10, 2 },
        { 8, 3 },
        { 6, 4 }
}
#declare POSIZIONI=100; // intervallo di valori per determinare la posizione del dente nella circonferenza del tamburo
#declare GRADI_ROTAZIONE_TAMBURO = 0;
#declare GRADI_PER_POSIZIONE=360/POSIZIONI; // di quanto ruota ogni posizione
#declare N_COLPI=dimension_size(COLPI,1); // numero di denti definiti nell'array
#declare PRISMOTTO = object { prism { linear_sweep linear_spline -1, 1, 3, <-1,0>, <0,-0.3>, <1,0> } scale .1 }
#declare DENTE = object { PRISMOTTO rotate <0,180,0> } // dente che sporge dal tamburo
#declare SVASO = object { PRISMOTTO } // svaso che rientra nel tamburo

#declare SVASI = union { // tutti i denti definiti nell'array
        #declare NDX_COLPO=0;
        #while (NDX_COLPO < N_COLPI)
                #declare POSIZIONE=(COLPI[NDX_COLPO][1]);
                #declare GRADI_POSIZIONE=GRADI_PER_POSIZIONE*POSIZIONE;
                object { SVASO translate <0.2*(COLPI[NDX_COLPO][0]),RAGGIO_TAMBURO,0> rotate }
                #declare NDX_COLPO=NDX_COLPO+1;
        #end
}

#declare DENTI = union { // tutti gli svasi definiti nell'array
        #declare NDX_COLPO=0;
        #while (NDX_COLPO < N_COLPI)
                #declare POSIZIONE=(COLPI[NDX_COLPO][1]);
                #declare GRADI_POSIZIONE=GRADI_PER_POSIZIONE*POSIZIONE;
                object { DENTE translate <0.2*(COLPI[NDX_COLPO][0]),RAGGIO_TAMBURO,0> rotate }
                #declare NDX_COLPO=NDX_COLPO+1;
        #end
}

#declare TAMBURO = union { // somma tra cilindro "svasato" e denti
        difference { // differenza tra cilindro e svasi
                cylinder { <0,0,0>, , RAGGIO_TAMBURO }
                object { SVASI }
        }                                                                   
        object { DENTI }                                                    
        rotate <0 -  GRADI_ROTAZIONE_TAMBURO,0,0> 
}

#declare CARILLON = union {
 object { TAMBURO }
 texture { T_Copper_5A }
}

object {
 CARILLON
 translate <-1,2,1.5>
 scale 1
}

Eseguendo il rendering con il comando:
povray +W400 +H300 carillon1.pov
si ottiene l'immagine presente all'inizio del post

Nessun commento:

Posta un commento