TITLE: "Raindrops Keep Falling" NAME: Daniel Huddleston COUNTRY: United States of America EMAIL: meshleer@geocities.com WEBPAGE: http://www.geocities.com/SoHo/Atrium/1111/index.html TOPIC: Microcosms COPYRIGHT: I SUBMIT TO THE STANDARD RAYTRACING COMPETITION COPYRIGHT. MPGFILE: dh_rain.mpg RENDERER USED: POV-RAY 3.1 TOOLS USED: POV-RAY 3.1, Asymetrix Digital Video Producer 4.0, Micrografx Photo Magic (for poster file), AVI2MPG1 to convert AVI to MPEG-1 (with much image degradation ensing. I'll try to get better next time) CREATION TIME: Hard to say, since I was just puttering around with it for awhile before things started to take shape. DESCRIPTION OF HOW THIS ANIMATION WAS CREATED: Both the city and the raindrops were created using POV-RAY's randomization function. There are 500 raindrops with randomized positions, and slightly randomized translation along the X and Z axes as they fall. As for the buildings, only their heights are randomized. The raindrops fall away from the camera at a constant velocity, and the camera follows them down at a slightly slower velocity. Originally, I'd wanted to end the animation with a cutaway shot of the raindrop just making a tiny, anticlimactic splash, but I was running out of time to figure out how to do that. Instead, I decided to create the rooftop cutaway with a flash of lightning. Finally, I created the scene of the camera descending into the clouds (plus a second or so of black footage), then edited the whole thing together using Asymetrix Digital Video Producer. Since this program only outputs AVI files, I then used AVI2MPG1.EXE to convert the AVI to MPEG. ******************************************************************* The POV code used to generate the frames is as follows: #include "colors.inc" #include "finish.inc" #include "textures.inc" #include "Stones.inc" light_source { <25000, 60000, 10000> color rgb <2, 2, 1.9> } sphere { <650, 1065-1090*clock, 800>, 3 normal { waves .5 phase clock/15 } pigment { rgbt <0, .9, 1, .9>} finish { phong 1 } interior{ior 1.33} } #declare R1 = seed(0) #declare R2 = seed(1) #declare R3 = seed(2) #declare R4 = seed(3) #declare R5 = seed(4) //Raindrops #declare numdrops = 0 #while (numdrops < 500) sphere { <550+200*rand(R1)-(100*(R1)*clock), (900+400*rand(R3))-1090*clock, 700+200*rand(R2)+(100*(R1)*clock)>, 3 pigment { rgbt <0, .9, 1, .9>} normal { waves .5 phase clock/15 } finish { phong 1 } interior{ior 1.33} } #declare numdrops = numdrops+1 #end box { <-10000, 800, -10000> <10000, 850, 10000> pigment { bozo turbulence .5 scale 50 pigment_map { 0 Clear .5 rgbt <1, 1, 1, .25> 1 Clear } } interior { media { density { bozo } } } } box { <-10000, 850, -10000> <10000, 900, 10000> pigment { bozo turbulence .5 scale 50 pigment_map { 0 Clear .5 rgbt <1, 1, 1, .25> 1 Clear } } interior { media { density { bozo } } } } box { <-10000, 900, -10000> <10000, 950, 10000> pigment { bozo turbulence .5 scale 50 pigment_map { 0 Clear .5 rgbt <1, 1, 1, .25> 1 Clear } } interior { media { density { bozo } } } } box { <-10000, 950, -10000> <10000, 1000, 10000> pigment { bozo turbulence .5 scale 50 pigment_map { 0 Clear .5 rgbt <1, 1, 1, .25> 1 Clear } } interior { media { density { bozo } } } } box { <-10000, 1000, -10000> <10000, 1050, 10000> pigment { bozo turbulence .5 scale 50 pigment_map { 0 Clear .5 rgbt <1, 1, 1, .25> 1 Clear } } interior { media { density { bozo } } } } sky_sphere { pigment { bozo turbulence 1.75 color_map { 0.0 color Blue 0.6 1.0 color rgb 1 } } scale 1 rotate < clock*-20, 0, 0> } camera { perspective location <0, 0, 0> look_at <650, -10000, 800> translate <0, 0, 0> rotate <0, 50*clock 0> translate <650, 1075-1075*clock, 800> } plane { y, 0 pigment { rgb <.1, .1, .3> } finish { Dull ambient .3 } normal { bumps .5 } } //buildings #declare building1 = union { difference { box { <100, 100, 100> <0, 0, 0> } box { <95, 101, 95> <5, 90, 5> } box { <95, 98, 95> <5, 1, 5> } //window holes box { <60, 70, 101 > <40, 40 -1> } box { <101, 70, 30 > <-1, 40 10> } box { <10, 70, 101 > <30, 40 -1> } box { <101, 70, 70 > <-1, 40 40> } box { <70, 70, 101 > <90, 40 -1> } box { <101, 70, 70 > <-1, 40 90> } pigment {Gray} // texture { T_Stone3 scale 1 } finish { ambient .3} } box { <107, 1, 107> <-7, 0, -7> pigment { White } } box { <99, 98.01, 99> <1, 98, 1> pigment {Gray} } box { <95, 100, 2> <5, 1, 3> pigment { Clear } finish { phong 2 reflection .2 } } box { <95, 100, 2> <5, 1, 3> pigment { Clear } finish { phong 2 reflection .2 } } box { <2, 100, 95> <3, 1, 5> pigment { Clear } finish { phong 2 reflection .2 } } box { <96, 100, 95> <97, 1, 5> pigment { Clear } finish { phong 2 reflection .2 } } } #declare XY = 0 #while (XY < 10) #object {building1 translate scale <1, 2*rand(R4), 1> pigment {rgb } finish { ambient .6 } } #object {building1 translate scale <1, 2*rand(R4), 1> pigment {rgb } finish { ambient .6 } } #object {building1 translate scale <1, 2*rand(R4), 1> pigment {rgb } finish { ambient .6 } } #object {building1 translate scale <1, 2*rand(R4), 1> pigment {rgb } finish { ambient .6 } } #object {building1 translate scale <1, 2*rand(R4), 1> pigment {rgb } finish { ambient .6 } } #object {building1 translate scale <1, 2*rand(R4), 1> pigment {rgb } finish { ambient .6 } } #object {building1 translate scale <1, 2*rand(R4), 1> pigment {rgb } finish { ambient .6 } } #object {building1 translate scale <1, 2*rand(R4), 1> pigment {rgb } finish { ambient .6 } } #object {building1 translate scale <1, 2*rand(R4), 1> pigment {rgb } finish { ambient .6 } } #object {building1 translate scale <1, 2*rand(R4), 1> pigment {rgb } finish { ambient .6 } } #declare XY = XY+1 #end ****************************************************** For the opening sequence where we plunge into the clouds, the camera statement was changed as follows: camera { perspective location <0, 0, 0> look_at <650, 10000, 8000> translate <0, 0, 0> rotate <90*clock, 50*clock, 0> translate <650, 1055-45*clock, 800+45*clock>