POV-Ray : Newsgroups : povray.binaries.tutorials : Isosurface Tutorial updated Server Time
28 Mar 2024 04:31:51 EDT (-0400)
  Isosurface Tutorial updated (Message 1 to 8 of 8)  
From: Mike Williams
Subject: Isosurface Tutorial updated
Date: 10 May 2000 02:42:57
Message: <ci+sVCAmQQG5EwsJ@econym.demon.co.uk>
I've substantially updated my isosurface tutorial at
<http://www.econym.demon.co.uk/isotut>.

There's now an almost[1] complete catalogue of the built in functions,
and each page now contains a zip file of all the sources used for the
images on that page. So pop by if you've ever wondered what the Kampyle
of Eudoxus looks like, or want know what various parameters of the
func_16 surface do.

[1] I'd be glad of any hints on how to use any of the remaining built in
functions, namely: imp_func, data_3D_3, data_2D_3, data_3D_1, data_2D_1,
odd_sphere and iso_pigment.

-- 
Mike Williams
Gentleman of Leisure


Post a reply to this message

From: Bob Hughes
Subject: Re: Isosurface Tutorial updated
Date: 10 May 2000 07:18:52
Message: <3919459c@news.povray.org>
Looking great there.  I was wondering what 'helix2' was compared to
'helix', among other things.  Just the "built-in" functions was something
I have been wanting to know better all along.
Thanks plenty.

Bob

"Mike Williams" <mik### [at] nospamplease> wrote in message
news:ci+sVC### [at] econymdemoncouk...
| I've substantially updated my isosurface tutorial at
| <http://www.econym.demon.co.uk/isotut>.
|
| There's now an almost[1] complete catalogue of the built in functions,
| and each page now contains a zip file of all the sources used for the
| images on that page. So pop by if you've ever wondered what the Kampyle
| of Eudoxus looks like, or want know what various parameters of the
| func_16 surface do.
|
| [1] I'd be glad of any hints on how to use any of the remaining built in
| functions, namely: imp_func, data_3D_3, data_2D_3, data_3D_1, data_2D_1,
| odd_sphere and iso_pigment.
|
| --
| Mike Williams
| Gentleman of Leisure


Post a reply to this message

From: Simen Kvaal
Subject: Re: Isosurface Tutorial updated
Date: 12 May 2000 18:33:49
Message: <391c86cd$1@news.povray.org>
You seem to know these built-in-functions well!

I've played with them, but never got anything to work. So I decided to give
your source-files a try. I fired up algbr015.pov (Duphin_Cyclid-thing), and
it worked fine! However, when I tried to make my own scene, I found that it
seems the behaviour of these bulit-in functions are somewhat erratic. For
example, when _removing_ the last four lines of algbr015.pov, the ones
placing the transparent container, the Isosurface only shows something like
a solid ball! And without affecting the code for the iso at all.

Du you know why such things happen (stuff like this happen to my isos all
the time), and mayby how to avoid/predict them?

Simen.


Mike Williams skrev i meldingen ...
>I've substantially updated my isosurface tutorial at
><http://www.econym.demon.co.uk/isotut>.
>
>There's now an almost[1] complete catalogue of the built in functions,
>and each page now contains a zip file of all the sources used for the
>images on that page. So pop by if you've ever wondered what the Kampyle
>of Eudoxus looks like, or want know what various parameters of the
>func_16 surface do.
>


Post a reply to this message

From: Mike Williams
Subject: Re: Isosurface Tutorial updated
Date: 13 May 2000 11:04:37
Message: <6dSVaFAQ3PH5Ewyf@econym.demon.co.uk>
Wasn't it Simen Kvaal who wrote:
>You seem to know these built-in-functions well!

It didn't start out that way. It took a lot of hard work to obtain all
that information.

