POV-Ray : Newsgroups : povray.binaries.images : object_pattern fun Server Time
25 Apr 2024 08:06:34 EDT (-0400)
  object_pattern fun (Message 6 to 15 of 15)  
<<< Previous 5 Messages Goto Initial 10 Messages
From: Thomas de Groot
Subject: Re: object_pattern fun
Date: 14 Oct 2019 02:43:33
Message: <5da41915$1@news.povray.org>
Op 13/10/2019 om 22:55 schreef Cousin Ricky:
> On 2019-10-13 7:18 AM (-4), Thomas de Groot wrote:
>> Nothing fanciful or special; just messing around with object patterns...
> 
> Here are a couple of scenes that relied heavily on object patterns.  The 
> flags are 100% procedural.  The U.S. Virgin Islands flag required 
> multiple layers of object patterns, and I somehow accomplished this 
> before Blue Herring published his wonderful MultiObjectPattern macros. 
> The Ohio flag as a whole is an object pattern with a transparent 
> background for the non-rectangular outline.
> 
> Tip:  I had to make the Ohio flag hollow, even though it is an open 
> mesh, to avoid killing the sky fog behind it.

Holly Molly! I was just leaning back with a self-satisfied grin on my 
face, and there you come shattering my rosy bubble! :-)

This is impressive indeed. I was (tentatively) thinking about building 
multi-layered object patterns, just not yet knowing how to go about that...

Hey! I have those Blue Herring macros buried somewhere in my vault! Got 
to haul them out. Thanks for the reminder indeed.

Aside: There are so many goodies produced by the community over the 
years that many tend to get lost. A pity indeed. I am not sure what we 
can do about this...

-- 
Thomas


Post a reply to this message

From: Bald Eagle
Subject: Re: object_pattern fun
Date: 14 Oct 2019 09:05:00
Message: <web.5da47155a64722ab4eec112d0@news.povray.org>
Thomas de Groot <tho### [at] degrootorg> wrote:

> Aside: There are so many goodies produced by the community over the
> years that many tend to get lost. A pity indeed. I am not sure what we
> can do about this...

Yes, we certainly have a LOT of archived material that if nothing else, needs to
be centralized and indexed.

Perhaps if we had a wiki page or used some other forum / image page / etc
(solely due to recent spam) then perhaps a few starter pages could be
established with code and a sample image, and proper semantic versioning for the
filenames.
V1.0 for all / the last version of the original

Then maybe interested folks could clean up the original code, decipher things,
and add clarifying comments.   V2.0

Sometimes it only comes down to a clever trick, an interesting snippet of code,
or a well implemented piece of math/geometry that would be more generally useful
as a function or a macro.  That could be snipped out and encapsulated, and
hopefully get rolled into the Insert Menu, which would really help save them and
make them accessible.

I know certain forums allow things like polls and voting - perhaps if someone
knows of something like that which we can use, then maybe there can be some sort
of automated dump from the POV-Ray website to generate the initial threads, and
then things can be sorted into material to be deleted (it still remains where we
got it from - include an index entry with a hyperlink), "don't know what it is -
investigate further", back burner stuff, and things that are promising to be
developed (based on votes).
There's likely going to be a lot of "here's an image that we'd love to know how
to make, but the source was lost / never provided" - can someone figure out how?


Maybe Mr. Balaska can give us an idea of the volume of material archived on the
server in GB (sans images).


Then maybe just to make a simple, fun, easily participated in game - there could
be a "find the coolest [remaining] historical post" to get people to dig through
the pile, render scenes (in 3.8), and release the worms from the can.  :)


Post a reply to this message

From: Thomas de Groot
Subject: Re: object_pattern fun
Date: 16 Oct 2019 07:21:04
Message: <5da6fd20@news.povray.org>
Op 13/10/2019 om 22:55 schreef Cousin Ricky:
> On 2019-10-13 7:18 AM (-4), Thomas de Groot wrote:
>> Nothing fanciful or special; just messing around with object patterns...
> 
> Here are a couple of scenes that relied heavily on object patterns.  The 
> flags are 100% procedural.  The U.S. Virgin Islands flag required 
> multiple layers of object patterns, and I somehow accomplished this 
> before Blue Herring published his wonderful MultiObjectPattern macros. 
> The Ohio flag as a whole is an object pattern with a transparent 
> background for the non-rectangular outline.
> 
> Tip:  I had to make the Ohio flag hollow, even though it is an open 
> mesh, to avoid killing the sky fog behind it.

Following my own thoughts and investigations about multi-layered object 
patterns just make me appreciate even more your achievement, as layered 
textures cannot make use of any patterned one (as object patterns 
obviously are). The only way I see would be to use separate CSG object 
layers with an extremely thin interface. I think you did refer to that 
in your comment above about the Virgin Islands flag.

-- 
Thomas


Post a reply to this message

From: Bald Eagle
Subject: Re: object_pattern fun
Date: 16 Oct 2019 13:50:01
Message: <web.5da75784a64722ab4eec112d0@news.povray.org>
Thomas de Groot <tho### [at] degrootorg> wrote:

> ... layered
> textures cannot make use of any patterned one (as object patterns
> obviously are). The only way I see would be to use separate CSG object
> layers with an extremely thin interface.


I made some signs for a W that's still IP, maybe you can play with the code and
see about expanding on it for your own purposes.


#macro LetterSign (_Letter, _Color)
 #local SignWidth = 38;
 #local SignHeight = 24;
 #local TextScale = 22;
 #local RoundSquare = intersection {
  box {<-SignWidth/2, -SignHeight/2, -0.01>, <SignWidth/2 , SignHeight/2,
-0.125>}
  object {Round_Box(<-SignWidth/2, -SignHeight/2, -1>, <SignWidth/2,
SignHeight/2, 1>, 2   , 0) scale <1, 1, 1>}
 }

 #local Border = difference {
  object {RoundSquare scale <0.9, 0.9, 1.1>}
  object {RoundSquare scale <0.8, 0.8, 2>}
 }

 #local Object1 = text {ttf "GILB____.TTF", _Letter, 1, <0, 0> scale TextScale
translate <-8, -7, -0.5>}
 #local Object2 = object {Border}

 #local Texture1 =
 texture {
  pigment {
   object {Object1
   color rgb <1, 1, 1>*0.5 // outside
   color rgb _Color //color rgb <1, 0, 0>*0.5 // inside
   } // object
  } // pigment
 }
 #local Texture2 =
 texture {
  pigment {
   object {Object2
   color rgbf <1, 1, 1, 1>   // outside
   color rgb _Color //color rgb  <0, 1, 0>*0.05 // inside
   } // object
  } // pigment
 }
 object {RoundSquare texture {Texture1} texture {Texture2} translate y*12}

#end // end macro LetterSign


Post a reply to this message

From: Thomas de Groot
Subject: Re: object_pattern fun
Date: 17 Oct 2019 02:21:20
Message: <5da80860@news.povray.org>
Op 16/10/2019 om 19:46 schreef Bald Eagle:
> I made some signs for a W that's still IP, maybe you can play with the code and
> see about expanding on it for your own purposes.
> 
> 
> #macro LetterSign (_Letter, _Color)
>   #local SignWidth = 38;
>   #local SignHeight = 24;
>   #local TextScale = 22;
>   #local RoundSquare = intersection {
>    box {<-SignWidth/2, -SignHeight/2, -0.01>, <SignWidth/2 , SignHeight/2,
> -0.125>}
>    object {Round_Box(<-SignWidth/2, -SignHeight/2, -1>, <SignWidth/2,
> SignHeight/2, 1>, 2   , 0) scale <1, 1, 1>}
>   }
> 
>   #local Border = difference {
>    object {RoundSquare scale <0.9, 0.9, 1.1>}
>    object {RoundSquare scale <0.8, 0.8, 2>}
>   }
> 
>   #local Object1 = text {ttf "GILB____.TTF", _Letter, 1, <0, 0> scale TextScale
> translate <-8, -7, -0.5>}
>   #local Object2 = object {Border}
> 
>   #local Texture1 =
>   texture {
>    pigment {
>     object {Object1
>     color rgb <1, 1, 1>*0.5 // outside
>     color rgb _Color //color rgb <1, 0, 0>*0.5 // inside
>     } // object
>    } // pigment
>   }
>   #local Texture2 =
>   texture {
>    pigment {
>     object {Object2
>     color rgbf <1, 1, 1, 1>   // outside
>     color rgb _Color //color rgb  <0, 1, 0>*0.05 // inside
>     } // object
>    } // pigment
>   }
>   object {RoundSquare texture {Texture1} texture {Texture2} translate y*12}
> 
> #end // end macro LetterSign

Mmm... I have to investigate this. At first glance, you seem to be doing 
what I failed to do one way or another. Thanks!

-- 
Thomas


Post a reply to this message

