|
|
Josh English <eng### [at] spiritonecom> wrote in message
news:36F### [at] spiritonecom...
> I realize that development of the next system is way off, but I hope
> somebody is taking notes.
>
> I'd like to see a new kind of warp that simply applies regular
> turbulence in a predefined area and the turbulence becomes less and
> less until it hits the threshold and then no turbulence is applied. I
> know that you can do the same thing by using a spherical pattern such as
> this:
>
> pigment { spherical
> pigment_map { [ 0.0 marble ] [ 1.0 marble turbulence
> 1.0 ] } }
IIRC, even this doesn't do quite what you want. It creates a fade
from a turbulent marble to a nonturbulent marble. In the middle you
see both, superimposed.
What would be be nice here would be one of two things:
either permitting a warp{pigment} syntax, with the red,green,
and blue components of the pigment interpreted as x,y,z directions
for warp [maybe t as radial and f as circular in the xy plane ?] or
(less kludgily) allowing any pattern to be a warp,with a "displacement
map". The fundamental
Thus: warp{marble displacement_map{[0 x][1 y]}} would
a warp that displaced in a varying direction, depending on position. The
point would be that the warp, not the resulting texture,would interpolate.
A nonobvious but useful feature would be to interpret list patterns -
those with large uniform patches, such as checker, hexagon, brick - as
having a consistent random offset for each cell, with the scale of the
displacement specified by a vector. To warp any point within a specified
cell, 3D noise would be invoked at the "center" of that cell, multiplied by
the scale vector, and applied. So
pigment{MyMarble warp{checker 1}}
would create "tiles" that appeared to be "cut from the same quarry" but not
(as now with checkered marble tiles) with features obviously running from
tile <0,0> to tile <1,1> .
Another possibility would be as follows: make the list patterns warp in
the obvious way, but have a random variant of each as a general pattern -
which warps consistently with its coloring, normal-perturbing, etc,
behaviour. Because its syntax differs it would _probably_ be easier
to make the "random" part of the pattern name and not a modifier. So:
pigment{checker_random color_map{[0 Red][1White]}} picks a color at
random out of the color_map for each cell of the checker pattern. It gives
a field of tiles in random shades of pink.
pigment{checker_random color_map{[0.25 Red][0.25White]}} picks a color
at random out of the color_map for each cell of the checker pattern. It
gives a field of random red and white tiles, 25% red and 75% white.
texture{checker_random texture_map{...}} gives tiles of random textures
selected from the map.
warp{checker displacement x displacement 0} alternates displaced
and nondisplaced tiles
warp{checker_random displacement_map{...}} gives random displacements
selected from the map.
PLEA FOR HELP:
If I can ever figure out how to get the POV code compiling under Borland
C++ (I haven't had much experience with big multi-file projects and it
hasn't worked for me yet... any hints?) I may try some of this out.
-Robert Dawson
Post a reply to this message
|
|