>I've played with them, but never got anything to work. So I decided to give
>your source-files a try. I fired up algbr015.pov (Duphin_Cyclid-thing), and
>it worked fine! However, when I tried to make my own scene, I found that it
>seems the behaviour of these bulit-in functions are somewhat erratic. For
>example, when _removing_ the last four lines of algbr015.pov, the ones
>placing the transparent container, the Isosurface only shows something like
>a solid ball! And without affecting the code for the iso at all.
>
>Du you know why such things happen (stuff like this happen to my isos all
>the time), and mayby how to avoid/predict them?

What's happening is that several built in functions produce surfaces
that are actually inside out, and the Duphin_Cyclid is one of them.
What's happening is that the contained_by sphere is intersecting the
"inside" of the cyclid at all points, so what actually gets rendered is
the contained_by sphere, and the cyclid itself is a hollow space inside
this sphere where you can't see it. I don't know an easy way to predict
inside-out-ness, but the solution is easy, use "sign -1".

A subtle, and not quite intentional, side effect of the presence of my
container surfaces is that they clobber the parts where the surface runs
round the contained_by sphere. Because my transparent container surfaces
are exactly coincident with the contained_by surface, only one of them
gets rendered, and that happens to be the transparent surface.

An alternative solution is to add the keyword "open" just after the
contained_by statement.

I'll go back through my tutorial to check for inside-out surfaces and
turn them right side out.

-- 
Mike Williams
Gentleman of Leisure


Post a reply to this message

From: Chris Huff
Subject: Re: Isosurface Tutorial updated
Date: 13 May 2000 19:28:30
Message: <chrishuff_99-AC3014.18315613052000@news.povray.org>
In article <6dS### [at] econymdemoncouk>, Mike Williams 
<mik### [at] econymdemoncouk> wrote:

> Wasn't it Simen Kvaal who wrote:
> >You seem to know these built-in-functions well!
> 
> It didn't start out that way. It took a lot of hard work to obtain all
> that information.

I'll bet! I personally avoid using the built-in functions(the syntax is 
awful, and I highly doubt it would survive if these functions are 
included in the official version), but this is very useful information 
for those who do use them.


> A subtle, and not quite intentional, side effect of the presence of my
> container surfaces is that they clobber the parts where the surface runs
> round the contained_by sphere. Because my transparent container surfaces
> are exactly coincident with the contained_by surface, only one of them
> gets rendered, and that happens to be the transparent surface.

I suggest something like "scale 1.001" to remedy this...or maybe "scale 
0.999", so those parts stand out as container-intersections. This could 
make debugging functions easier, since you could immediately see that 
the problem is a container intersecting with the surface.


> An alternative solution is to add the keyword "open" just after the
> contained_by statement.

Note that this solution doesn't help if your object contains media or is 
used in CSG...though "open inverse" should work. I would suggest just 
using a negative threshold, or declaring the function(a good practice 
anyway) and using it's negative("-FuncName(x,y,z)").
Or use "sign -1". :-)

-- 
Christopher James Huff - Personal e-mail: chr### [at] yahoocom
TAG(Technical Assistance Group) e-mail: chr### [at] tagpovrayorg
Personal Web page: http://chrishuff.dhs.org/
TAG Web page: http://tag.povray.org/


Post a reply to this message

From: Mike Williams
Subject: Re: Isosurface Tutorial updated
Date: 14 May 2000 14:37:57
Message: <ZTq9ZDAyVhH5EwXn@econym.demon.co.uk>
Wasn't it Chris Huff who wrote:
>In article <6dS### [at] econymdemoncouk>, Mike Williams 
><mik### [at] econymdemoncouk> wrote:
>
>> An alternative solution is to add the keyword "open" just after the
>> contained_by statement.
>
>Note that this solution doesn't help if your object contains media or is 
>used in CSG...though "open inverse" should work. I would suggest just 
>using a negative threshold, or declaring the function(a good practice 
>anyway) and using it's negative("-FuncName(x,y,z)").
>Or use "sign -1". :-)
>

Using a negative threshold isn't a solution, it just makes the surface
that you're interested in larger. MegaPOV still treats locations where
the function is numerically less than the threshold as "inside".

Experiments also reveal that "open inverse" produces a rather different
effect from "sign -1". In CSG, the "open" seems to be ignored most of
the time, so the objects intersect with just the "inverse", i.e. the
positive copy of the target surface inside an inverse contained_by
object.

Another solution relies on the fact that all (or is that "almost all")
the problematic surfaces are those from the "i_algbr" library and
therefore have what I call "field strength" as their first parameter.
Negating the field strength (e.g. function {"Bicorn" <-1,1>}) has
exactly the same effect as adding "sign -1".

The problematic surfaces seem to be those in the i_algbr library where
the origin lies in the region that we would intuitively consider to be
the "outside" of the object. The author of the i_algbr library seems to
have rigged the code so that the point <0,0,0> is always in the "inside"
region, even in surfaces like Torus_gumdrop and Dupin_Cyclid (which are
rather like torusses, with <0,0,0> in the middle of what we would
consider to be the hole) .

-- 
Mike Williams
Gentleman of Leisure


Post a reply to this message

From: Chris Huff
Subject: Re: Isosurface Tutorial updated
Date: 14 May 2000 15:35:14
Message: <chrishuff_99-CB1994.14384014052000@news.povray.org>
In article <ZTq### [at] econymdemoncouk>, Mike Williams 
<mik### [at] econymdemoncouk> wrote:

> Using a negative threshold isn't a solution, it just makes the surface
> that you're interested in larger. MegaPOV still treats locations where
> the function is numerically less than the threshold as "inside".

Er, right...what was I thinking?
Just using the negative of the function should work though.


> Experiments also reveal that "open inverse" produces a rather different
> effect from "sign -1". In CSG, the "open" seems to be ignored most of
> the time, so the objects intersect with just the "inverse", i.e. the
> positive copy of the target surface inside an inverse contained_by
> object.

Yes, this is right. It should work fine in media, but not with CSG.
And I don't remember why I thought "open" was necessary(I must have 
written that in a moment of caffeine deprivation). "inverse" should work 
the same as "sign -1", though. They both have the effect of flipping the 
inside and outside, right? Or is my brain still short-circuiting?


> The problematic surfaces seem to be those in the i_algbr library where
> the origin lies in the region that we would intuitively consider to be
> the "outside" of the object. The author of the i_algbr library seems to
> have rigged the code so that the point <0,0,0> is always in the "inside"
> region, even in surfaces like Torus_gumdrop and Dupin_Cyclid (which are
> rather like torusses, with <0,0,0> in the middle of what we would
> consider to be the hole) .

This is certainly non-intuitive. I have noticed a lot of odd design 
decisions in the isosurface syntax(the use of <> brackets for holding 
parameters, a different meaning for "bounded_by"(no longer the a 
problem, now that we have "contained_by"), functions using the bounding 
box for data, etc.), hopefully all of these will be cleared up when the 
official version is released.

-- 
Christopher James Huff - Personal e-mail: chr### [at] yahoocom
TAG(Technical Assistance Group) e-mail: chr### [at] tagpovrayorg
Personal Web page: http://chrishuff.dhs.org/
TAG Web page: http://tag.povray.org/


Post a reply to this message

From: Ken Hutson
Subject: Re: Isosurface Tutorial updated
Date: 2 Oct 2005 22:27:33
Message: <43409715$1@news.povray.org>
Excellent material Mike!

"Mike Williams" <mik### [at] nospamplease> wrote in message 
news:ci+sVC### [at] econymdemoncouk...
> I've substantially updated my isosurface tutorial at
> <http://www.econym.demon.co.uk/isotut>.
>
> There's now an almost[1] complete catalogue of the built in functions,
> and each page now contains a zip file of all the sources used for the
> images on that page. So pop by if you've ever wondered what the Kampyle
> of Eudoxus looks like, or want know what various parameters of the
> func_16 surface do.
>
> [1] I'd be glad of any hints on how to use any of the remaining built in
> functions, namely: imp_func, data_3D_3, data_2D_3, data_3D_1, data_2D_1,
> odd_sphere and iso_pigment.
>
> -- 
> Mike Williams
> Gentleman of Leisure


Post a reply to this message

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