From: Thomas de Groot
Subject: Re: object_pattern fun
Date: 18 Oct 2019 07:36:55
Message: <5da9a3d7$1@news.povray.org>
Op 17/10/2019 om 08:21 schreef Thomas de Groot:
> Op 16/10/2019 om 19:46 schreef Bald Eagle:
>> I made some signs for a W that's still IP, maybe you can play with the 
>> code and
>> see about expanding on it for your own purposes.
>>
> 
> Mmm... I have to investigate this. At first glance, you seem to be doing 
> what I failed to do one way or another. Thanks!
> 

Right. I clarified things for myself. I obviously made a bit of a mess 
of my code. ;-)

So, the layering of the following two textures /is/ possible:

//------------------------------------------
#local T_Rose1 =
texture {
   pigment {
     object {Rose1
       rgbt <1, 1, 1, 1>   // outside object
       rgb <1, 1, 0>       // inside object
     }
   }
   normal {ripples 2.0 scale 0.1}
   finish {diffuse 0.8 specular 0.25 roughness 0.001}
}

#local T_Rose2 =
texture {
   pigment {
     object {Rose2
       rgbt <1, 1, 1, 1>   // outside object
       rgb <0, 1, 0>       // inside object
     }
   }
   normal {granite 2.0}
   finish {diffuse 0.8 specular 0.25 roughness 0.001}
}
//------------------------------------------

The layering of the following two textures /is not/ possible because 
they are patterned:

//------------------------------------------
#local T_Rose1_alt =
texture {
   object {Rose1
     texture {pigment {rgbt <1, 1, 1, 1>}}   // outside object
     texture {pigment {P_star1}}             // inside object
   }
}

#local T_Rose2_alt =
texture {
   object {Rose2
     texture {pigment {rgbt <1, 1, 1, 1>}}   // outside object
     texture {pigment {P_star2}}             // inside object
   }
}
//------------------------------------------

Individually however, they can be used.

-- 
Thomas


Post a reply to this message

From: Thomas de Groot
Subject: Re: object_pattern fun
Date: 21 Oct 2019 07:17:49
Message: <5dad93dd@news.povray.org>
For those interested, I have investigated some  layered textures making 
use - one way or another - of object patterns, over a basic brown texture.

1 - Upper left: one single texture with an object_pattern;
2 - Upper right: two layered textures, each with a different object_pattern;
3 - Lower left: using a pigment_pattern to control two different 
object_patterns;
4 - Lower right: two layered textures, each with a pigment_pattern 
controlling an object_pattern.

2 and 4 have identical results, but 2 is simpler and more comprehensive 
in use. I guess that a large number of different texture possibilities 
can be derived from these examples.

I shall put the scene file in p.b.scene-files.

-- 
Thomas


Post a reply to this message


Attachments:
Download 'object_pattern_var_test.png' (366 KB)

Preview of image 'object_pattern_var_test.png'
object_pattern_var_test.png


 

From: Paolo Gibellini
Subject: Re: object_pattern fun
Date: 21 Oct 2019 11:58:01
Message: <5dadd589$1@news.povray.org>
Thomas de Groot wrote on 21/10/2019 13:17:
> For those interested, I have investigated some  layered textures making 
> use - one way or another - of object patterns, over a basic brown texture.
> 
> 1 - Upper left: one single texture with an object_pattern;
> 2 - Upper right: two layered textures, each with a different 
> object_pattern;
> 3 - Lower left: using a pigment_pattern to control two different 
> object_patterns;
> 4 - Lower right: two layered textures, each with a pigment_pattern 
> controlling an object_pattern.
> 
> 2 and 4 have identical results, but 2 is simpler and more comprehensive 
> in use. I guess that a large number of different texture possibilities 
> can be derived from these examples.
> 
> I shall put the scene file in p.b.scene-files.
> 
Nice results!
Paolo


Post a reply to this message

From: Bald Eagle
Subject: Re: object_pattern fun
Date: 24 Oct 2019 19:10:00
Message: <web.5db22e5fa64722ab4eec112d0@news.povray.org>
"Bald Eagle" <cre### [at] netscapenet> wrote:

> #macro LetterSign (_Letter, _Color)

blah blah blah...



I was sifting through all the code in my head, and wanted to do some marking of
the surface of my newly made prism thing.
Indenting the surface with a difference had its merits, but I wanted good
visibility without changing the geometry.

So I thought that using the objects in an object pattern would be cool - but
make it so that they went all the way through from one side to the other.

Based upon my past lessons and experiments with functions, and the excellent
advice of Mr. Pokorny, I figured I could plug the object pattern into a
function, and use that as a pigment - but scale it infinitely along one axis.

