// PoVRay 3.7 Scene File " ... .pov" // author: ... // date: ... //-------------------------------------------------------------------------- #version 3.7; #version 3.8; #include "objects.inc" global_settings{ assumed_gamma 1.0 } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // camera ------------------------------------------------------------------ #declare Camera_0 = camera {/*ultra_wide_angle*/ angle 65 // front view location <0.0 , 2.0 ,-5.0> right x*image_width/image_height look_at <0.0 , 1.0 , 0.0>} #declare Camera_1 = camera {/*ultra_wide_angle*/ angle 90 // diagonal view location <2.0 , 2.5 ,-3.0> right x*image_width/image_height look_at <0.0 , 1.0 , 0.0>} #declare Camera_2 = camera {/*ultra_wide_angle*/ angle 90 // right side view location <3.0 , 1.0 , 0.0> right x*image_width/image_height look_at <0.0 , 1.0 , 0.0>} #declare Camera_3 = camera {/*ultra_wide_angle*/ angle 90 // top view location <0.0 , 3.0 ,-0.001> right x*image_width/image_height look_at <0.0 , 1.0 , 0.0>} camera{Camera_0} // sun --------------------------------------------------------------------- light_source{<-1500,1000,-500> color White} // sky --------------------------------------------------------------------- sky_sphere { pigment { gradient <0,1,0> color_map { [0.00 rgb <1.0,1.0,1.0>] [0.30 rgb <0.0,0.1,1.0>] [0.70 rgb <0.0,0.1,1.0>] [1.00 rgb <1.0,1.0,1.0>] } scale 2 } // end of pigment } //end of skysphere // fog --------------------------------------------------------------------- fog{fog_type 2 distance 50 color White fog_offset 0.1 fog_alt 2.0 turbulence 0.8} // ground ------------------------------------------------------------------ plane{ <0,1,0>, 0 texture{ pigment{ color rgb <0.825,0.57,0.35>} normal { bumps 0.75 scale 0.025 } finish { phong 0.1 } } // end of texture } // end of plane //-------------------------------------------------------------------------- //---------------------------- utility ------------------------------------- describe(ObjectItem,) describe(ObjectPhotons,) #declare object_photons = new(ObjectPhotons,, dictionary {.target_ : 1, .refraction_ : on, .reflection_ : on, .collect_ : off, .pass_through_ : no}) dump(object_photons,) describe(ObjectRadiosity,) #declare object_radiosity = new(ObjectRadiosity,, dictionary {.importance_ : 0.5}) dump(object_radiosity,) describe(ObjectModifiers,) #declare om = new(ObjectModifiers,,) dump(om,) #declare object_modifiers = new ( ObjectModifiers,, dictionary { .texture_ : pigment {White}, .has_interior_texture : true, .interior_texture_ : texture{pigment{Yellow}}, } ) dump(object_modifiers,) describe(Object,) //#local my_object = new(Object, 0, object_modifiers) // Method 'spawn()' is virtual. //---------------------------- objects in scene ---------------------------- describe(Sphere,) #declare my_sphere = new ( Sphere,, dictionary {.center : 1.2*x, .radius_ : 1} ) setmods ( my_sphere, dictionary { .texture_ : pigment {Red}, } ) setfinish(my_sphere, finish {specular 0.8 roughness 0.002}) setnormal(my_sphere, normal {crackle 2 scale 0.3}) dump(my_sphere,) spawn(my_sphere) dump(my_sphere,) #declare my_sphere_copy = new(Sphere, 1, my_sphere) settransform(my_sphere_copy, transform{scale 0.5 translate -2*(x+z)}) dump(my_sphere_copy,) spawn(my_sphere_copy) #declare my_sphere2 = new(Sphere, 1, my_sphere) set(my_sphere2, my_sphere2.center, -1.2*x - 0.4*z) settexture ( my_sphere2, texture { pigment{Yellow} finish { specular 0.8 roughness 0.005 } normal {granite 0.6 scale 0.3} } ) setnoshadow(my_sphere2) dump(my_sphere2,) spawn(my_sphere2) #declare my_sphere3 = new(Sphere, 1, my_sphere) set(my_sphere3, my_sphere3.center, 0) setinteriortexture(my_sphere3, pigment{Magenta}) setclippedby(my_sphere3, box{-0.75, 1}) settexture(my_sphere3, pigment{White}) setpigment(my_sphere3, pigment{Green}) // Overrides previous line settransform(my_sphere3, transform{translate 2*y + 2*z}) setdoubleilluminate(my_sphere3) dump(my_sphere3,) spawn(my_sphere3) #declare my_box = new(Box,, dictionary {.ll : -1, .ur : 1}) setpigment(my_box, pigment{wrinkles}) settransform(my_box, transform{scale 0.6 translate -2*x+y}) dump(my_box,) spawn(my_box) describe(Cylinder,) #declare my_cylinder = new(Cylinder,, dictionary {.base : 0, .cap : y, .radius_ : 0.2}) setpigment(my_cylinder, pigment{Cyan}) settransform(my_cylinder, transform {scale 2 translate 2*x + 1.5*y + z}) dump(my_cylinder,) #declare my_cylinder_instance = spawn(my_cylinder); // If you do not need to keep track of your object's properties, you can do this (as usual in POV-Sdl), // using the language's native and implicit duplication mechanism, i.e. 'copy constructor' : object {my_cylinder_instance scale 1.5} object {my_cylinder_instance pigment {quilted scale 0.3} scale .75 translate -3*x +y -z} #declare my_torus = new(Torus,, dictionary{.major : 1, .minor : 0.2}) setmods(my_torus, dictionary { .pigment_ : pigment{Blue}, .normal_ : normal {leopard -10 scale 0.03}, .finish_ : finish {specular 1 roughness 0.01}, .transform_ : transform{translate -2*z + x + y/2} }) spawn(my_torus) dump(my_torus,) //-------------------------------------------------------------------------- /* */