POV-Ray : Newsgroups : povray.newusers : how to create a wall made of stones : Re: how to create a wall made of stones Server Time
30 Jul 2024 04:16:20 EDT (-0400)
  Re: how to create a wall made of stones  
From: dan B hentschel
Date: 12 Oct 2004 09:15:00
Message: <web.416bd885d1ea55e5a3fcf12a0@news.povray.org>
"blenderhead" <nomail@nomail> wrote:
>
>  --------------   -----------------   ------------------   ----------------
> |Brick with    | |another brick    | |...texture that   | |...by the mortar|
> |stone texture | |with similar...  | | is interrupted...| |                |
>  --------------   -----------------   ------------------   ----------------
>
> Any idea how I could do this?

You can use a variation on my wood floor routine, pasted at the bottom of
this message. I will post an image of the output into the
povray.binary.images group so you can see if this is the type of thing you
are looking for.

 - dan B hentschel




#macro M_Wood1A(r,g,b)
    [0.0, 0.1 color rgb <0.88*r, 0.60*g, 0.40*b>
              color rgb <0.88*r, 0.60*g, 0.40*b>]
    [0.1, 0.9 color rgb <0.88*r, 0.60*g, 0.40*b>
              color rgb <0.60*r, 0.30*g, 0.20*b>]
    [0.9, 1.0 color rgb <0.60*r, 0.30*g, 0.20*b>
              color rgb <0.60*r, 0.30*g, 0.20*b>]
#end

#macro M_Wood1B(r,g,b)
    [0.0, 0.1 color rgbt <0.55*r, 0.32*g, 0.20*b, 0.100>
              color rgbt <0.55*r, 0.32*g, 0.20*b, 0.500>]
    [0.1, 0.2 color rgbt <0.55*r, 0.35*g, 0.20*b, 0.650>
              color rgbt <0.88*r, 0.60*g, 0.40*b, 0.975>]
    [0.2, 0.3 color rgbt <0.88*r, 0.60*g, 0.40*b, 0.975>
              color rgbt <0.60*r, 0.30*g, 0.20*b, 1.000>]
    [0.3, 0.4 color rgbt <0.60*r, 0.30*g, 0.20*b, 0.100>
              color rgbt <0.60*r, 0.30*g, 0.20*b, 0.500>]
    [0.4, 0.9 color rgbt <0.60*r, 0.30*g, 0.20*b, 0.650>
              color rgbt <0.88*r, 0.60*g, 0.40*b, 0.975>]
    [0.9, 1.0 color rgbt <0.88*r, 0.60*g, 0.40*b, 0.975>
              color rgbt <0.55*r, 0.32*g, 0.20*b, 1.000>]
#end

#declare P_WoodGrain1A =
pigment {
    wood
    turbulence 0.04
    octaves 3
    scale <0.05, .05, 1>
}

#declare P_WoodGrain1B =
pigment {
    wood
    turbulence <0.1, 0.5, 1>
    octaves 5
    lambda 3.25
    scale <0.15, .5, 1>
    rotate <5, 10, 5>
    translate -x*2
}

#declare floor_sd=seed(12);

#macro wood_floor_texture(r,g,b)
    #if (simple_blocks)
        pigment { color rgb <0.88*r, 0.60*g, 0.40*b> }
    #else
        #declare tex_scale = 0.8 + rand(floor_sd)*0.4;
        #declare tex_rotate = y * (rand(floor_sd)*10 - 20);
        #declare tex_translate = rand(floor_sd)*5;
        texture {
            pigment { P_WoodGrain1A  color_map { M_Wood1A(r,g,b) } }
            scale tex_scale
            rotate tex_rotate
            translate tex_translate
        }
        texture {
            pigment { P_WoodGrain1B  color_map { M_Wood1B(r,g,b) } }
            scale tex_scale
            rotate tex_rotate
            translate tex_translate
        }
        finish {
            specular 0.3
            roughness 0.3
            ambient 0
            diffuse 0.4
            reflection 0.05
        }
        normal {
            wood
            turbulence 0.04
            octaves 3
            scale <0.05, .02, 1>
        }
    #end
#end

#macro wood_floor(board_spacing, board_width, board_length, nails,
floor_width, floor_length)
    union {
        #declare x_pos=-floor_width;
        #while (x_pos<floor_width)
            #declare first_board=rand(floor_sd)*board_length;
            #declare z_pos=-floor_length;
            #while (z_pos<floor_length)
                #declare board_lighten = rand(floor_sd)*0.3+0.85;
                #if (first_board>0)
                    box {
                        <x_pos, -1, z_pos>
                        <x_pos+board_width, 0, z_pos+first_board>
                        wood_floor_texture(
                            (rand(floor_sd)*0.1+0.95)*board_lighten,
                            (rand(floor_sd)*0.1+0.95)*board_lighten,
                            (rand(floor_sd)*0.1+0.95)*board_lighten
                        )
                    }
                    #declare z_pos = z_pos + first_board + board_spacing;
                    #declare first_board=0;
                #else
                    box {
                        <x_pos, -1, z_pos>
                        <x_pos+board_width, 0, z_pos+board_length>
                        wood_floor_texture(
                            (rand(floor_sd)*0.1+0.95)*board_lighten,
                            (rand(floor_sd)*0.1+0.95)*board_lighten,
                            (rand(floor_sd)*0.1+0.95)*board_lighten
                        )
                    }
                    #declare first_board=0;
                    #declare z_pos = z_pos + board_length + board_spacing;
                #end
            #end
            #declare x_pos = x_pos + board_width + board_spacing;
        #end
    }
#end

#if (do_board_floor)
object {
    wood_floor(0.005, 2, 14, 0, -left_wall, -back_wall)
}
#else
box {
    <left_wall,-1,back_wall>
    <right_wall,0,7>
    wood_floor_texture(1,1,1)
}
#end


Post a reply to this message

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