A further experiment - just jotting this down here for the future - would be to
do an intersection of 3 such orthogonal patterns, probably via an isosurface, to
get an "object" like you might cut out of a block of wood marked on 3 faces -
for further processing.   Perhaps add in some of that smoothing that I worked
on...


Anyway, here's a scene showing the infinitely scaled object pattern, to produce
a silhouette.

The view is from the top, of horizontal slices, and then the sides are 2 boxes
sliced through x-y and rotated to face up, showing the effect.



#version 3.8;

global_settings {
 assumed_gamma 1.0
}

#include "colors.inc"

#declare Aspect = image_width/image_height;
camera {
 location <0.9, 15, -0.1>
 right x*Aspect
 look_at <0.9, 0, 0>
}

light_source {<40, 10, -5> color White}
plane {y, -3 pigment {White}}

#declare Object =
pigment {
 object {
  sphere { <0,0,0>, 0.5 }
  color rgb <1, 0, 0>,
  color rgb <0, 1, 0>
 }
}

// Make a 2-unit box patterned with the
#declare Box = box {-1, 1 }

#declare S = 0.1;
#declare Slice = box {<-1, 0, -1> <1, -S, 1>}

#for (M, -0.3, 0.3, S)
 intersection {
  object {Slice translate y*4*M}
  object {Box}
  texture {
   pigment {Object}
   normal {agate 0.1 scale 0.0001}
   finish {specular 0.1}
  }
  translate z*3
  translate x*M*21
  no_shadow
 }
#end

difference {
 object {Box pigment {Object}}
 box {<-3, -3, -3>, <3, 3, 0>}
 cutaway_textures
 rotate x*90
 translate <-8, 0, 3>
 no_shadow
}

#declare F_Object = function {pigment {Object}}

#for (M, -0.3, 0.3, S)
 intersection {
  object {Slice translate y*4*M}
  object {Box}
  texture {
   // give function pigment an infinite y scaling
   pigment {function {F_Object (x, 0, z).red}
    color_map {
     [0.0  rgb <1, 0, 0>]
     [1.0  rgb <0, 1, 0>]
    }
   }
   normal {agate 0.1 scale 0.0001}
   finish {specular 0.1}
  }
  translate -z*1
  translate x*M*21
  no_shadow
 }
#end

difference {
 box {<-1, -5, -1>, <1, 5, 1>
 pigment {function {F_Object (x, 0, z).red}
    color_map {
     [0.0  rgb <1, 0, 0>]
     [1.0  rgb <0, 1, 0>]
    }
   }
  }
 box {<-3, -6, -3>, <3, 6, 0>}
 cutaway_textures
 rotate x*90
 translate <8, 0, 0>
 no_shadow
}


Post a reply to this message


Attachments:
Download 'objectsilhouette.png' (200 KB)

Preview of image 'objectsilhouette.png'
objectsilhouette.png


 

From: Thomas de Groot
Subject: Re: object_pattern fun
Date: 25 Oct 2019 03:09:18
Message: <5db29f9e@news.povray.org>
Op 25/10/2019 om 01:06 schreef Bald Eagle:
> "Bald Eagle" <cre### [at] netscapenet> wrote:
> 
>> #macro LetterSign (_Letter, _Color)
> 
> blah blah blah...
> 
> 
> 
> I was sifting through all the code in my head, and wanted to do some marking of
> the surface of my newly made prism thing.
> Indenting the surface with a difference had its merits, but I wanted good
> visibility without changing the geometry.
> 
> So I thought that using the objects in an object pattern would be cool - but
> make it so that they went all the way through from one side to the other.
> 
> Based upon my past lessons and experiments with functions, and the excellent
> advice of Mr. Pokorny, I figured I could plug the object pattern into a
> function, and use that as a pigment - but scale it infinitely along one axis.
> 

Yes, that should be the way to do it. Using CSG objects, like I did, in 
their simplest form, result of course in different "cut outs" related to 
their position in space.

> A further experiment - just jotting this down here for the future - would be to
> do an intersection of 3 such orthogonal patterns, probably via an isosurface, to
> get an "object" like you might cut out of a block of wood marked on 3 faces -
> for further processing.   Perhaps add in some of that smoothing that I worked
> on...
> 

Yes.

> 
> Anyway, here's a scene showing the infinitely scaled object pattern, to produce
> a silhouette.
> 
> The view is from the top, of horizontal slices, and then the sides are 2 boxes
> sliced through x-y and rotated to face up, showing the effect.
> 
[snip]
Yes.

-- 
Thomas


Post a reply to this message

<<< Previous 5 Messages Goto Initial 10 Messages

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