375 lines
8.9 KiB
POVRay
375 lines
8.9 KiB
POVRay
// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
|
|
// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
|
|
// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
|
|
|
|
// Persistence of Vision Ray Tracer Scene Description File
|
|
// File: grenadine.pov
|
|
// Desc: Glass with liquid
|
|
// Date: 1999/06/04
|
|
// Auth: Ingo Janssen
|
|
// Updated: 2013/02/15 for 3.7
|
|
//
|
|
// -w320 -h240
|
|
// -w800 -h600 +a0.3
|
|
|
|
#version 3.7;
|
|
|
|
#include "glass.inc"
|
|
|
|
|
|
global_settings {
|
|
assumed_gamma 1.0
|
|
max_trace_level 5
|
|
photons {
|
|
spacing 0.01 // higher value 'lower' quality, faster parsing.
|
|
autostop 0
|
|
jitter 0.5
|
|
max_trace_level 15
|
|
}
|
|
}
|
|
|
|
light_source {
|
|
<500, 550, -100>
|
|
rgb <1, 1, 1>
|
|
spotlight
|
|
radius 1
|
|
falloff 1.1
|
|
tightness 1
|
|
point_at <-19,-4,7>
|
|
}
|
|
|
|
camera {
|
|
location <-0.5, 2.5, -7.0>
|
|
right x*image_width/image_height // keep proportions with any aspect ratio
|
|
look_at <-0.5, 0.5, 0.0>
|
|
}
|
|
|
|
sky_sphere {
|
|
pigment {
|
|
gradient y
|
|
color_map { [0.0 rgb <0.2,0,1>] [1.0 color rgb 1] }
|
|
}
|
|
}
|
|
|
|
union { //plane & background
|
|
difference {
|
|
box {<-20,-1,0>,<20,13,13>}
|
|
cylinder{<-21,13,0>,<21,13,0>,13}
|
|
}
|
|
plane {y, 0}
|
|
translate <0,-1.9999,7>
|
|
pigment {rgb .5}
|
|
finish {diffuse .5 ambient 0}
|
|
}
|
|
|
|
//====== The Lemon ======
|
|
#declare SS=seed(7);
|
|
#declare R_uit= 3;
|
|
#declare R_in=2.9;
|
|
|
|
#declare Ring = difference {
|
|
cylinder {< 0 , 0, 0>, <1 , 0, 0>, R_uit}
|
|
cylinder {<-0.1, 0, 0>, <1.1, 0, 0>, R_in}
|
|
}
|
|
|
|
#declare R2_uit= 0.8;
|
|
#declare R2_in=0.7;
|
|
|
|
#declare Ring2 = difference {
|
|
cylinder {< 0 , 0, 0>, < 1 , 0, 0>, R2_uit}
|
|
cylinder {<-0.1, 0, 0>, < 1.1, 0, 0>, R2_in}
|
|
}
|
|
|
|
#declare LemonOut= intersection {
|
|
merge {
|
|
difference {
|
|
merge {
|
|
object {Ring translate < 0.01, 0, (R_uit+R_in)/2>}
|
|
object {Ring translate <-1.01, 0,-(R_uit+R_in)/2>}
|
|
}
|
|
box {<-1.1, 0.1,-1>, <1.1, 2, 1>}
|
|
}
|
|
difference {
|
|
box {<-1, 0,-(R_uit-R_in)/2>, < 1, 1.1, (R_uit-R_in)/2>}
|
|
box {
|
|
<-2.5, 0,-1>, <2.5, 2, 1>
|
|
translate <0, 0.5, 0>
|
|
rotate <0, 0,-20>
|
|
}
|
|
}
|
|
difference{
|
|
object {
|
|
Ring2
|
|
translate <-0.5, 0, 0>
|
|
scale <2.2, 1, 1>
|
|
translate < 0, 0, (R2_uit+R2_in)/2>
|
|
}
|
|
box {<-2.1, 0,-1>,<2.1,-3, 1>}
|
|
translate <0, 0.499999, 0>
|
|
rotate <0, 0,-20>
|
|
}
|
|
}
|
|
merge {
|
|
cylinder {<0, 0,-0.5>, <0, 0, 0.5>, 0.8}
|
|
torus {0.8, 0.2 scale <1, 1.1, 1> rotate <90, 0, 0>}
|
|
}
|
|
}
|
|
|
|
#declare BS1= array[24] {
|
|
< 24.8, 49.8>, < 13.0, 31.4>, < 4.0, 8.8>, < 0.1, 9.4>
|
|
< 0.1, 9.4>, <- 7.4, 10.7>, <-12.5, 30.4>, <-21.1, 49.8>
|
|
<-21.1, 49.8>, <-33.3, 76.9>, <-39.8, 87.0>, <-29.2, 91.4>
|
|
<-29.2, 91.4>, <-20.0, 95.3>, <-10.0, 95.9>, < 0.0, 95.9>
|
|
< 0.0, 95.9>, < 10.0, 95.9>, < 21.3, 95.8>, < 30.0, 90.7>
|
|
< 30.0, 90.7>, < 41.3, 84.0>, < 45.1, 86.5>, < 24.8, 49.8>
|
|
}
|
|
|
|
#declare BS2= array[24] {
|
|
< 24.8, 55.8>, < 13.0, 31.4>, < 4.0, 8.8>, < 0.1, 15.0>
|
|
< 0.1, 15.0>, <- 7.4, 10.7>, <-12.5, 30.4>, <-21.1, 49.8>
|
|
<-21.1, 49.8>, <-33.3, 76.9>, <-39.8, 87.0>, <-29.2, 91.4>
|
|
<-29.2, 91.4>, <-20.0, 95.3>, <-10.0, 95.9>, < 0.0, 95.9>
|
|
< 0.0, 95.9>, < 10.0, 95.9>, < 21.3, 95.8>, < 30.0, 90.7>
|
|
< 30.0, 90.7>, < 41.3, 84.0>, < 45.1, 86.5>, < 24.8, 55.8>
|
|
}
|
|
|
|
|
|
#declare BS3= array[24] {
|
|
< 23.0, 49.8>, < 13.0, 31.4>, < 4.0, 8.8>, < 0.1, 6.0>
|
|
< 0.1, 6.0>, <- 7.4, 10.7>, <-12.5, 30.4>, <-21.1, 49.8>
|
|
<-21.1, 49.8>, <-33.3, 76.9>, <-39.8, 87.0>, <-29.2, 91.4>
|
|
<-29.2, 91.4>, <-20.0, 95.3>, <-10.0, 95.9>, < 0.0, 95.9>
|
|
< 0.0, 95.9>, < 10.0, 95.9>, < 21.3, 95.8>, < 30.0, 90.7>
|
|
< 30.0, 90.7>, < 41.3, 84.0>, < 45.1, 85.0>, < 23.0, 49.8>
|
|
}
|
|
|
|
|
|
#declare BS4= array[24] {
|
|
< 24.8, 49.8>, < 13.0, 31.4>, < 4.0, 11.8>, < 0.1, 9.0>
|
|
< 0.1, 9.0>, <- 7.4, 13.7>, <-12.5, 30.4>, <-21.1, 49.8>
|
|
<-21.1, 49.8>, <-33.3, 76.9>, <-39.8, 87.0>, <-21.2, 91.4>
|
|
<-21.2, 91.4>, <-20.0, 95.3>, <-10.0, 95.9>, < 0.0, 95.9>
|
|
< 0.0, 95.9>, < 10.0, 95.9>, < 21.3, 95.8>, < 30.0, 90.7>
|
|
< 30.0, 90.7>, < 41.3, 84.0>, < 45.1, 86.5>, < 24.8, 49.8>
|
|
}
|
|
|
|
#declare J=0;
|
|
#declare Part1= prism {
|
|
bezier_spline
|
|
-0.5, 0.5, 24,
|
|
#while (J<24)
|
|
#declare P= BS1[J];
|
|
P
|
|
#declare J=J+1;
|
|
#end
|
|
scale < 0.0095, 1, 0.0095>
|
|
}
|
|
|
|
#declare J=0;
|
|
#declare Part2= prism {
|
|
bezier_spline
|
|
-0.5, 0.5, 24,
|
|
#while (J<24)
|
|
#declare P= BS2[J];
|
|
P
|
|
#declare J=J+1;
|
|
#end
|
|
scale < 0.0095, 1, 0.0095>
|
|
}
|
|
|
|
#declare J=0;
|
|
#declare Part3= prism {
|
|
bezier_spline
|
|
-0.5, 0.5, 24,
|
|
#while (J<24)
|
|
#declare P= BS3[J];
|
|
P
|
|
#declare J=J+1;
|
|
#end
|
|
scale < 0.0095, 1, 0.0095>
|
|
}
|
|
|
|
#declare J=0;
|
|
#declare Part4= prism {
|
|
bezier_spline
|
|
-0.5, 0.5, 24,
|
|
#while (J<24)
|
|
#declare P= BS4[J];
|
|
P
|
|
#declare J=J+1;
|
|
#end
|
|
scale < 0.0095, 1, 0.0095>
|
|
}
|
|
|
|
#declare LemonTex= texture {
|
|
pigment {
|
|
granite
|
|
scale <0.2,5,1>
|
|
colour_map {
|
|
[0.4 rgbf <1,0.65,0,0.4>]
|
|
[0.6 rgbf <1,0.8,0,0.4>]
|
|
[0.7 rgbf <1,0.9,0,0.6>]
|
|
[0.9 rgb <1,0.7,0>*1.5 ]
|
|
}
|
|
}
|
|
normal {granite -0.1 turbulence 0.3 scale <0.2,5,1>}
|
|
finish {
|
|
specular .9
|
|
roughness 0.01
|
|
}
|
|
}
|
|
|
|
#declare Parts= union {
|
|
object {Part1 }
|
|
object {Part2 rotate <0, 360/7 ,0>}
|
|
object {Part3 rotate <0,2*(360/7),0>}
|
|
object {Part4 rotate <0,3*(360/7),0>}
|
|
object {Part1 rotate <0,4*(360/7),0>}
|
|
object {Part2 rotate <0,5*(360/7),0>}
|
|
object {Part3 rotate <0,6*(360/7),0>}
|
|
rotate <90,0,0>
|
|
}
|
|
|
|
#declare LemonSlice = union {
|
|
intersection {
|
|
object {LemonOut}
|
|
object {Part1 rotate <90,0,0>}
|
|
texture {LemonTex rotate <90,0,0> translate rand(SS)*5}
|
|
}
|
|
intersection {
|
|
object {LemonOut}
|
|
object {Part2 rotate <0,360/7,0> rotate <90,0,0>}
|
|
texture {LemonTex rotate <0,360/7,0> rotate <90,0,0> translate rand(SS)*5}
|
|
}
|
|
intersection {
|
|
object {LemonOut}
|
|
object {Part3 rotate <0,2*(360/7),0> rotate <90,0,0>}
|
|
texture {LemonTex rotate <0,2*(360/7),0> rotate <90,0,0> translate rand(SS)*5}
|
|
}
|
|
intersection {
|
|
object {LemonOut}
|
|
object {Part4 rotate <0,3*(360/7),0> rotate <90,0,0>}
|
|
texture {LemonTex rotate <0,3*(360/7),0> rotate <90,0,0> translate rand(SS)*5}
|
|
}
|
|
intersection {
|
|
object {LemonOut}
|
|
object {Part1 rotate <0,4*(360/7),0> rotate <90,0,0>}
|
|
texture {LemonTex rotate <0,4*(360/7),0> rotate <90,0,0> translate rand(SS)*5}
|
|
}
|
|
intersection {
|
|
object {LemonOut}
|
|
object {Part2 rotate <0,5*(360/7),0> rotate <90,0,0>}
|
|
texture {LemonTex rotate <0,5*(360/7),0> rotate <90,0,0> translate rand(SS)*5}
|
|
}
|
|
intersection {
|
|
object {LemonOut}
|
|
object {Part3 rotate <0,6*(360/7),0> rotate <90,0,0>}
|
|
texture {LemonTex rotate <0,6*(360/7),0> rotate <90,0,0> translate rand(SS)*5}
|
|
}
|
|
|
|
difference { //outside
|
|
object {LemonOut}
|
|
object {Parts}
|
|
texture {
|
|
cylindrical
|
|
rotate <90,0,0>
|
|
texture_map {
|
|
[0.05, pigment {rgb <1,0.8,0>}
|
|
normal {granite .1 scale 0.1}
|
|
finish {phong 0.8 phong_size 20}
|
|
]
|
|
[0.06, pigment {rgb <1,0.9,0.7>}
|
|
normal {granite .07 scale 0.5}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//====== The Glass ======
|
|
|
|
#declare Ri=0.95;
|
|
|
|
#declare Glass= merge {
|
|
difference {
|
|
cylinder { -y*2,y*2,1 }
|
|
sphere {-y*0.8,Ri}
|
|
cylinder { -y*0.8,y*2.01,Ri}
|
|
sphere {-y*1.9,0.1}
|
|
}
|
|
torus {0.975, 0.026 translate <0,2,0>}
|
|
// texture {T_Glass1}
|
|
// interior {ior 1.5}
|
|
// converted to material 26Sep2008 (jh)
|
|
material {
|
|
texture {
|
|
pigment {color rgbf<1.0, 1.0, 1.0, 0.7>}
|
|
finish {F_Glass1}
|
|
}
|
|
interior {ior 1.5}
|
|
}
|
|
}
|
|
|
|
|
|
//====== The bubbles and the juce ======
|
|
|
|
#declare Bubble= difference {
|
|
sphere {0,0.1}
|
|
sphere {0,0.09999999}
|
|
}
|
|
|
|
#declare S= seed(7);
|
|
#declare I=0;
|
|
#declare Bubbles= intersection {
|
|
union {
|
|
#while (I<60)
|
|
object {
|
|
Bubble
|
|
scale rand(S)
|
|
scale <1,0.7,1>
|
|
translate <1,0.6,0>
|
|
rotate <0,360*rand(S),0>
|
|
}
|
|
object {
|
|
Bubble
|
|
scale rand(S)*0.5
|
|
translate <rand(S),0.58,0>
|
|
rotate <0,360*rand(S),0>
|
|
}
|
|
#declare I=I+1;
|
|
#end //while
|
|
}
|
|
cylinder{y*0.5,y*0.85,Ri+0.00000001}
|
|
}
|
|
|
|
#declare Liquid= merge {
|
|
sphere {-y*0.8,Ri+0.00000001}
|
|
cylinder {-y*0.8,y*0.6,Ri+0.00000001}
|
|
object {Bubbles}
|
|
pigment {rgbf <0.9, 0.1, 0.2, 0.95>}
|
|
finish {reflection 0.3}
|
|
interior{ior 1.2}
|
|
}
|
|
|
|
//====== The glass and juice =====
|
|
union {
|
|
object {Glass}
|
|
object {Liquid}
|
|
photons {
|
|
target
|
|
refraction on
|
|
reflection on
|
|
collect off
|
|
}
|
|
}
|
|
|
|
object {
|
|
LemonSlice
|
|
scale <0.8,0.8,1>
|
|
translate <-0.99,0,0>
|
|
rotate <0,-30,0>
|
|
translate <0,2,0>
|
|
photons {
|
|
pass_through
|
|
}
|
|
} |