#include "colors.inc" #include "macros.inc" #include "glass.inc" #include "metals.inc" #include "woods.inc" #version 3.1; camera { location <50,40,-50> look_at <50,15,50> } light_source { <300,300,-300> .6 } light_source { <-40,300,-300> .6 } light_source { <300,300,40> .6 } /*-------------------------------------------------------- TREE FOLIAGE MACRO -----------------------------------------------*/ #macro spiral(h1,r1,r2,h2,r3,r4,freq,res,q) #local tot=(r2+r4)*res*.5; #local cmp=0; #local rat=0; #local ctr=0; blob { #while (ctr<1) sphere { ,r4+(r2-r4)*rat+q,1 } #local cmp=cmp+(r4*(1-ctr)+r2*ctr); #local rat=cmp/tot; #local ctr=ctr+1/res; #end threshold .01 } #end /*----------------------------------------------------------- TREE STRUCTURE MACRO --------------------------------------------*/ #macro spiralbranch(h1,r1,r2,h2,r3,r4,h3,r5,r6,r7,r8,freq,num) #local tot=(r2+r4)*num*.5; #local cmp=0; #local rat=0; #local ctr=0; union { #while (ctr<1) #if (ctr != 0) cylinder { <0,h2+(h1-h2)*rat,0>, , r8+(r7-r8)*rat } #end #local cmp=cmp+(r4*(1-ctr)+r2*ctr); #local rat=cmp/tot; #local ctr=ctr+1/num; #end cone { <0,0,0>,r5 <0,h3,0>,r6 } sphere { <0,h3-(abs(r3-r1)/abs(h2-h1))*r6,0>,1/cos(atan2(abs(r3-r1),abs(h2-h1)))*r6 } } #end /*--------------------------------------------------------------- SCENE ------------------------------------------------------*/ plane { y,0 pigment { bozo color_map { [0.0 color .5*(Feldspar+MediumForestGreen)][1.0 MediumForestGreen] } scale 10 } normal { bumps .5 scale .05 } hollow } sky_sphere { pigment { bozo color_map { [0.0 Gray85][0.1 Gray75][0.5 Gray75][0.5 SkyBlue][1.0 SkyBlue] } turbulence .2 scale 50 } } fog { Gray75 fog_type 2 distance 150 turbulence 1 fog_offset 12 fog_alt 20 } //fog { Gray75 fog_type 1 distance 500 turbulence 1 } #declare minh=20; #declare maxh=40; #declare res=2000; #declare minb=50; #declare maxb=80; #declare minh2=3; #declare maxh2=6; #declare minsr1=7; #declare maxsr1=13; #declare miner1=0; #declare maxer1=0; #declare minsr2=1; #declare maxsr2=2; #declare miner2=.1; #declare maxer2=.2; #declare minf=7; #declare maxf=12; #declare minha=.3; #declare maxha=1; #declare mintsr=1; #declare maxtsr=2; #declare minter=.1; #declare maxter=.4; #declare num=2000; #declare minx=-400; #declare maxx=500; #declare minz=-50; #declare maxz=900; #declare Bradr=.6; #declare QRSed=1; #declare Qrnd=seed(QRSed); #declare ctr=0; #while (ctr.5) #declare SCX=1; #else #declare SCX=-1; #end union { // Foliage object { spiral(baseh,Msrad,msrad,foilh,Merad,merad,freq,res,0) pigment { average pigment_map { [rand(Qrnd) color SpringGreen] [rand(Qrnd) color ForestGreen] [rand(Qrnd) color DarkGreen] [rand(Qrnd) color HuntersGreen] } } normal { bumps .5 scale .1 } } // Branches object { spiralbranch(baseh,Msrad,msrad,foilh,Merad,merad,foilh+hadd,Tsrad,Terad,msrad*Bradr,merad*Bradr,freq,NumBr) pigment { average pigment_map { [rand(Qrnd) color Tan] [rand(Qrnd) color BakersChoc] [rand(Qrnd) color DarkWood] } } normal { crackle 1 slope_map { [0.0,<.4,-2>][0.2,<-.1,-.5>][0.5,<-.2,-.1>][1.0,<-.3,0>] } scale .2 } } scale translate } #declare ctr=ctr+1; #end