POV-Ray : Newsgroups : povray.general : Feature Request: chaos warp Server Time
5 Nov 2024 22:24:04 EST (-0500)
  Feature Request: chaos warp (Message 1 to 2 of 2)  
From: Josh English
Subject: Feature Request: chaos warp
Date: 26 Mar 1999 13:37:35
Message: <36FBD442.BCD0661@spiritone.com>
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 ] } }

but the obvious disadvantage to this is that you can only have one of
these kinds of "warps" per pigment and creating more would mean a rather
nasty pigment map. Doing this as a warp would be easier.

What would be even if warps could be shaped with regular primitives like
a cube or cylinder or torus instead of just a sphere...

Josh English
eng### [at] spiritonecom


Post a reply to this message

From: Robert Dawson
Subject: Re: Feature Request: chaos warp
Date: 7 Apr 1999 11:31:52
Message: <370b6c58.0@news.povray.org>
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

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