Name: Richard Kline Filename: "fuel_element.jpg" Programs Used: POVRay 2.2 for rendering and ImageMagick for postprocessing "fuel_element.jpg" is a cutaway of a fuel assembly for a small nuclear reactor. I got the idea because I had the specifications for the assembly, but no pictures and I was looking for an excuse to justify installing POV on my Sun workstation at work. The picture shows one end of the assembly cutaway to show 3 of the 12 individual fuel rods and one of them is further cutaway to show the individual fuel pellets. The effort accomplished all of my goals: I have POV installed at work (I don't manage to find the time to play much though, lest you get too envious), I learned a lot about POV, and we have a nice picture to show managers who pass by to impress them with our skills. The file is scaled in arbitrary units because I had to sanitize it to remove proprietary information. It took 1 hr. 48 minutes to render at 800x600 with anti-aliasing on my 486 DX2-66 running Linux. For postprocessing I used the sharpen function in ImageMagick to make the edges more distinct and added my name (it may sound odd to sharpen the edges of an anti-aliased image, but it definitely improved the image). A red-blue 3D stereogram version of this image has been uploaded to povray.org:/pub/povray/incoming/images/fuel_element_3d.jpg The text file accompanying it explains how it was created Richard Kline rkline@cais.com /* Begin file "element.pov" */ // Pesistence of Vision version 2.2 file // POV file for fuel element cutaway // By Richard Kline rkline@cais.com // All dimensions are in arbitrary units (au's) #include "colors.inc" #include "shapes.inc" #include "textures.inc" /* The element.inc include file must be after the includes above element.inc since uses colors and textures from the above files */ #include "element.inc" camera { location <0,37.5,-75> direction <0,0,8> look_at <-3,-2.1,0> // Uncomment the rotate below to provide the left image for a 3-D Stereogram //rotate <0,3,0> } /* I spent way too much time fooling with the light sources so everything is illuminated, because I hadn't seen the comments in other POV files about always enclosing metallic objects in a sphere so every surface will reflect something */ light_source { <-30, -5, -25> color Gray45} light_source { <25,45, -48.3> color White} /* Lots of CSG to follow. Nested CSG statements are indented ala if's and loops in structured programs */ union { difference { /* assemble the 4 quadrants with a cylinder to fill in the middle */ union { object { Quadrant scale <1,10,1> translate <0,1.5,0> } object { Quadrant scale <1,10,1> rotate <0,90,0> translate <0,1.5,0> } object { Quadrant scale <1,10,1> rotate <0,180,0> translate <0,1.5,0> } object { Quadrant scale <1,10,1> rotate <0,270,0> translate <0,1.5,0> } cylinder { <0,9,0>, <0,-7,0>, 2.9 } } /* subtract out the hole in the middle and part of one quadrant where 3 individual fuel rods will show */ union { cylinder { <0,15.1,0>, <0,-15.1,0>, 2.0} box {<-0.3,1.5,0.3>, <3.75,9.15,-3.75> rotate <0,15,0> } } texture {Al_Texture} } /* Now add the 3 individual fuel rods starting with the cutaway one in the middle */ union { // First the part that shows which isn't cut away cylinder { <0,3.45,0>, <0,-0.15,0>, 0.6 texture{Zirc_Texture} translate <0,0,-2.925> rotate <0,-30,0> } /* Show a cylindrical shell sliced by a plane. This is basically how it was done in the POV example file "scenes/level1/cliptxt2.pov" but using cylinders instead of spheres */ intersection { // The outer surface of the fuel rod cladding cylinder { <0,3.45,0>, <0,7.2,0>, 0.6 } /* The inner surface of the cladding the inverse statement is needed to define the inner surface */ cylinder { <0,3.45,0>, <0,7.2,0>, 0.5025 inverse } // the plane to clip off the top of the fuel rod to show the inside plane { <0,0,-1>, 0 } texture {Zirc_Texture} translate <0,0,-2.925> rotate <0,-30,0> } /* Add the cladding at the end of the rod but still clipped by the plane to better show the fuel pellets */ intersection { cylinder { <0,7.2,0>, <0,7.35,0>, 0.6 } plane { <0,0,-1>, 0} texture {Zirc_Texture} translate <0,0,-2.925> rotate <0,-30,0> } // Put 3 fuel slugs into the cutaway cladding object {Slug translate <0,5.7,-2.925> rotate <0,-30,0> } object {Slug translate <0,4.2,-2.925> rotate <0,-30,0> } object {Slug translate <0,2.7,-2.925> rotate <0,-30,0> } // Now put in the other 2 intact fuel rods cylinder { <0,7.35,0>, <0,-0.1,0>, 0.6 texture {Zirc_Texture} translate <0,0,-2.925> rotate <0,-60,0> } cylinder { <0,7.35,0>, <0,-0.1,0>, 0.6 texture {Zirc_Texture} translate <0,0,-2.925> } } // All the parts are in. Now artfully arrange them rotate <0,0,90> rotate <0,-48.5,0> } // Stick in a background plane plane { y, -30 pigment {Gray70} finish {Dull} } /* Begin file "element.inc" the include file for the "element.pov" file */ // Pesistence of Vision version 2.2 file // Include file for fuel element cutaway // By Richard Kline rkline@cais.com /* Texture for zirconium cladding (I don't know the exact reflectivity of zirconium its just 60% reflective to distinguish it from the Aluminum */ #declare Zirc_Texture = texture { pigment {color Gray60} finish { ambient 0.3 diffuse 0.7 reflection 0.15 brilliance 8 specular 0.8 roughness 0.1 } } /* Texture for Aluminum outer assembly */ #declare Al_Texture = texture { pigment {color Gray90} finish { ambient 0.3 diffuse 0.75 reflection 0.15 brilliance 8 specular 0.8 roughness 0.1 } } /* Define the shape of one of the 12 facets of the assembly (each facet contains one fuel rod) by combining three boxes to make a _ shape /_\ (the parts that stick out of this object are covered over by other objects in later CSG statements) */ #declare Facet = union { box { <0,0,0>, <0.75,1.5,1.5> } box { <-.75,1.5,1.5>, <0,0,0> rotate <0,20,0> translate <0.75,0,0> } box { <0,0,0>, <0.75,1.5,1.5> rotate <0,-20,0> } translate <-.375,0,0> } /* Combine 3 facets to make up one quadrant of the assembly and translate them so they at centered at y=0 */ #declare Quadrant = union { object { Facet translate <0,-0.75,-3.675> } object { Facet translate <0,-0.75,-3.675> rotate <0,-30,0>} object { Facet translate <0,-0.75,-3.675> rotate <0,-60,0>} } /* Define cylindrical fuel slug Very dark texture for uranium dioxide */ #declare Slug = cylinder { <0,1.47,0>, <0,0.03,0>, 0.5025 texture { pigment {Gray30} finish{Dull} } }