|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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'
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"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'
|
|
| |
| |
|
|
|
|
| |
| |
|
|
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
|
|
| |
| |
|
|
|
|
| |
|
|