GALERIE    EN COURS    SCENES    MACROS    GUIDE    A PROPOS


Photons



Octhèdre avec quelques photons.

Radiosity_Default

L'objet de base est un octaèdre régulier. Il composé de 8 triangles équilatéraux. C'est l'un des solides de Platon inscriptible dans une sphère. Une fois défini par des triangle{ }, cet octaèdre est dupliqué puis tourné autour des axes x et z.

La carte de photons (photon_map) est sauvegardée sur disque si elle n'existe pas. Lors des prochains rendus, si cette carte existe, elle est rechargée. Le temps de calcul des photons est ainsi supprimé.

La source de lumière émet des photons pour la refraction{} et la reflection{}.


Script :
// --------------------------------------------------------------------------
// http://louisbel.free.fr - e-mail : louisbel @ free.fr
// decembre 2004 - copyright louis bellotto
//
// photons test
// --------------------------------------------------------------------------
#version unofficial MegaPov 1.1;

// --------------------------------------------------------------------------
// --- INCLUDES -------------------------------------------------------------
// --------------------------------------------------------------------------
#include "colors.inc"
#include "myMacros.inc"

#declare displayAxis = true;

#declare usePhotons = false;
#declare photonFileName="photonsMap";

// --------------------------------------------------------------------------
// --- SCENE ----------------------------------------------------------------
// --------------------------------------------------------------------------
global_settings {
  assumed_gamma 1.80
  max_trace_level 10
  #if(usePhotons )
    photons {
      count 20000000
      autostop 0
      jitter 0.40
      radius ,2
      #if(file_exists(photonFileName))
        #debug "\n\nLoading photons map...\n"
        load_file photonFileName
      #else
        #debug "\n\nBuiling photons map...\n"
        save_file photonFileName
      #end
      }
  #end
  }

camera {
  angle 36
  location p2r(60, 18, 20,false)
  look_at < 0, 0, 0 >
  }

light_source {
  < 0, 0, 0 >
  color White*1.50
  #if(usePhotons )
    photons {
      reflection on
      refraction on
      }
  #end
  }

background {
  color White*0
  }

#if (displayAxis)
  drawAxis (10, 0.04)
#end

// --------------------------------------------------------------------------
// --- OBJETS ---------------------------------------------------------------
// --------------------------------------------------------------------------
#declare side = 5.00;

#declare p1 = < +side*0.50, 0.00, +side*0.50 >;
#declare p2 = < -side*0.50, 0.00, +side*0.50 >;
#declare p3 = < -side*0.50, 0.00, -side*0.50 >;
#declare p4 = < +side*0.50, 0.00, -side*0.50 >;
#declare p5 = < 0.00, +side*sqrt(2)*0.50, 0.00 >;
#declare p6 = < 0.00, -side*sqrt(2)*0.50, 0.00 >;

#declare octahedron = union {
  // --- upper part
  triangle { p1, p2, p5 }
  triangle { p2, p3, p5 }
  triangle { p3, p4, p5 }
  triangle { p4, p1, p5 }
  // --- lower part
  triangle { p1, p2, p6 }
  triangle { p2, p3, p6 }
  triangle { p3, p4, p6 }
  triangle { p4, p1, p6 }
  }

union {
  object { octahedron }
  object { octahedron rotate 90*z  }
  object { octahedron rotate 90*x }

  pigment { color White*0.75+Red*0.35 transmit 0.85 }
  finish { ambient 0.0 diffuse 0.80 specular 0.80 roughness 0.005 reflection 0 }
  interior { ior 1.2 }

  #if(usePhotons )
    photons {
      target  1.0
      reflection on
      refraction on
      collect on
      }
  #end
  }

plane {
  y, -side*sqrt(2)*0.50

  pigment {
    color White*0.25
    }
  finish {
    diffuse 0.5
    ambient 0.5
    specular 0.4
    roughness 0.005
    }
  }