// Attempt at isosurface ground cover. Requires POV-Ray with raw_wave // pattern modifier. Other pattern modifier fixes may or may not be // be needed to avoid seams - unsure, but I ran with those too. #version 3.8; global_settings { assumed_gamma 1 } default { finish { ambient 0.03 } } #declare GreyNurse = srgb <0.90588,0.92549,0.90196>; background { color GreyNurse } #declare Camera00 = camera { perspective location <2.6,3.6,-2.601> sky y angle 35 right x*(image_width/image_height) look_at <0,0,0> } #declare White = srgb <1,1,1>; #declare Light00 = light_source { <50,150,-250>, White*1.7 } #declare VarPlaneSheetThickness = 0.010; #declare FnY = function (x,y,z) { y-(VarPlaneSheetThickness/2.0) } #declare FnY_inv = function (x,y,z) { -(y)-(VarPlaneSheetThickness/2.0) } #declare FnYY = function (x,y,z) { max(FnY(x,y,z),FnY_inv(x,y,z)) } #declare Jade0 = srgb <0.25882,0.47451,0.46667>; #declare VarFreq = 1.0; #declare VarValueMult = 0.2; #declare FnRadialRaw = function { pattern { radial raw_wave frequency VarFreq } } #declare FnRadial = function { pattern { radial frequency VarFreq sine_wave } } #declare FnYYOffRaw = function { pattern { function { FnYY(x,y-FnRadialRaw(x,y,z)*VarValueMult,z) } raw_wave turbulence 0.05 } } #declare FnYYOffGnd0 = function { pattern { function { FnYY(x,y-FnRadial(x,y,z)*VarValueMult-0.010,z) } raw_wave turbulence <0.003,+0.03,0.003> octaves 4 omega 0.67 lambda 5 } } #declare FnYYOffGnd1 = function { pattern { function { FnYY(x,y-FnRadial(x,y,z)*VarValueMult-0.005,z) } raw_wave turbulence <0.01,+0.07,0.01> octaves 5 omega 0.47 lambda 6 } } #declare FnYYOff = function { pattern { function { FnYY(x,y-FnRadial(x,y,z)*VarValueMult,z) } raw_wave turbulence <0.02,+0.12,0.02> octaves 5 omega 0.87 lambda 7 } } #declare ClayCreek = srgb <0.54118,0.51373,0.37647>; #declare IsoPlaneYOffGnd0 = isosurface { function { FnYYOffGnd0(x,y,z) } contained_by { box { <-9,-0.3,-9>,<9,0.3,9> } } threshold 0 accuracy 0.0005 max_gradient 13.3 max_trace 1 pigment { color ClayCreek } } #declare IsoPlaneYOffGnd1 = isosurface { function { FnYYOffGnd1(x,y,z) } contained_by { box { <-9,-0.3,-9>,<9,0.3,9> } } threshold 0 accuracy 0.0005 max_gradient 3.3 max_trace 1 } #declare IsoPlaneYOff = isosurface { function { FnYYOff(x,y,z) } contained_by { box { <-9,-0.3,-9>,<9,0.3,9> } } threshold 0 accuracy 0.0005 max_gradient 13.3 max_trace 1 } #declare FClover = finish { diffuse 0.7 , 1.2 phong 0.5 phong_size 50 specular 0.7 roughness 0.025 } #declare Clover = srgb <0.21961,0.28627,0.06275>; #declare PClover = pigment { color Clover } #declare TClover = texture { pigment { PClover } finish { FClover } } #declare OClover = object { IsoPlaneYOff texture { TClover } } #declare FGnd1 = finish { diffuse 0.7 , 0.3 phong 0.3 phong_size 50 specular 0.5 roughness 0.025 } #declare PGnd1 = pigment { color ClayCreek } #declare TGnd1 = texture { pigment { PGnd1 } finish { FGnd1 } } #declare OGnd1 = object { IsoPlaneYOffGnd1 texture { TGnd1 } } //--- scene --- camera { Camera00 } light_source { Light00 } object { OClover } object { IsoPlaneYOffGnd0 } object { OGnd1 }