POV-Ray : Newsgroups : povray.binaries.images : Well, well, well ... : Re: Well, well, well ... Server Time
7 Aug 2024 21:20:41 EDT (-0400)
  Re: Well, well, well ...  
From: Trevor G Quayle
Date: 8 Feb 2006 11:40:00
Message: <web.43ea1e47ff3237486c4803960@news.povray.org>
"Bruno Cabasson" <bru### [at] alcatelaleniaspacefr> wrote:
> Here is a try for a well in the water for bringing soil. Usually, it is the
> contrary :)
>
>    Bruno

Nice scene so far. A couple pointers for you:

1) add some radial ripples from the well to the water surface to give a
better wave interference look

2) the problem with the brick pattern is that it really only works well with
planar objects not with cylinders as you may notice.  There are a few ways
to get the look you want. The best way is to individually model the bricks
and mortar obviously, but if you want to make it simpler there are a few
options.  The following simple scene shows two methods, one using
texture_map and the other using the object pattern.  I have implemented
them both as full textures, but they can be demoted to pigments only by
altering the appropriate keywords.  (It may also be done using the brick
pattern with a cylindrical warp, but I was having difficulty getting the
control I wanted on it)

-tgq

SCENE FOLLOWS:

//start
camera {
  location 0
  look_at <0,600,-600>
  angle 50
}
light_source{0
  rgb 1
  fade_power 2
  fade_distance 1500
  translate <0,800,-500>
}

#declare BHt=20; //brick height
#declare BTh=20; //brick thickness
#declare MSz=5;  //mortar thickness
#declare THt=BHt+MSz;
#declare NBrick=12;//number bricks around circumference
#declare WellDia=200;//well ouside diameter
#declare BLn=WellDia*pi/NBrick;//calculated length of brick

#declare TBrick= //brick texture
  texture{
    pigment{rgb<1,0,0>}
    finish{ambient 0 diffuse 0.7}
    normal{granite .5 scale .25}
  }

#declare TMort= //mortar texture
  texture{
    pigment{rgb 1}
    finish{ambient 0 diffuse 0.7}
    normal{bumps .5 scale .01}
  }

#declare TRBrick1= //radial brick texture using texture_map
  texture{
    gradient y
    texture_map{
      [0             TMort]
      [(MSz/THt)/2   TMort]
      [(MSz/THt)/2   radial texture_map{[(MSz/BLn) TMort] [(MSz/BLn)
TBrick]} frequency NBrick]
      [1/2           radial texture_map{[(MSz/BLn) TMort] [(MSz/BLn)
TBrick]} frequency NBrick]
      [1/2           TMort]
      [(1+MSz/THt)/2 TMort]
      [(1+MSz/THt)/2 radial texture_map{[(MSz/BLn) TMort] [(MSz/BLn)
TBrick]} frequency NBrick rotate y*(360/NBrick/2)]
      [1             radial texture_map{[(MSz/BLn) TMort] [(MSz/BLn)
TBrick]} frequency NBrick rotate y*(360/NBrick/2)]
    }
    scale THt*2
  }

#declare RBrickOb=
intersection{
  union{
    #local j=0;#while(j<2)
      intersection{
        plane{ y, MSz}
        plane{-y, 0}
        translate y*(BHt+MSz)*j
      }
      #local i=0;#while(i<NBrick)
        intersection{
          plane{-y, -MSz/2}
          plane{ y, (BHt+MSz+MSz/2)}
          plane{ z, 0}
          plane{ x, MSz/2}
          plane{-x, MSz/2}
          rotate y*(i+j/2)*360/NBrick
          translate y*(BHt+MSz)*j
        }
      #local i=i+1;#end
    #local j=j+1;#end
  }
}

#declare TRBrick2= //radial brick texture using object pattern
  texture{
    object{
      RBrickOb
      texture{TBrick}
      texture{TMort}
    }
    warp{repeat y*(BHt+MSz)*2}
  }

difference{
  cylinder{<0,-100,0> <0,150,0> WellDia/2}
  cylinder{<0,-300,0> <0,300,0> WellDia/2-BTh}
  texture{TRBrick1 translate y*150.001}
  translate <-WellDia*0.6,0,0>
}

difference{
  cylinder{<0,-100,0> <0,150,0> WellDia/2}
  cylinder{<0,-300,0> <0,300,0> WellDia/2-BTh}
  texture{TRBrick2 translate y*150.001}
  translate <WellDia*0.6,0,0>
}
//end


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.