POV-Ray : Newsgroups : povray.pov4.discussion.general : Mesh2 option for isosurface Server Time
22 Dec 2024 05:24:44 EST (-0500)
  Mesh2 option for isosurface (Message 1 to 10 of 10)  
From: scott
Subject: Mesh2 option for isosurface
Date: 22 Nov 2007 03:50:27
Message: <474542d3@news.povray.org>
Isosurfaces are slow to render sometimes.

What would be good is if there was an option to render them as a mesh with a 
set detail level.

Something like

isosurface
{
  blah
  blah
  blah
  render_mesh 20,10,20
}

Internally the parser would define a 20x10x20 array of points within the 
bounding box of the isosurface, and calculate the isosurface value at each 
point.  Then an algorithm like marching cubes would be used to generate a 
mesh2 object to be rendered instead of the actual isosurface object.

This could be used for fast previews or even final renders if the speed was 
good with large array sizes.

Comments?


Post a reply to this message

From: Nicolas Alvarez
Subject: Re: Mesh2 option for isosurface
Date: 22 Nov 2007 08:25:10
Message: <47458336$1@news.povray.org>

> Isosurfaces are slow to render sometimes.
> 
> What would be good is if there was an option to render them as a mesh 
> with a set detail level.
> 
> Something like
> 
> isosurface
> {
>  blah
>  blah
>  blah
>  render_mesh 20,10,20
> }
> 
> Internally the parser would define a 20x10x20 array of points within the 
> bounding box of the isosurface, and calculate the isosurface value at 
> each point.  Then an algorithm like marching cubes would be used to 
> generate a mesh2 object to be rendered instead of the actual isosurface 
> object.
> 
> This could be used for fast previews or even final renders if the speed 
> was good with large array sizes.
> 
> Comments?
> 

That's only useful if you can save the mesh and use it for other 
renders. Some people have shown that generating such a mesh can take as 
long as rendering the isosurface directly. However once you have the 
mesh, you can re-render it a lot faster.


Post a reply to this message

From: scott
Subject: Re: Mesh2 option for isosurface
Date: 22 Nov 2007 09:08:39
Message: <47458d67$1@news.povray.org>
>> Internally the parser would define a 20x10x20 array of points within the 
>> bounding box of the isosurface, and calculate the isosurface value at 
>> each point.  Then an algorithm like marching cubes would be used to 
>> generate a mesh2 object to be rendered instead of the actual isosurface 
>> object.
>>
>> This could be used for fast previews or even final renders if the speed 
>> was good with large array sizes.
>>
>> Comments?
>>
>
> That's only useful if you can save the mesh and use it for other renders.

Yes, that could be a useful feature, allowing the mesh2 to be saved as a 
specified .inc file for inclusion in later renders or an animation.

> Some people have shown that generating such a mesh can take as long as 
> rendering the isosurface directly.

AIUI that's with the mesh generated in SDL.  If the mesh generation 
algorithm were coded directly into the binary then it should run much 
faster.

There are other algorithms that could be used too, like marching triangles 
which are seemingly more efficient than marching cubes.


Post a reply to this message

From: Chambers
Subject: Re: Mesh2 option for isosurface
Date: 23 Nov 2007 20:00:00
Message: <web.47477665d9aea8ac261d9700@news.povray.org>
Nicolas Alvarez <nic### [at] gmailisthebestcom> wrote:
> That's only useful if you can save the mesh and use it for other
> renders.

#if (generate_mesh = 0)
 #include "my_mesh.inc"
#else
 mesh_generation_macro()
#end

