|
![](/i/fill.gif) |
In article <38f40526@news.povray.org>, "Mark Wagner"
<mar### [at] gte net> wrote:
> I can't guarentee that this will work on the first try, but it will
> displace
> the surface of any object using the noise3d function. To use a different
> object, just replace AnObject with the object you want.
I think you mean:
#declare AnObject = union {
sphere {<0,0,0>, 1}
torus {1.3, 0.5}
}
#declare AnObjectFunc =
function {
pigment {
object {AnObject color rgb 0, color rgb 1}
}
}
isosurface {
function {AnObjectFunc(x,y,z)
+noise3d(x,y,z)
}
method 2
max_gradient 100
contained_by {box {min_extent(AnObject),max_extent(AnObject)}}
pigment {color rgb <1,1,1>}
}
And the object pattern turns out to not be very good for
isosurfaces...it has two values separated by a sharp boundary, sort of
an infinite amount of slope. A boundary can appear anywhere, so the
isosurface algorithm has trouble finding them. And I don't think you
could displace the surfaces from within the function... I have a pattern
blurring feature I have been thinking of which might reduce this
problem, but I am not sure...
The proximity pattern might be helpful for this, but it is slow. You
might want to make a script that uses eval_pattern() to write the
results of proximity to a 3D density file, and use that in the
isosurface.
If your object is a blob, the blob pattern is useful. I have used it
before with very good results.
Also, don't forget that when the function goes through a pigment, you
can use warps like turbulence, black holes, etc to displace it. And with
function patterns and pigment functions, you can put any function
through a pigment. :-)
--
Christopher James Huff - Personal e-mail: chr### [at] yahoo com
TAG(Technical Assistance Group) e-mail: chr### [at] tag povray org
Personal Web page: http://chrishuff.dhs.org/
TAG Web page: http://tag.povray.org/
Post a reply to this message
|
![](/i/fill.gif) |