![](/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) |
On Fri, 17 Sep 1999 18:09:32 -0700, Ken <tyl### [at] pacbell net> wrote:
>
>
>Ian Burgmyer wrote:
>>
>> What's the difference between merge and union? I noticed that one (I think
>> it was merge) took quite a bit longer then the other.
>>
>> Thanks!
>> -Ian
>
> There is a major difference between the two. The union is really not
>a true CSG operation and could be more accurately described as a group
>container.
Interesting distinction you make there. I'd say union is the true
CSG operation - since it's what we'd generally consider atomic - and
merge is the imposter; it's able to be synthesized by clever
combination of intersection and inverse.
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) |
On 19 Sep 1999 05:17:31 -0400, Nieminen Juha <war### [at] cc tut fi> wrote:
> AFAIK when you shoot a ray, you get _all_ the intersections of that ray
>and every surface it hits.
In most cases, yes. Not in the case of meshes, though. It's also
possible that POV automatically ignores objects that are entirely
further away than the closest intersection so far. If it doesn't,
it should.
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) |
Ron Parker wrote:
> > There is a major difference between the two. The union is really not
> >a true CSG operation and could be more accurately described as a group
> >container.
>
> Interesting distinction you make there. I'd say union is the true
> CSG operation - since it's what we'd generally consider atomic - and
> merge is the imposter; it's able to be synthesized by clever
> combination of intersection and inverse.
Since I was responding to a question in the new users group I defend my
reply as appropriate for conveying a new concept. Had he asked for info
on and, or, and not operations I probably would have remained silent and
would have let you answer it yourself.
I like to think of CSG operations as to how they perform physically in
an operation. My idea of more better analogies would be:
union = gluing
intersection = cutting
difference = scooping
merge = melting and gluing
clipping = cutting and hollowing
inverse = inside outing
There ! That should give you something to cry in despair over for a while :)
--
Ken Tyler
See my 1000+ Povray and 3D Rendering and Raytracing Links at:
http://home.pacbell.net/tylereng/index.html
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) |
Haha! This is kinda what I was looking for in the first place!
It sums everything up pretty well ;)
-Ian
> I like to think of CSG operations as to how they perform physically in
> an operation. My idea of more better analogies would be:
>
> union = gluing
> intersection = cutting
> difference = scooping
> merge = melting and gluing
> clipping = cutting and hollowing
> inverse = inside outing
>
> There ! That should give you something to cry in despair over for a while
:)
>
> --
> Ken Tyler
>
> See my 1000+ Povray and 3D Rendering and Raytracing Links at:
> http://home.pacbell.net/tylereng/index.html
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) |
Ron Parker <par### [at] fwi com> wrote:
: It's also
: possible that POV automatically ignores objects that are entirely
: further away than the closest intersection so far. If it doesn't,
: it should.
How can it know if the object is further or not without testing the
ray-object intersection?
--
main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
):5;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) |
Ken <tyl### [at] pacbell net> wrote:
: intersection = cutting
: difference = scooping
I have always thought about the difference as cutting parts out from the
main object.
: clipping = cutting and hollowing
Is clipping considered CSG? Note that the 'S' stands for 'solid' :)
I think that it would also be useful if you explained the difference
between intersection and clipping and when it's better to use clipping
instead of intersection.
--
main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
):5;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) |
On 20 Sep 1999 06:32:51 -0400, Nieminen Juha wrote:
>Ron Parker <par### [at] fwi com> wrote:
>: It's also
>: possible that POV automatically ignores objects that are entirely
>: further away than the closest intersection so far. If it doesn't,
>: it should.
>
> How can it know if the object is further or not without testing the
>ray-object intersection?
By taking the dot product of each of the six bounding box coordinates
with the ray direction. If they're all further away, then the object
must be.
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) |
Nieminen Juha wrote:
>
> Ken <tyl### [at] pacbell net> wrote:
> : intersection = cutting
> : difference = scooping
>
> I have always thought about the difference as cutting parts out from the
> main object.
In english the word "scooping" implies that but perhaps not as definitavely as
you have stated it.
> : clipping = cutting and hollowing
>
> Is clipping considered CSG? Note that the 'S' stands for 'solid' :)
>
> I think that it would also be useful if you explained the difference
> between intersection and clipping and when it's better to use clipping
> instead of intersection.
You might be right here.
Intersections will slice or cut an object and then apply a face where the
slice has been made.
Clipping slices an object but will not leave a face where the slice has
occured. Instead the object that has been sliced will now appear to be
hollowed out since all solid objects in POV-Ray are not truly solid.
--
Ken Tyler
See my 1000+ Povray and 3D Rendering and Raytracing Links at:
http://home.pacbell.net/tylereng/index.html
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) |
Ron Parker <par### [at] fwi com> wrote:
: By taking the dot product of each of the six bounding box coordinates
: with the ray direction. If they're all further away, then the object
: must be.
You forget that the bounding box is not necesarily around the object...
nor it is a box... :)
--
main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
):5;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) |
clipped_by should be used instead of difference when the new surface is
not seen (for example, if you clip a torus and attach two cylinders to the
ends to form a bended tube, the clipped surfaces are inside the tube and thus
are not seen).
Why it should be used? Because it's faster to render.
--
main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
):5;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) |