(This is quite similar to the way Radiosity pregeneration works, you'll notice).


Post a reply to this message

From: Nicolas Alvarez
Subject: Re: Mesh2 option for isosurface
Date: 23 Nov 2007 20:58:14
Message: <47478536$1@news.povray.org>

> Nicolas Alvarez <nic### [at] gmailisthebestcom> wrote:
>> That's only useful if you can save the mesh and use it for other
>> renders.
> 
> #if (generate_mesh = 0)
>  #include "my_mesh.inc"
> #else
>  mesh_generation_macro()
> #end
> 
> (This is quite similar to the way Radiosity pregeneration works, you'll notice).

I *always* use this on the global photons block:

#if(file_exists("photons.ph"))
load_file "photons.ph"
#else
save_file "photons.ph"
#end

If I need to re-make the photon map, I invert the condition just for 
that render, or delete the file.


Post a reply to this message

From: Christoph Hormann
Subject: Re: Mesh2 option for isosurface
Date: 25 Nov 2007 05:32:53
Message: <47494f55$1@news.povray.org>
scott wrote:
> [...]
> 
> This could be used for fast previews or even final renders if the speed 
> was good with large array sizes.

Tesselating an isosurface - no matter what kind of algorithm you use - 
is quite slow so a preview render would be a very bad example for using 
such a technique.  The most interesting uses for this would be low 
detail isosurfaces in a slow render or an animation or the possibility 
to edit the mesh in a mesh editor afterwards.  Being able to get a fast 
preview from a detailed isosurface is actually a significant advantage 
of the direct approach.

Apart from that this is a very good example of a feature that would make 
sense to have implemented in a new, more powerful SDL.  Having such a 
technique implemented internally would add considerable bloat unrelated 
to the actual renderer to the source code without a real advantage.

Christoph

-- 
Views of the Earth: http://earth.imagico.de/
Images, include files, tutorials: http://www.imagico.de/
MegaPOV with mechanics simulation: http://megapov.inetart.net/


Post a reply to this message

From: ingo
Subject: tesselation and Mesh was: Mesh2 option for isosurface
Date: 25 Nov 2007 09:12:57
Message: <Xns99F39AC84DE4Eseed7@news.povray.org>
in news:474542d3@news.povray.org scott wrote:

> Isosurfaces are slow to render sometimes.
> 
> What would be good is if there was an option to render them as a mesh
> with a set detail level.
> 

IMO adding tesselation of any object would be nice. There is a patch 
for it, but a troublesome one as I understand.

Speed isn't the main thing for me in this, altough it can be usefull 
for animations.

The interesting things with tesselation are what other things one can 
do with a mesh. Think of export to other programms. Manipulation of the 
mesh with POV-Ray, regardless of wether it is done by POV-Ray directly 
or through include files. Think of subsurface division, surface 
displacement, boning, uvmapping etc.

For these I think we'd need a bit extended mesh format, one that also 
accepts (non-flat) polygons.

More important, we'd need to get access to the arrays a mesh2 consists 
of so mesh can be manipulated through SDL.

ingo


Post a reply to this message

From: Woody
Subject: Re: Mesh2 option for isosurface
Date: 5 Jan 2008 14:55:00
Message: <web.477fdfecd9aea8ace91832b60@news.povray.org>
"scott" <sco### [at] laptopcom> wrote:
> Isosurfaces are slow to render sometimes.
>
> What would be good is if there was an option to render them as a mesh with a
> set detail level.
>
> Something like
>
> isosurface
> {
>   blah
>   blah
>   blah
>   render_mesh 20,10,20
> }
>


Granted a mesh2 version would be useful as a fast clean version. Another option
(in addition to, not in place of) would be to output to a purely binary file.

A binary file would speed up creating of the file, and reading in at render time
when adding to scenes (faster than mesh2). See chambers mesage at
(http://news.povray.org/476f17c7%241%40news.povray.org)

Maybe not specifically for isosurfaces, but all types of primitives (spheres,
boxes, meshes, etc.) and combinations there of could be created as binary
files.

Wouldn't this be equivalent to instead of "parsing" an "included" ASCII text
file, it would be including a "pre-compiled" binary file?

Comments? Possible? Not Possible?


Post a reply to this message

From: Nicolas Alvarez
Subject: Re: Mesh2 option for isosurface
Date: 5 Jan 2008 15:11:37
Message: <477fe479@news.povray.org>

> Maybe not specifically for isosurfaces, but all types of primitives (spheres,
> boxes, meshes, etc.) and combinations there of could be created as binary
> files.
> 
> Wouldn't this be equivalent to instead of "parsing" an "included" ASCII text
> file, it would be including a "pre-compiled" binary file?
> 
> Comments? Possible? Not Possible?
> 

http://www.tb-software.com/download/pob_sdk.zip


Post a reply to this message

From: Chambers
Subject: Re: Mesh2 option for isosurface
Date: 5 Jan 2008 21:47:43
Message: <4780414f@news.povray.org>
Woody wrote:
> Granted a mesh2 version would be useful as a fast clean version. Another option
> (in addition to, not in place of) would be to output to a purely binary file.
> 
> A binary file would speed up creating of the file, and reading in at render time
> when adding to scenes (faster than mesh2). See chambers mesage at
> (http://news.povray.org/476f17c7%241%40news.povray.org)

I don't think a binary file would be of any use here; as I recall, the 
main speed hit in the parser has nothing to do with parsing text vs 
binary, but rather memory allocation.

My post was about allowing POVers to use binary objects from other 
programs without running them through a converter.

-- 
...Ben Chambers
www.pacificwebguy.com


Post a reply to this message

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