// Persistence of Vision Ray Tracer Scene Description File // File: melted.pov // Vers: 3.6 // Desc: Macro to generate melted text objects // Start Date: 16/Dec/2004 // Auth: B. Gimeno // email: aplenosol[at]ya.com // http://usuarios.lycos.es/Game2413 #include "colors.inc" #include "transforms.inc" global_settings { assumed_gamma 1.0 } camera {location <6,15,-25> look_at <0,0,0> direction z*3 } light_source { <-150,300,-10> colour White parallel point_at <0,0,0> } plane {y,0 texture { pigment { checker colour White colour rgb 2 } normal {checker} } } // -------------------------------- the macro -------------------------------- #macro Melt_Letter (String,Sign_Size,Max_Drop_Size,Drop_Density,Preset_Mode) #local Text= object { text { ttf "crystal.ttf" concat (String) .15,<-.1,0,0> } pigment {Red} scale Sign_Size rotate x*90 translate y*Sign_Size/1000000 } #local T = object {Text Center_Trans(Text,x+z)} #local Min_T = min_extent (T) ; #local Max_T = max_extent (T) ; #local Bx = object {box {Min_T*1.5, Max_T*1.5} pigment {Gray50 filter .8} } ; //T Bx #local Min_X = Min_T.x ; #local Min_Z = Min_T.z ; #local Max_X = Max_T.x ; #local Max_Z = Max_T.z ; #local RND1 = seed (pi) ; #local RND2 = seed (pi) ; #local RND3 = seed (pi) ; #local X_Blobs = Max_X-Min_X ; #local Z_Blobs = Max_Z-Min_Z ; #local X_Blobs_r = -X_Blobs ; difference { blob {threshold .3 #while (X_Blobs_r ; #local Hacia = ; #local SobreT = trace (T,Desde,Hacia); #if (vlength(SobreT)!=0) sphere {SobreT,rand(RND3)*Max_Drop_Size+0.05,1} #end #local Z_Blobs_r = Z_Blobs_r+Drop_Density ; #end #local X_Blobs_r = X_Blobs_r+Drop_Density ; #end // texture #switch (Preset_Mode) #case (0) #break #case (1) // jelly-oh scale <1,1,1> texture { pigment {rgb <217,49,103>/255 filter .8} finish {phong .3 phong_size 200 reflection .3} } interior {ior 1.3333} #break #case (2) texture { // rainbow gradient pigment { gradient x color_map {[0.00 color Red] [1/6 color Yellow] [2/6 color rgb<35,188,42>/255] [3/6 color rgb <0,233,233>/255] [4/6 color rgb <0,10,160>/255] [5/6 color rgb <255,0,255>/255] [1.00 color Red] } } finish {phong .3 phong_size 200 reflection .8} translate -x*Min_X*.5 scale X_Blobs rotate y*10 } #break #case (3) scale <1,.2,1> // Black ink texture { pigment {Black filter .8} finish {phong .6 phong_size 200 reflection .8} } #break #case (4) scale <1,1,1> texture { pigment {rgb <200,200,200>/255 } finish { reflection {0.6, 1 fresnel} specular .7 roughness 0.008 conserve_energy } } #break #case (5) scale <1,1,1> texture { pigment {rgb <1,1,1> filter 1} finish { specular .7 roughness 0.002 reflection {0.8, 1 fresnel} } } interior {ior 1.3333} #break #case (6) scale <1,1,1> texture { pigment {rgb <102,51,0>/255 } finish { specular .7 roughness 0.009 } } #break #end } // END BLOB box {,pigment {Clear}} }// end difference #end // -------------------------------- end macro -------------------------------- object { Melt_Letter( "POV", // string 7, // scale string .3, // max drop size .1 // drop density 1 // texture presettings // 0= no_texture // 1= Jelly // 2= Rainbow X Gradient // 3= Black Ink // 4= Mercury // 5= Water // 6= Chocolate ) translate z*0 }