|
|
A simple animation to test my multi-stage animation macros.
Scene file: Three rotating segmented rings. Four separate timelines, each with
three stages.
I've made a note of the command-line for encoding the 600-frame animation in
mencoder, but you'll need to remove the back-slashes.
If you like my method, I can upload the macros.
Regards,
A.D.B.
/*
Persistence of Vision Ray-Tracer Scene Description File
Name: Rings.pov
Vers: 3.6
Desc:
Date: 01-30-08
Auth: Anthony D. Baye
Note: mencoder mf:\/\/\*.png -mf w=1024:h=768:fps=30:type=png -ovc x264
-x264encopts preset=slow:tune=film:crf=20 -of avi -o Rings.avi
*/
#include "kolors.inc"
#include "metals.inc"
#include "glass.inc"
#include "anim.inc"
/* !--- Global Settings ---! */
#declare ANI = clock_on;
/* !-----------------------! */
#default { pigment { Orange } finish { ambient 0.3 diffuse 0.6 } }
light_source { <0.0, 30.0 -15.0> color rgb 1 media_interaction off }
camera {
location <3.0, 5.0, -10.0>
look_at 0.0
}
#declare colors =
array [7] {
Red,
Orange,
Yellow,
Green,
Blue,
Indigo,
Violet
}
#macro Ring(Rad, segCount, Tilt, Phase)
#local rSpan = 360/segCount;
#declare ringSeg =
difference {
merge {
cylinder { <0.0, 0.0, -0.3125> <0.0, 0.0, 0.3125> Rad }
cylinder { <0.0, 0.0, -0.25> <0.0, 0.0, 0.25> Rad+0.03125 }
}
cylinder { <0.0, 0.0, -0.34375> <0.0, 0.0, 0.34375> Rad-0.1875 }
cylinder { <0.0, 0.0, -0.25> <0.0, 0.0, 0.25> Rad-0.125 }
box { <0.0, -(Rad+0.0625), -0.34375> <(Rad+0.0625), (Rad+0.0625), 0.34375>
rotate -(rSpan/2)*z }
box { <0.0, -(Rad+0.0625), -0.34375> <-(Rad+0.0625), (Rad+0.0625), 0.34375>
rotate (rSpan/2)*z }
union {
difference {
cylinder { <0.0, 0.0, -0.34375> <0.0, 0.0, 0.34375> 0.1875 }
cylinder { <0.0, 0.0, -0.31251> <0.0, 0.0, 0.31251> 0.09375 }
box { <0.0, -0.21875, -0.375> <-0.21875, 0.21875, 0.375> }
}
cylinder { -0.25*z, -0.34375*z 0.109375 }
cylinder { 0.25*z, 0.34375*z 0.109375 }
cylinder { -0.28125*z, 0.28125*z 0.046875 }
translate -0.09375*x
rotate -(rSpan/2)*z
translate <(Rad-0.09375)*sin(radians((rSpan/2))),
(Rad-0.09375)*cos(radians((rSpan/2))), 0.0>
}
union {
difference {
cylinder { <0.0, 0.0, -0.34375> <0.0, 0.0, 0.34375> 0.1875 }
cylinder { <0.0, 0.0, -0.31251> <0.0, 0.0, 0.31251> 0.09375 }
box { <0.0, -0.21875, -0.375> <0.21875, 0.21875, 0.375> }
}
cylinder { -0.25*z, -0.34375*z 0.109375 }
cylinder { 0.25*z, 0.34375*z 0.109375 }
cylinder { -0.28125*z, 0.28125*z 0.046875 }
translate 0.09375*x
rotate (rSpan/2)*z
translate <-(Rad-0.09375)*sin(radians((rSpan/2))),
(Rad-0.09375)*cos(radians((rSpan/2))), 0.0>
}
pigment { White }
// finish { F_MetalC }
finish {
ambient 0.3
diffuse 0.6
// roughness 0.01
// specular 0.5
}
rotate 90.0*x
}
union {
#local a = 0;
#local cIndex = 0;
#while(a < 360)
#if(cIndex > 6)
#local cIndex = 0;
#end
object { ringSeg rotate (a + Phase)*y
rotate Tilt pigment { colors[cIndex] } }
#local cIndex = cIndex + 1 ;
#local a = a + (360 / segCount);
#end
}
#end
#local C = 18;
#local O = 180/C;
#local S = degrees(15)*clock;
#local D = (2*pi*3) / C;
#if(ANI)
initAnimation(<0,0,20>)
#end
union {
Ring(3.0, 18, 120.0*z, (Timer(1, <0,0,0>, <0,0,5>,
300)+Timer(4,<0,0,5>,<0,0,20>,4500)+Timer(1, <0,0,15>, <0,0,20>, -300)))
Ring(3.5, 18, 60.0*z, (Timer(1, <0,0,1>, <0,0,6>,
300)+Timer(4,<0,0,6>,<0,0,19>,4500)+Timer(1, <0,0,14>, <0,0,19>, -300)))
rotate (Timer(1, <0,0,4>, <0,0,7>,
150)+Timer(4,<0,0,7>,<0,0,16>,1200)+Timer(1, <0,0,13>, <0,0,16>, -150))*y
}
Ring(4.0, 12, 0.0, (Timer(1, <0,0,2>, <0,0,7>,
300)+Timer(4,<0,0,7>,<0,0,18>,4500)+Timer(1, <0,0,13>, <0,0,18>, -300)))
Post a reply to this message
|
|