#include "colors.inc" #include "shapes.inc" #include "textures.inc" #include "stones.inc" #default { pigment { Coral } } //////////////////////////////////////////////////////////////////////// Pot #declare Pot = difference { merge { object { Sphere scale < 0.8 , 0.8 , 0.8 > translate < 0.0 , 0.0 , 0.0 > pigment { DarkTan } } object { Cone_Y scale < 0.7 , 0.4 , 0.7 > rotate z*180 translate < 0.0 , 0.8 , 0.0 > pigment { DarkTan } } } object { Cube scale < 0.8 , 0.8 , 0.8 > translate < 0.0 , -1.4 , 0.0 > pigment { BakersChoc } } object { Sphere scale < 0.6 , 0.6 , 0.6 > translate < 0.0 , 1.4 , 0.0 > pigment { BakersChoc } } } ///////////////////////////////////////////////////////////////////////Skull #declare SkullTop = difference { object { Sphere scale < 1.3 , 1.4 , 1.5 > translate < 0.0 , 0.0 , 0.0 > pigment { Wheat } } //Bottom off object { Cube scale < 1.5 , 1.5 , 1.5 > translate < 0.0 , -1.9 , 0.0 > pigment { Wheat } } //Eyes object { Sphere scale < 0.4 , 0.4 , 0.4 > translate < -0.4 , 0.5 , -1.0 > pigment { MediumGoldenrod } } object { Sphere scale < 0.4 , 0.4 , 0.4 > translate < 0.4 , 0.5 , -1.0 > pigment { MediumGoldenrod } } //Nose object{ Cone_Y scale < 0.25 , 0.3 , 0.1 > translate < 0.0 , 0.25 , -1.45 > pigment { MediumGoldenrod } } } #declare SkullBot = difference { //Teeth object { Sphere scale < 1.3 , 1.3 , 1.3 > translate < 0.0 , 0.0 , 0.0 > pigment { Wheat } } //Behind curve object { Sphere scale < 1.2 , 1.2 , 1.3 > translate < 0.0 , 0.0 , 0.1 > pigment { Wheat } } //Bottom limiting object { Cube scale < 1.5 , 1.4 , 1.5 > translate < 0.0 , -1.7 , 0.0 > pigment { Wheat } } //Upper limiting object { Cube scale < 1.5 , 1.4 , 1.5 > translate < 0.0 , 1.5 , 0.0 > pigment { Wheat } } //Behind limiting object { Cube scale < 1.5 , 1.6 , 1.5 > translate < 0.0 , 0.0 , 0.5 > pigment { Wheat } } //Tooth cracks object { Cube scale < 0.02 , 1.6 , 1.5 > rotate y*25 translate < -0.9 , 0.0 , 0.0 > pigment { Wheat } } object { Cube scale < 0.02 , 1.6 , 1.5 > rotate y*7 translate < -0.5 , 0.0 , 0.0 > pigment { Wheat } } object { Cube scale < 0.02 , 1.6 , 1.5 > translate < -0.3 , 0.0 , 0.0 > pigment { Wheat } } object { Cube scale < 0.02 , 1.6 , 1.5 > translate < 0.0 , 0.0 , 0.0 > pigment { Wheat } } object { Cube scale < 0.02 , 1.6 , 1.5 > translate < 0.3 , 0.0 , 0.0 > pigment { Wheat } } object { Cube scale < 0.02 , 1.6 , 1.5 > rotate y*-7 translate < 0.5 , 0.0 , 0.0 > pigment { Wheat } } object { Cube scale < 0.02 , 1.6 , 1.5 > rotate y*-25 translate < 0.9 , 0.0 , 0.0 > pigment { Wheat } } } #declare Skull = merge { object { SkullTop translate < 0.0 , 0.0 , 0.0 > } object { SkullBot translate < 0.0 , -0.4 , -0.1 > } } /////////////////////////////////////////////////////////////////// Shipwreck #declare Boat = merge { difference { object { Sphere scale < 1.0 , 0.7 , 0.6 > translate < 0.0 , 0.0 , 0.0 > pigment { DarkWood } } object { Cube scale < 1.0 , 0.7 , 0.6 > translate < 0.0 , 0.7 , 0.0 > pigment { DarkWood } } difference { object { Sphere scale < 0.95 , 0.65 , 0.55 > translate < 0.0 , -0.0 , 0.0 > pigment { DarkWood } } object { Cube scale < 1.0 , 0.7 , 0.6 > translate < 0.0 , 0.7 , 0.0 > pigment { DarkWood } } } } difference { object { Cube scale < 0.3 , 0.2 , 0.3 > translate < 0.4 , 0.2 , 0.0 > pigment { DarkWood } } object { Cube scale < 0.29 , 0.29 , 0.29 > translate < 0.4 , 0.1 , 0.0 > pigment { DarkWood } } object { Cube scale < 0.1 , 0.1 , 0.4 > translate < 0.4 , 0.19 , 0.0 > pigment { DarkWood } } } object { Disk_Y scale < 0.05 , 0.8 , 0.05 > translate < -0.4 , 0.2 , 0.0 > pigment { DarkWood } } } //Boat half back #declare ShipwreckBack = difference { object { Boat translate < 1.5 , 0.4 , 0.0 > } merge { object { Cube scale < 1.0 , 2.0 , 1.0 > translate < 0.15 , -0.2 , 0.0 > pigment { DarkWood } } object { Cube scale < 0.3 , 0.3 , 0.6 > rotate z*10 translate < 1.0 , 0.5 , 0.0 > pigment { DarkWood } } object { Cube scale < 0.2 , 0.4 , 0.6 > rotate z*-10 translate < 1.0 , 0.0 , 0.0 > pigment { DarkWood } } object { Cube scale < 0.4 , 0.4 , 0.6 > rotate z*25 translate < 1.0 , -0.6 , 0.0 > pigment { DarkWood } } object { Cube scale < 0.3 , 0.3 , 0.6 > rotate z*-25 translate < 1.0 , -1.0 , 0.0 > pigment { DarkWood } } } } //Boat half front #declare ShipwreckFront = difference { object { Boat rotate y*180 translate < 1.35 , 0.3 , 0.0 > } merge { object { Cube scale < 0.0 , 2.0 , 1.0 > translate < 0.15 , -0.2 , 0.0 > pigment { DarkWood } } object { Cube scale < 0.3 , 0.3 , 0.6 > rotate z*10 translate < 1.0 , 0.5 , 0.0 > pigment { DarkWood } } object { Cube scale < 0.2 , 0.4 , 0.6 > rotate z*-10 translate < 0.9 , 0.0 , 0.0 > pigment { DarkWood } } object { Cube scale < 0.4 , 0.4 , 0.6 > rotate z*25 translate < 1.0 , -0.6 , 0.0 > pigment { DarkWood } } object { Cube scale < 0.3 , 0.3 , 0.6 > rotate z*-25 translate < 1.0 , -1.0 , 0.0 > pigment { DarkWood } } } } #declare shipwreck = merge { object { ShipwreckFront rotate y*180 rotate z*-15 translate < 1.2 , 0.1 , 0.0 > } object { ShipwreckBack rotate z*15 translate < -1.0 , 0.0 , 0.0 > } } #declare Shipwreck = object {shipwreck scale < 5.0 , 5.0 , 5.0 > translate y*-4} /////////////////////////////////////////////////////////////////////////Frog #declare FHead = difference { //head object { Sphere scale < 0.8 , 0.5 , 0.8 > translate < 0.0 , 0.1 , 0.0 > pigment { PaleGreen } } //mouth object { Sphere scale < 1.0 , 0.05 , 1.0 > translate < 0.0 , 0.0 , -0.5 > pigment { Red } } } #declare Eye = merge { object { Sphere scale < 0.3 , 0.3 , 0.3 > translate < 0.0 , 0.0 , 0.0 > pigment { White } } object { Sphere scale < 0.14 , 0.14 , 0.14 > translate < 0.0 , 0.0 , -0.2 > pigment { Black } } } #declare FFace = merge { object { Eye translate < -0.5 , 0.5 , 0.0 > } object { Eye translate < 0.5 , 0.5 , 0.0 > } object { FHead } } #declare FBody = difference { object { Sphere scale < 1.0 , 1.0 , 1.0 > translate < 0.0 , 0.0 , 0.0 > pigment { PaleGreen } } object { Cube scale < 1.0 , 1.0 , 1.0 > translate < 0.0 , -1.5 , 0.0 > pigment { PaleGreen } } } #declare FLeg = merge { difference { object { Cone_X scale < 0.7 , 0.05 , 0.5 > translate < -0.35 , -0.4 , 0.0 > pigment { PaleGreen } } //toes object { Cone_X scale < 0.5 , 0.5 , 0.5 > translate < -1.25 , -0.4 , 0.3 > pigment { PaleGreen } } object { Cone_X scale < 0.5 , 0.5 , 0.5 > translate < -1.25 , -0.4 , 0.0 > pigment { PaleGreen } } object { Cone_X scale < 0.5 , 0.5 , 0.5 > translate < -1.25 , -0.4 , -0.3 > pigment { PaleGreen } } } object { Sphere scale < 0.5 , 0.5 , 0.25 > translate < 0.0 , 0.0 , 0.0 > pigment { PaleGreen } } } #declare FFoot = merge { difference { object { Cone_X scale < 0.5 , 0.05 , 0.5 > translate < -0.35 , -0.4 , 0.0 > pigment { PaleGreen } } //toes object { Cone_X scale < 0.5 , 0.5 , 0.5 > translate < -1.13 , -0.4 , 0.3 > pigment { PaleGreen } } object { Cone_X scale < 0.5 , 0.5 , 0.5 > translate < -1.13 , -0.4 , 0.0 > pigment { PaleGreen } } object { Cone_X scale < 0.5 , 0.5 , 0.5 > translate < -1.13 , -0.4 , -0.3 > pigment { PaleGreen } } } object { Sphere scale < 0.3 , 0.6 , 0.25 > rotate z*-20 translate < 0.08 , 0.1 , 0.0 > pigment { PaleGreen } } } #declare Frog = merge { object { FFace translate < 0.0 , 1.2 , 0.0 > } object { FBody translate < 0.0 , 0.0 , 0.0 > } object { FLeg rotate y*200 translate < 1.0 , 0.0 , 0.0 > } object { FLeg rotate y*-20 translate < -1.0 , 0.0 , 0.0 > } object { FFoot rotate y*-120 translate < 0.5 , 0.0 , -0.7 > } object { FFoot rotate y*-60 translate < -0.5 , 0.0 , -0.7 > } } //////////////////////////////////////////////////////////////////////Seasnake #macro TubeTriangle(R, T) object { sphere_sweep { linear_spline 4 // number of spheres , T // , radius , T , T , T } } #end #macro TubePolygon(R, T, N) object { sphere_sweep { linear_spline N+1 #local I = 0; #while (I <= N) #local A = 2*pi*I/N; #local X = R*cos(A); #local Y = R*sin(A); , T #local I = I + 1; #end } } #end #macro TubeWork(T, V, N) object { sphere_sweep { linear_spline N #local I = 0; #while (I < N) V[I], T #local I = I + 1; #end } } #end #macro TubePolygon(R, T, N) object { sphere_sweep { linear_spline N+1 #local I = 0; #while (I <= N) #local A = 2*pi*I/N; #local X = R*cos(A); #local Y = R*sin(A); , T #local I = I + 1; #end } } #end #declare S = array[17] { <-3, -1, 0>, <-2.8,-0.98, 0>, <-2.6,-0.9, 0>, <-2.5,-0.8, 0>, <-1.5, 0.8, 0>, <-1, 1, 0>, <-0.5, 0.8, 0>, < 0.5,-1.8, 0>, < 1, -2, 0>, < 1.5,-1.8, 0>, < 2.5, 0.8, 0>, < 3, 1, 0>, < 3.5, 0.8, 0>, < 4.5,-1.8, 0>, < 5, -2, 0>, < 5.5,-1.8, 0>, < 7, -1, 0> } #declare Seasnake = merge { object { TubeWork(0.3,S, 17) texture { T_Stone40 } translate < -1.5 , 0.0 , 0.0 > rotate x*90 } object { Sphere scale <0.1,0.1,0.1> translate <-4.2,0.0,-1.23> pigment {Black} } object { Sphere scale <0.1,0.1,0.1> translate <-4.45,0.0,-0.73> pigment {Black} } } ////////////////////////////////////////////////////////////////////// Puffer fish #declare Puffer = merge { difference { merge { //body object{ Sphere scale < 2 , 2 , 0.9*2 > translate<0,2/1.5*-0.6,0> pigment {Goldenrod} normal{ bumps 1.8 scale 0.1 } finish { diffuse 0.9} } //mouth object { Sphere scale <0.3,0.4,0.45> rotate z*10 translate <-1.82,-1.2,0.0> pigment {Goldenrod} finish { diffuse 0.9} } } object { Disk_Z scale <0.4,0.15,0.45> rotate z*10 translate <-2.02,-1.27,0.0> pigment {Goldenrod} finish { diffuse 0.9} } } //fins object { Cone_X scale <0.55,1.05,0.1> rotate z*190 rotate y*20 rotate x*20 translate <0.3,0.0,-1.73> pigment {Goldenrod transmit 0.5} } object { Cone_X scale <0.55,1.05,0.1> rotate z*190 rotate y*-20 rotate x*-20 translate <0.3,0.0,1.73> pigment {Goldenrod transmit 0.5} } //tail object { Cone_X scale <0.55,1.05,0.1> rotate z*185 translate <2.0,-0.5,0.0> pigment {Goldenrod transmit 0.5} } //eyes object { Sphere scale <0.3,0.3,0.3> translate <-1.63,-0.4,-0.6> pigment {Black} } object { Sphere scale <0.3,0.3,0.3> translate <-1.63,-0.4,0.6> pigment {Black} } } ////////////////////////////////////////////////////////////////////// Seahorse #declare SMouth = difference { object { Cone_X scale < 0.7 , 0.35 , 0.35 > translate < 0.0 , 0.0 , 0.0 > } object { Sphere scale < 0.6 , 0.25 , 0.25 > translate < -0.7 , 0.0 , 0.0 > } } #declare SHead = merge { object { Sphere scale < 0.7 , 0.7 , 0.7 > translate < 0.8 , 0.2 , 0.0 > } object { Sphere scale < 0.15 , 0.15 , 0.15 > translate < 0.6 , 0.55 , -0.5 > pigment {Black} } object { Sphere scale < 0.15 , 0.15 , 0.15 > translate < 0.6 , 0.55 , 0.5 > pigment {Black} } object {SMouth translate <0.0,0.1,0.0>} } #declare SBody = difference { merge{ object { Sphere scale < 1.2 , 1.6 , 0.5 > translate < 0.0 , 0.0 , 0.0 > } object { Cone_Y scale <0.5,0.8,0.37> rotate z*-160 translate <0.13,-1.8,0.0> } } object { Cube scale < 1.2 , 1.6 , 0.9 > rotate y*36 translate < 1.0 , -0.0 , 0.7 > } object { Cube scale < 1.2 , 1.6 , 0.9 > rotate y*-36 translate < 1.0 , -0.0 , -0.7 > } } #declare SBFin = intersection { object { Cone_X scale <0.6,2.5,0.1> rotate z*190 translate <0.37,0.0,0.0> pigment {Goldenrod transmit 0.5} } object { Sphere scale <0.6,1.05,0.1> rotate z*10 translate <0.4,0.0,0.0> pigment {Goldenrod transmit 0.5} } } #macro Tail (R, T, W, N) object { sphere_sweep { linear_spline N+1 #local I = 0; #while (I <= N) #local A= 2*pi*W*I/N; #local P = R*I/N; #local X = P*cos(A); #local Y = P*sin(A); , T #local I = I + 1; #end } } #end #declare seahorse = merge { object {SHead rotate z*-15 translate <-0.8,2.2,0.0>} object {SBody rotate z*10} object {SBFin translate <0.2,-0.3,0.0>} object { Tail ( 1.7 , 0.2 , 1.8 , 35.0 ) rotate z*136 translate < -0.6 , -3.05 , 0.0 > } } #declare Seahorse = object {seahorse scale<0.8,0.8,0.8> rotate z*15} ////////////////////////////////////////////////////////////////// Octopus #macro Tentacle (R, T, W, N) object { sphere_sweep { linear_spline N+1 #local I = 0; #while (I <= N) #local A= 2*pi*W*I/N; #local P = R*I/N; #local X = P*cos(A); #local Y = P*sin(A); , T #local I = I + 1; #end } } #end #declare OHead = difference { merge { object { Sphere scale < 0.8 , 0.6 , 0.8 > rotate z*-15 rotate y*20 translate < -0.9 , 3.3 , -2.5 > pigment { Black } } object { Sphere scale < 0.8 , 0.6 , 0.8 > rotate z*15 rotate y*20 translate < 0.9 , 3.3 , -2.5 > pigment { Black } } blob { threshold .65 sphere { <-2.5,0,0>, 4, 9 } sphere { <2.5,0,0>, 4, 9 } rotate z*90 } } object { Cube scale <4.0,3.0,4.0> translate <0.0,-3.1,0.0> } } #declare Octopus = merge { object {OHead} object { Tentacle ( 5.7 , 0.4 , 1.0 , 35.0 ) rotate x*90 rotate y*50 translate < -6.0 , 0.2 , 4.5 > } object { Tentacle ( 6.0 , 0.4 , 0.8 , 40.0 ) rotate x*-90 rotate y*-30 translate < -0.0 , 0.2 , -7.0 > } object { Tentacle ( 5.5 , 0.4 , 1.2 , 35.0 ) rotate z*-80 rotate x*-50 translate < -5.2 , 0.2 , -1.0 > } object { Tentacle ( 6.7 , 0.4 , 1.4 , 95.0 ) rotate x*90 translate < 7.5 , 0.2 , -5.0 > } object { Tentacle ( 6.7 , 0.5 , 1.1 , 65.0 ) rotate x*-90 rotate y*160 rotate z*10 translate < 7.5 , 0.5 , -4.0 > } object { Tentacle ( 6.0 , 0.4 , 1.3 , 55.0 ) rotate x*-90 translate < 4.0 , 0.2 , 7.0 > } object { Tentacle ( 5.5 , 0.4 , 0.8 , 65.0 ) rotate z*20 rotate y*90 translate < -0.0 , 0.2 , 5.5 > } object { Tentacle ( 6.7 , 0.4 , 0.7 , 75.0 ) rotate z*-30 rotate x*60 translate < 3.5 , 0.8 , 5.5 > } } ////////////////////////////////////////////////////////////////// Sea star #macro Stary (R, T, L, W, N) object { sphere_sweep { linear_spline N+1 #local I = 0; #while (I <= N) #local A= 2*pi*W*I/N; #local X = R*cos(A); #local Y = R*sin(A); #local Z = I*L/N; , T #local I = I + 1; #end } } #end #declare Star = object { Stary ( 1.5 , 0.45 , 0.0 , 60.0 , 100.0 ) translate < 0.0 , -3.0 , 0.0 > } ///////////////////////////////////////////////////////////////////// Fish bodys #declare Fish1 = merge { object { Sphere scale < 2.0 , 1.7 , 0.5 > translate < -0.4 , 0.3 , 0.0 > } object { Sphere scale < 0.3 , 0.3 , 0.3 > translate < -1.4 , 0.4 , -0.22 > pigment { Black } } object { Sphere scale < 0.3 , 0.3 , 0.3 > translate < -1.4 , 0.4 , 0.22 > pigment { Black } } } #declare Fish2 = merge { intersection { object { Sphere scale < 2.5 , 1.2 , 0.5 > translate < -0.2 , -0.0 , 0.0 > } object { Sphere scale < 3.0 , 1.9 , 0.5 > rotate z*15 translate < -1.0 , 0.7 , 0.0 > } } object { Sphere scale < 0.3 , 0.3 , 0.3 > translate < -1.6 , 0.2 , -0.18 > pigment { Black } } object { Sphere scale < 0.3 , 0.3 , 0.3 > translate < -1.6 , 0.2 , 0.18 > pigment { Black } } } #declare Fish3 = merge { intersection { object { Sphere scale < 2.5 , 1.2 , 0.5 > translate < -0.4 , 0.3 , 0.0 > } object { Sphere scale < 2.8 , 1.8 , 1.5 > rotate z*-15 translate < -1.1 , 0.15 , 0.0 > } object { Sphere scale < 2.8 , 1.5 , 1.5 > rotate z*15 translate < -1.1 , 0.10 , 0.0 > } } object { Sphere scale < 0.3 , 0.3 , 0.3 > translate < -1.8 , 0.4 , -0.18 > pigment { Black } } object { Sphere scale < 0.3 , 0.3 , 0.3 > translate < -1.8 , 0.4 , 0.18 > pigment { Black } } } //////////////////////////////////////////////////////////////////// Fish tails #declare ft1 = difference { object { Cone_X scale < 0.8 , 0.8 , 0.2 > rotate z*180 translate < -0.7 , -0.0 , 0.0 > } } #declare TailFin1 = object {ft1 scale < 1.8 , 1.4 , 1.1 > translate < 3.0 , 0.4 , 0.0 >} #declare ft2 = difference { object { Cone_X scale < 1.5 , 1.5 , 0.2 > rotate z*180 translate < 0.0 , 0.0 , 0.0 > } object { Cone_X scale < 1.3 , 2.0 , 0.5 > rotate z*180 translate < 0.75 , 0.15 , 0.0 > } } #declare TailFin2 = object {ft2 scale < 1.8 , 1.4 , 1.1 > translate < 3.0 , 0.4 , 0.0 >} #declare ft3 = intersection { object { Sphere scale < 0.6 , 0.6 , 0.1 > translate < -0.5 , -0.1 , 0.0 > } object { Cube scale < 0.6 , 0.55 , 0.1 > translate < -0.45 , -0.1 , 0.0 > } } #declare TailFin3 = object {ft3 scale < 1.8 , 1.6 , 1.1 > translate < 3.0 , 0.5 , 0.0 >} #declare TailFin4 = merge { object { Sphere scale < 0.7 , 0.6 , 0.1 > rotate z*55 translate < 1.8 , 0.7 , -0.0 > } object { Sphere scale < 0.85 , 0.6 , 0.1 > translate < 2.0 , 0.4 , -0.0 > } object { Sphere scale < 0.7 , 0.6 , 0.1 > rotate z*-55 translate < 1.8 , 0.1 , -0.0 > } } /////////////////////////////////////////////////////////////////Fish fins #declare SideFin1 = merge { object { Sphere scale < 0.6 , 0.35 , 0.1 > rotate z*-25 rotate x*5 translate < -0.7 , -0.7 , -0.4 > } object { Sphere scale < 0.6 , 0.35 , 0.1 > rotate z*25 rotate x*-5 translate < 0.7 , -0.7 , -0.4 > rotate y*180 } } #declare ff2 = intersection { object { Sphere scale < 0.7 , 0.4 , 0.1 > rotate z*-45 rotate x*5 translate < -0.7 , -0.73 , -0.38 > } object { Cone_X scale < 0.6 , 0.4 , 0.1 > rotate z*-50 rotate x*5 translate < -0.8 , -0.9 , -0.38 > } } #declare SideFin2 = merge { object {ff2} object {ff2 translate < 0.0 , 0.0 , 0.8 >} } #declare ff3 = merge { object { Sphere scale < 0.6 , 0.4 , 0.1 > rotate z*-85 rotate x*5 translate < -1.6 , -0.68 , -0.38 > } object { Sphere scale < 0.7 , 0.4 , 0.1 > rotate z*-45 rotate x*5 translate < -1.4 , -0.67 , -0.38 > } object { Sphere scale < 0.55 , 0.3 , 0.1 > rotate z*-10 rotate x*5 translate < -1.3 , -0.52 , -0.38 > } } #declare SideFin3 = merge { object {ff3 rotate z* 20 scale < 0.9 , 0.9 , 0.0 > translate < 0.1 , 0.5 , 0.02 >} object {ff3 rotate z* 20 rotate x* -5 translate < 0.0 , 0.0 , 0.7 > translate < 0.1 , 0.5 , -0.08 >} } //////////////////////////////////////////////////////////////////Back fins //F1 BackFins #declare BackFin11 = intersection { object { Cone_X scale < 0.9 , 0.9 , 0.1 > rotate z*-40 translate < -0.2 , 2.1 , 0.0 > } object { Sphere scale < 1.0 , 0.9 , 0.8 > rotate z*-5 translate < -0.1 , 2.0 , 0.0 > } } #declare BackFin12 = difference { merge { object { Sphere scale < 1.0 , 0.6 , 0.1 > rotate z*-35 translate < 0.2 , 1.7 , 0.0 > } object { Cone_Y scale < 0.8 , 0.9 , 0.1 > rotate z*-45 translate < 1.2 , 2.3 , 0.0 > } } object { Sphere scale < 0.95 , 0.9 , 0.7 > rotate z*10 translate < 1.0 , 3.0 , 0.0 > } } #declare BackFin13 = intersection { object { Sphere scale < 0.7 , 1.8 , 0.1 > rotate z*-30 translate < -0.3 , 1.95 , 0.0 > } object { Cone_Y scale < 1.2 , 0.9 , 0.1 > translate < -0.5 , 2.65 , 0.0 > } } #declare BackFin14 = merge { object { Sphere scale < 0.55 , 0.6 , 0.1 > rotate z*55 translate < -0.6 , 1.97 , -0.0 > } object { Sphere scale < 0.55 , 0.75 , 0.1 > rotate z*-10 translate < -0.2 , 2.0 , -0.0 > } object { Sphere scale < 0.5 , 0.6 , 0.1 > rotate z*-55 translate < 0.2 , 1.92 , -0.0 > } } //F2 BackFins #declare BackFin21 = intersection { object { Cone_X scale < 0.8 , 0.9 , 0.1 > rotate z*-35 translate < -0.5 , 1.4 , 0.0 > } object { Sphere scale < 0.9 , 0.9 , 0.8 > rotate z*-5 translate < -0.4 , 1.3 , 0.0 > } } #declare bf22 = difference { merge { object { Sphere scale < 1.0 , 0.6 , 0.1 > rotate z*-15 translate < 0.3 , 1.1 , 0.0 > } object { Cone_Y scale < 0.6 , 0.9 , 0.1 > rotate z*-45 translate < 1.34 , 1.75 , 0.0 > } } object { Sphere scale < 1.1 , 0.9 , 0.7 > rotate z*8 translate < 0.86 , 2.3 , 0.0 > } } #declare BackFin22 = object {bf22 rotate z*12}; #declare BackFin23 = intersection { object { Sphere scale < 0.9 , 1.9 , 0.1 > rotate z*-35 translate < -0.2 , 1.05 , 0.0 > } object { Cone_Y scale < 1.4 , 1.0 , 0.1 > rotate z*-25 translate < -0.4 , 1.75 , 0.0 > } } #declare BackFin24 = merge { object { Sphere scale < 0.55 , 0.6 , 0.1 > rotate z*55 translate < -0.8 , 1.27 , -0.0 > } object { Sphere scale < 0.55 , 0.75 , 0.1 > rotate z*-10 translate < -0.4 , 1.3 , -0.0 > } object { Sphere scale < 0.5 , 0.6 , 0.1 > rotate z*-55 translate < 0.0 , 1.22 , -0.0 > } } //F3 BackFins #declare BackFin31 = intersection { object { Cone_X scale < 0.8 , 0.9 , 0.1 > rotate z*-30 translate < -0.5 , 1.7 , 0.0 > } object { Sphere scale < 0.9 , 0.9 , 0.8 > rotate z*-5 translate < -0.4 , 1.6 , 0.0 > } } #declare bf32 = difference { merge { object { Sphere scale < 1.0 , 0.6 , 0.1 > rotate z*-45 translate < 0.2 , 1.2 , 0.0 > } object { Cone_Y scale < 0.8 , 0.9 , 0.1 > rotate z*-45 translate < 1.1 , 1.8 , 0.0 > } } object { Sphere scale < 0.95 , 0.9 , 0.7 > rotate z*10 translate < 0.9 , 2.5 , 0.0 > } } #declare BackFin32 = object {bf32 rotate z*16}; #declare BackFin33 = intersection { object { Sphere scale < 0.9 , 1.8 , 0.1 > rotate z*-20 translate < -0.4 , 1.45 , 0.0 > } object { Cone_Y scale < 1.4 , 0.9 , 0.1 > rotate z*-10 translate < -0.6 , 2.15 , 0.0 > } } #declare BackFin34 = merge { object { Sphere scale < 0.55 , 0.6 , 0.1 > rotate z*55 translate < -1.0 , 1.57 , -0.0 > } object { Sphere scale < 0.55 , 0.75 , 0.1 > rotate z*-10 translate < -0.6 , 1.6 , -0.0 > } object { Sphere scale < 0.5 , 0.6 , 0.1 > rotate z*-55 translate < -0.2 , 1.52 , -0.0 > } } //////////////////////////////////////////////////////////////////Plants #macro Marimo (S) // looks ok till 4 but up too big and inside ground object{ Sphere scale < S , S , S > translate<0,S/1.5*-0.6,0> pigment{ ForestGreen } normal{ bumps 0.9 scale 0.1 } finish { diffuse 1.7} } #end #declare L = merge { object { Sphere scale < 1.3 , 0.001 , 0.3 > pigment { SeaGreen } } } #declare I=0; #declare R1=seed(510); #declare R2=seed(5010); #declare R3=seed(512); #declare Leafs = merge { #while (I < 150) object { L rotate z*(38*rand(R1)) rotate y*(360*rand(R1)) scale rand(R2) translate<(rand(R1)-0.4)*1.5,(rand(R2)-0.5)*10,(rand(R3)-0.5)*1.5> } #declare I=I+1; #end } #declare I=0; #declare R1=seed(510); #declare R2=seed(5010); #declare R3=seed(512); #declare Leafs2 = merge { #while (I < 300) object { L rotate z*(38*rand(R1)) rotate y*(360*rand(R1)) scale rand(R2) translate<(rand(R1)-0.4)*9,(rand(R2)-0.5)*9,(rand(R3)-0.5)*7> } #declare I=I+1; #end } #declare Weed2 = merge { object { Disk_Y scale < 0.1 , 4.5, 0.1 > rotate x*10 translate < 0.0 , -0.2 , 2.0 > pigment { SeaGreen } } object { Disk_Y scale < 0.1 , 4.6, 0.1 > rotate z*-20 translate < 2.8 , -0.7 , 0.0 > pigment { SeaGreen } } object { Disk_Y scale < 0.1 , 4.0, 0.1 > rotate z*10 rotate x*-10 translate < -2.0 , -0.7 , -1.5 > pigment { SeaGreen } } } #declare Weed = object { Disk_Y scale < 0.1 , 5.0, 0.1 > translate < 0.0 , 0.0 , 0.0 > pigment { SeaGreen } }; #macro Seaweed1 (W,H) object { merge { object { Weed } object { Leafs } } scale < W , H , W > translate < 0.0 , 1.0 , 0.0 > } #end #macro Seaweed2 (W,H) object { merge { object { Weed2 } object { Leafs2 } } scale < W , H , W > translate < 0.0 , 1.0 , 0.0 > } #end #macro Seaweed3 (W,H) object{ merge { object { Sphere scale < 1.0 , 2.0 , 0.05 > rotate z*-15 translate < -0.3 , 5.5 , 0.0 > pigment{ SeaGreen } normal{ bumps 0.3 scale 0.7 } } object { Sphere scale < 1.0 , 2.0 , 0.05 > rotate z*15 translate < 0.1 , 3.0 , 0.0 > pigment{ SeaGreen } normal{ bumps 0.3 scale 0.7 } } object { Sphere scale < 1.0 , 2.0 , 0.05 > rotate z*-15 translate < -0.3 , 0.5 , 0.0 > pigment{ SeaGreen } normal{ bumps 0.3 scale 0.7 } } object { Sphere scale < 1.0 , 2.0 , 0.05 > rotate z*15 translate < 0.1 , -2.0 , 0.0 > pigment{ SeaGreen } normal{ bumps 0.3 scale 0.7 } } object { Sphere scale < 1.0 , 2.0 , 0.05 > rotate z*-15 translate < -0.3 , -4.5 , 0.0 > pigment{ SeaGreen } normal{ bumps 0.3 scale 0.7 } } } } #end #declare Seafloor = object{ Plane_XZ translate<0,-5.0,0> texture{ Brown_Agate } normal{ bumps 0.9 scale 0.9 } } #declare Waterpool = object { Cube scale < 200.5 , 200.5 , 400.5 > translate < 1.25 , 0.0 , 0.0 > texture { Water } } background { color LightBlue } light_source { <0, 100, -100> // 照明の位置 color White*1 } light_source { <-500, -200, 600> // 照明の位置 color White*1 } // カメラ camera{ location < 0.0, 10.0, -30.0> // カメラの位置 look_at <0.0, 0.0, 0.0> // カメラの注目する位置 angle 35 // カメラの視野角 }