![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
The function abs(y) with a threshold of 0 gives me a wafer-thin mint* -
however if I add any complexity to the iso (e.g. noise3d), it thickens up. I
can get around this by translating another copy of the iso y*0.01 and
differencing the two, but is there another way to easily keep just a surface
skin of an iso?
The example below demonstrates this and, when rendered, raises another
problem - why is the shadow of this iso-surface incomplete?
* source this quote.
#version unofficial MegaPov 0.5;
#include "colors.inc"
light_source{<0,0,0> color rgb<1,1,0.96>*0.75 translate <-30, 30, -30>}
camera{location <2.0, 3.0, -2.0> look_at <0,0,0>}
plane{y, -1 pigment{White}}
#declare isoLayer =
isosurface{
#declare f1 = function {"ridgedMF" <1,2,5,0.5,10>}
#declare f2 = function{pigment{wrinkles}}
function{abs(y) + f1(x*5, y*5, z*5)/5 + f2 - 1}
max_gradient 3
eval
threshold 0
sign 1
accuracy .001
contained_by{sphere{0,1}}
scale<1,1,1>
}
intersection{
difference{
object{isoLayer}
object{isoLayer translate y*-0.01}
}
cylinder{0, 0.9*y, 0.9}
pigment{Green}
}
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Tom Melly <tom### [at] tomandlu co uk> wrote:
: is there another way to easily keep just a surface
: skin of an iso?
Read the documentation. There's an "open" keyword that can be applied to
the isosurface.
--
main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
):_;i&&_>1;printf("%s",_-70?_&1?"[]":" ":(_=0,"\n")),_/=2);} /*- Warp -*/
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Warp" <war### [at] tag povray org> wrote in message
news:39d4873c@news.povray.org...
> Tom Melly <tom### [at] tomandlu co uk> wrote:
> : is there another way to easily keep just a surface
> : skin of an iso?
>
> Read the documentation. There's an "open" keyword that can be applied to
> the isosurface.
>
Many thanks, scary-man. That seems to have done it, and resolved the missing
shadow problem into the bargain. I had come across "open" in the docs, but
had failed to realise the significance of it.
BTW, using "open" meant that initially I got two separate surfaces - an
upper and a lower one. Would I be right in thinking that one way of viewing
"open" is that it limits the iso to just those points matching the
threshold, as opposed to <= to the threshold?
I note that the docs specify that open should not be used in CSG, however it
seems to work okay, as in the example below. The only oddity seems to be the
need to specify rgbf 1 for the differenced plane. Can you clarify any of
this?
Many thanks again.
difference{
object{isoLayer}
plane{y, 0 pigment{rgbf 1}}
pigment{Green}
}
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
The container box adds some surfaces that don't belong to the isosurface
itself (that is, the threshold at those extra surfaces is wrong). The
"open" keyword just removes those extra surfaces.
I think that the idea behind those extra surfaces is that usually you
want a closed surface, not an open one. Open surfaces with interior are
not very intuitive (specially when used in CSG).
--
main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
):_;i&&_>1;printf("%s",_-70?_&1?"[]":" ":(_=0,"\n")),_/=2);} /*- Warp -*/
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |