POV-Ray : Newsgroups : povray.advanced-users : Question1. Blobs/Metaballs Server Time
28 Jul 2024 18:15:10 EDT (-0400)
  Question1. Blobs/Metaballs (Message 1 to 2 of 2)  
From: Gena
Subject: Question1. Blobs/Metaballs
Date: 20 Apr 2004 00:16:33
Message: <4084a421$1@news.povray.org>
I think that one of the next useful POV-Tree features could be
polygonized/tesselated blob model.

A tree generated by TOMTREE macro is a blob tree. The whole
tree is just one blob. As a result all roots, trunk, branches and
twigs have smooth transition from one element to another. The
idea is to generate POV-Ray mesh object which could look the
same way as blob tree - with smooth transitions between elements.
Changing mesh accuracy it would be possible to define how close
mesh mimics its blob counterpart.

POV-Tree uses the same algorithm as TOMTREE to generate
tree model. The whole tree is represented in POV-Tree as an array
of Blob objects. Blob object in turn has three attributes:

blob center - x, y, z coordinates
blob radius
blob strength (not used in POV-Tree)

So, my first question is - which additional attribute(s) I should
include to the Blob object so that it would work like POV-Ray blob?
What kind of attributes are used for POV-Ray's blob object. Does
every blob keep own transformation matrix?

Next question is about algorithm used in POV-Ray to construct
blob's isosurface. Where can I get a reference to it? Is it marching
cubes?

As far as I understand I need one algorithm/formula for making
isosurface itself and another one for polygonizing that surface.
Is it so?

I'm not familiar with POV-Ray source files and I appreciate any
additional info regarding this subject (preferably on-line).

Googling gave me the following pages:
http://www.cfxweb.net/~aggrav8d/tutorials/metaballs.html
http://astronomy.swin.edu.au/~pbourke/modelling/polygonise/
http://astronomy.swin.edu.au/~pbourke/modelling/implicitsurf/
http://www.geisswerks.com/ryan/BLOBS/blobs.html
http://www.niksula.cs.hut.fi/~hkankaan/Homepages/metaballs.html

Just in case it's not clear what I need here are some pretty Java
applets demonstrating what I want to achieve:

http://www.srcf.ucam.org/~gw235/main.php
http://v3ga.free.fr/Java/Metaballs_2D/index.htm

Thanks in advance!

Gena.


Post a reply to this message

From: Christopher James Huff
Subject: Re: Question1. Blobs/Metaballs
Date: 20 Apr 2004 22:21:08
Message: <cjameshuff-731669.22221620042004@news.povray.org>
In article <4084a421$1@news.povray.org>, Gena <gen### [at] yahoocom> 
wrote:

> So, my first question is - which additional attribute(s) I should
> include to the Blob object so that it would work like POV-Ray blob?
> What kind of attributes are used for POV-Ray's blob object. Does
> every blob keep own transformation matrix?

That depends on what you need. If you need each component to have its 
own arbitrary scaling, rotation, etc, then you need a transformation 
matrix for each component. If you just have unscaled cylinders and 
spheres, it is not necessary.


> Next question is about algorithm used in POV-Ray to construct
> blob's isosurface. Where can I get a reference to it? Is it marching
> cubes?

POV-Ray solves for intersections with the blob itself, it does not 
tessellate the blob. It does so by generating quadrics to match portions 
of the surface...the algorithm is pretty complicated, and I don't 
understand it fully. You could also use an iterative root solver of the 
type the isosurface primitive uses...look up things like "root solver", 
"bisection method", "newton's method", and "regula falsi", and some of 
the previous messages in these groups on the subject (I recall there 
being a recent one in *.programming).

Tessellation algorithms are even more complex. The marching cubes 
algorithm is patented, using it may create legal problems, but there are 
other variations such as marching tetrahedrons that can give superior 
results. There was a tessellation patch that implemented several of 
these methods.


> As far as I understand I need one algorithm/formula for making
> isosurface itself and another one for polygonizing that surface.
> Is it so?

The "isosurface itself" is a function: in this case, the blob data 
together with the code that gives a field value for a point. You will 
need a root solver algorithm to find points on the surface, polygonizing 
is only necessary if you need a mesh.

-- 
Christopher James Huff <cja### [at] earthlinknet>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: <chr### [at] tagpovrayorg>
http://tag.povray.org/


Post a reply to this message

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