POV-Ray : Newsgroups : povray.binaries.utilities : Smooth transitions between CSGs ...Chris Colefax? Server Time
22 Dec 2024 18:12:24 EST (-0500)
  Smooth transitions between CSGs ...Chris Colefax? (Message 1 to 4 of 4)  
From: Geoffrey Potvin
Subject: Smooth transitions between CSGs ...Chris Colefax?
Date: 19 Apr 2000 09:26:52
Message: <38fdb41c@news.povray.org>
I have created several complex models (deeply nested CSGs) wherein the
smooth transitions between CSGs would greatly enhance the models.
Please refer to my posting of "Old Typewriter" in  the
povray.binaries.images and
Tor Olav Kristensen's posting in the same newsgroup entitled "playing with
CSGs".

I can't help thinking that Chris Colefax might get stirred up by these
possibilities as well as other such talented "POV-Ray" "plug-in" writers.

I am fairly advanced at playing around with the includes and placement of
such work in the POV-Ray scene language, unfortunately ...being more
artistically inclined, I have more of an aptitude for application of this
stuff ...not writing it.

What are the possibilities? ...or are there just too many possible variables
involved?

Having worked extensively in mesh based modelers, I can see the restrictions
in trying to create smooth transitions between primitives and CSG objects in
general. Meshes do not  have this problem, however, they never have those
remarkably smooth surfaces as rendered by primitives. Such a plug-in would
greatly enhance the possibilities of the POV-Ray rendering engine!

Geoffrey


Post a reply to this message

From: Chris Colefax
Subject: Re: Smooth transitions between CSGs ...Chris Colefax?
Date: 19 Apr 2000 20:29:37
Message: <38fe4f71@news.povray.org>
Geoffrey Potvin <gpo### [at] istarca> wrote:
> I have created several complex models (deeply nested CSGs) wherein the
> smooth transitions between CSGs would greatly enhance the models.
> Please refer to my posting of "Old Typewriter" in  the
> povray.binaries.images and
> Tor Olav Kristensen's posting in the same newsgroup entitled "playing with
> CSGs".
>
> I can't help thinking that Chris Colefax might get stirred up by these
> possibilities as well as other such talented "POV-Ray" "plug-in" writers.
>
> I am fairly advanced at playing around with the includes and placement of
> such work in the POV-Ray scene language, unfortunately ...being more
> artistically inclined, I have more of an aptitude for application of this
> stuff ...not writing it.
>
> What are the possibilities? ...or are there just too many possible
variables
> involved?
>
> Having worked extensively in mesh based modelers, I can see the
restrictions
> in trying to create smooth transitions between primitives and CSG objects
in
> general. Meshes do not  have this problem, however, they never have those
> remarkably smooth surfaces as rendered by primitives. Such a plug-in would
> greatly enhance the possibilities of the POV-Ray rendering engine!

The ability to smooth off CSG transitions has actually been suggested to me
a number of times in the past, and I agree that unwanted sharp edges can
detract from otherwise excellent CSG models.  As Howie and others have shown
blobs can be extremely powerful, but they aren't always suitable for
accurate work, involving planes and such.

There are a couple of solutions I can think of - I haven't checked out Tor's
work, but with the right maths many cases could conceivably be handled using
spheres, cylinders, and torii for the transitions.  I can imagine, though,
that this would get fairly complicated fairly fast(!), and might end up
adding a lot to the memory requirements of a scene (e.g. a simple box
smoothed using CSG requires 23 objects or more, depending on the method
used).

Using modified normals might offer a solution, but applying the right
perturbations to just the transition areas would also be very complicated,
and you'd still have the usual sharp shadow problems, etc.

It seems to me that the best solution, then, would be a procedural method
handled at trace-time.  This would work similar to blobs, with each object
having a threshold extending either side of its surface.  Surfaces outside
of these threshold intersections would be rendered as per normal CSG (giving
accurate placement), but where thresholds do intersect they would be
averaged like blobs to give a smooth transition.

Finally, I believe Chris Huff has done some work along these lines, using
isosurfaces.  His messages should still be accessible on the server, as
should he...


Post a reply to this message

From: David Wilkinson
Subject: Re: Smooth transitions between CSGs ...Chris Colefax?
Date: 20 Apr 2000 06:16:41
Message: <0nltfscvastl9feui866gcr0ijs2njngus@4ax.com>
On Thu, 20 Apr 2000 10:44:36 +1000, "Chris Colefax"
<chr### [at] tagpovrayorg> wrote:
>
>It seems to me that the best solution, then, would be a procedural method
>handled at trace-time.  This would work similar to blobs, with each object
>having a threshold extending either side of its surface.  Surfaces outside
>of these threshold intersections would be rendered as per normal CSG (giving
>accurate placement), but where thresholds do intersect they would be
>averaged like blobs to give a smooth transition.
>
This looks like an intersting way to attack the general case Chris. There would
be problems where you have a surface with several intersections, some of which
you would like to be smoothed and others where you would like a sharp edge or
internal corner, nevertheless, a capability like this would add a very useful
capability to CSG.

David
dav### [at] hamiltonitecom
http://www.hamiltonite.com/


Post a reply to this message

From: Chris Huff
Subject: Re: Smooth transitions between CSGs ...Chris Colefax?
Date: 20 Apr 2000 07:53:47
Message: <chrishuff_99-0AF1F5.06563720042000@news.povray.org>
In article <38fe4f71@news.povray.org>, "Chris Colefax" 
<chr### [at] tagpovrayorg> wrote:

> Finally, I believe Chris Huff has done some work along these lines, using
> isosurfaces.  His messages should still be accessible on the server, as
> should he...

Hmm, I haven't done anything directly related to this...but my proximity 
pattern could do the job easily. I wouldn't use it directly, it is too 
slow, but it would be simple to use it with eval_pattern() to write data 
into an array or a file(preferably a file, so you don't have to 
recalculate it every time you parse the file) and use that as the input 
for an isosurface.

Another possibility would be to use the blob pattern. It currently only 
supports spheres and cylinders, but could easily be extended to do 
toruses, cones, boxes, etc...even isosurface functions could be 
included. It doesn't require the 3D density stage, it is fast enough 
as-is(although there are some optimizations that could be done). I got a 
nice "corroded metal" look by using turbulence on the blob pattern in an 
isosurface.

And finally, you could use Lummox JR's isoblob patch, which is kind of a 
cross between isosurfaces and blobs. I haven't done anything with it, 
but it looks quite good.

-- 
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

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