|
|
// Persistence of Vision Ray Tracer Scene Description File
// File: trace_HF.pov
// Vers: unofficial MegaPov 0.4
// Desc: using 'trace' to make a camera path over a height field
// Date: 00.3
// Auth: Bob Hughes
// Mail: inv### [at] aolcom?Subject=Pov-Scene
// Note: ugly script writing as usual for me, sorry.
// The idea here is to create a text file of vectors made using the trace function
// then use that to spline a path for the camera which also uses it for sky vector.
// Apparently the #while keyword refuses to be left out of the loop (pun).
// Reason for trying to leave the loop out was so a non-splined version could be made.
// Render about 30 or more frames to see the results okay.
#version unofficial MegaPov 0.4;
/* SET THIS TO 1 TO MAKE TEXT OF VECTORS, 2 or MORE FOR SPLINED PATH ANIMATION
// if set to 1 and the #while #end loop keywords only commented out non-spline path is
done.
*/
#declare Splined=2;
light_source {<10,10,-10>,1.5}
#if (Splined<=1)
#declare CLK=clock*6;
#while (CLK<6) // comment this out unless making the Flight text file
// you'll need your own HF image but any should be okay
#declare TracedObject =
height_field {
png "mountainsmall.png" smooth
translate -.5 scale <6,.25,6> }
#declare Norm = <0, 0, 0>;
#declare Start = <1, 1, 1>;
#declare Travel= <-2.5+((CLK/6)*4), 0, 2.5-((CLK/6)*4)>; // diagonal trek
#declare Intersect= trace (TracedObject, Start, Travel-Start, Norm);
object {
// TracedObject
height_field {
png "mountainsmall.png" smooth
translate -.5 scale <6,.25,6> }
texture {
pigment { image_map {png "mountainsmall.png"}
translate -.5 scale <6,6,1> rotate 90*x }
finish {ambient .2 diffuse .9 specular .3 roughness .1}
}
}
#if (Norm.x != 0 | Norm.y != 0 | Norm.z != 0)
#if (Norm.x > .995) #else
// #if (Norm.y > .5) #else
#if (Norm.z > .995) #else
#if (Splined=1)
// define and save the vectors to text file (crude example)
#switch (CLK)
#case (0)
#declare V1=Intersect+(Norm*<1,.275,1>);
#declare V1a=Intersect+<1,-.5,-1>;
#declare V1b=Norm;
#break
#case (1)
#declare V2=Intersect+(Norm*<1,.275,1>);
#declare V2a=Intersect+<1,-.5,-1>;
#declare V2b=Norm;
#break
#case (2)
#declare V3=Intersect+(Norm*<1,.275,1>);
#declare V3a=Intersect+<1,-.5,-1>;
#declare V3b=Norm;
#break
#case (3)
#declare V4=Intersect+(Norm*<1,.275,1>);
#declare V4a=Intersect+<1,-.5,-1>;
#declare V4b=Norm;
#break
#case (4)
#declare V5=Intersect+(Norm*<1,.275,1>);
#declare V5a=Intersect+<1,-.5,-1>;
#declare V5b=Norm;
#break
#case (5)
#declare V6=Intersect+(Norm*<1,.275,1>);
#declare V6a=Intersect+<1,-.5,-1>;
#declare V6b=Norm;
#break
#end
#declare CLK=CLK+1;
#end // loop // comment this out unless making the Flight text file
#end // splined? yes or no
// this camera is just here to prevent parse error
camera {location Intersect+(Norm*<1,.275,1>) sky Norm look_at Intersect+<1,-.5,-1>}
#end #end #end // #end
#if (Splined=1)
#fopen Flight "c:\pr3\flight.txt" write
#write
(Flight,V1,",",V1a,",",V1b,",",V2,",",V2a,",",V2b,",",V3,",",V3a,",",V3b,",",V4,",",V4a,",",V4b,",",V5,",",V5a,",",V5b,"
,",V6,",",V6a,",",V6b,"\n")
#fclose Flight
#end // splined? yes or no
#else // splined? yes or no
#fopen Flight "c:\pr3\flight.txt" read
#while (defined(Flight))
#read (Flight,V1,V1a,V1b,V2,V2a,V2b,V3,V3a,V3b,V4,V4a,V4b,V5,V5a,V5b,V6,V6a,V6b)
#end
#declare Cpos=
spline { cubic_spline
0, V1
.2, V2
.4, V3
.6, V4
.8, V5
1, V6
}
#declare Clat=
spline { cubic_spline
0, V1a
.2, V2a
.4, V3a
.6, V4a
.8, V5a
1, V6a
}
#declare Csky=
spline { cubic_spline
0, V1b
.2, V2b
.4, V3b
.6, V4b
.8, V5b
1, V6b
}
camera {location Cpos(clock) sky Csky(clock) look_at Clat(clock)}
height_field {
png "mountainsmall.png" smooth translate -.5 scale <6,.25,6>
texture {
pigment { image_map {png "mountainsmall.png"} translate -.5 scale <6,6,1> rotate
90*x }
finish {ambient .2 diffuse .9 specular .3 roughness .1}
}
}
#end // splined? yes or no
// omniVerse http://users.aol.com/persistenceofv/all.htm
Post a reply to this message
|
|