![](/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) |
In article <3d3edcb6@news.povray.org>, Micha Riser <mri### [at] gmx net>
wrote:
> AFAIR the discussions about this problem the suggested why to do this is
> make the water overlap the glass. Because leaving a space between will
> cause multiple reflections. However I don't know if the overlaping is
> handled as wished in that case.
Which is exactly what I was talking about...
> It is in the nature of merges to overlap.Otherwise you could just as well
> use union. It is even more in the nature of intersection memebers to
> overlap ... otherwise you have a null object. So it would be natural to
> assume at parsing time that merge/intersection do overlap and always issue
> a warning when iors are different.
Ah, I see what you are saying now. That would apply to all non-unions, I
think. And maybe different amounts of transparency as well as differing
iors. And a "nowarn" flag to turn off the warnings for those cases where
it is intentional.
--
Christopher James Huff <chr### [at] mac com>
POV-Ray TAG e-mail: chr### [at] tag povray org
TAG web site: http://tag.povray.org/
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) |
In article <3d3ed6fa@news.povray.org>, Micha Riser <mri### [at] gmx net>
wrote:
> But how would you combine the sample values to the final value? Average
> would be much too dark. Sum of course depends on the number of samples..
> One would kinda have to estimate the number of all possible paths by
> measuring the samples trace depth and then mulitplicate the average by that
> number.
The sum should do the job...it would be darker than you would get by
tracing all the paths, but ideally the paths that are skipped would have
little contribution anyway. The first few samples are what would really
determine the color, the "root" of the tree would fill in first, it is
the furthest branches that would get left out. A simple scaling factor
could compensate for that, maybe automatically depending on depth.
--
Christopher James Huff <chr### [at] mac com>
POV-Ray TAG e-mail: chr### [at] tag povray org
TAG web site: http://tag.povray.org/
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) |
In article <3d3eda9b$1@news.povray.org>,
"TinCanMan" <Tin### [at] hotmail com> wrote:
> Here it is necessary to double up your surfaces so the surface of the water
> is slightly outside the surface of the glass. ie, the ray exits the glass
> into air and then into the water. There is no way to avoid increasing the
> number of surfaces in this case if you want it to work correctly. For
> something completely immersed int the water (or glass for that matter) this
> isn't necessary (in case you think this is contradicatory to my previous
> post).
That is a different situation, where the fluid doesn't "wet" the glass
and a layer of air is trapped between the two. That is a very easy case,
POV definitely doesn't have any trouble with that one, but water doesn't
usually do that.
--
Christopher James Huff <chr### [at] mac com>
POV-Ray TAG e-mail: chr### [at] tag povray org
TAG web site: http://tag.povray.org/
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 Wed, 24 Jul 2002 12:38:17 -0500, Christopher James Huff wrote:
> In article <3d3edcb6@news.povray.org>, Micha Riser <mri### [at] gmx net>
> wrote:
>
>> AFAIR the discussions about this problem the suggested why to do this is
>> make the water overlap the glass. Because leaving a space between will
>> cause multiple reflections. However I don't know if the overlaping is
>> handled as wished in that case.
>
> Which is exactly what I was talking about...
It's handled correctly except for the very rare case where a ray enters
the water object without leaving the glass object. If your surfaces are
close enough together, that almost never happens and AA will fix it if it
does.
POV keeps a list of all interiors it's inside, and when it hits another face
that has the same interior, it removes that interior from the list. If it
wasn't the last interior, though, the IOR doesn't change. That effectively
makes the glass faces that are inside the water "disappear" from the point
of view of refraction/TIR, though of course any textures will still be
computed.
--
#local R=rgb 99;#local P=R-R;#local F=pigment{gradient x}box{0,1pigment{gradient
y pigment_map{[.5F pigment_map{[.3R][.3F color_map{[.15red 99][.15P]}rotate z*45
translate x]}]#local H=pigment{gradient y color_map{[.5P][.5R]}scale 1/3}[.5F
pigment_map{[.3R][.3H][.7H][.7R]}]}}}camera{location.5-3*z}//only my opinions
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) |
In article <slr### [at] fwi com>,
Ron Parker <ron### [at] povray org> wrote:
> It's handled correctly except for the very rare case where a ray enters
> the water object without leaving the glass object. If your surfaces are
> close enough together, that almost never happens and AA will fix it if it
> does.
You mean where it just skirts the edge of the water object where it
overlaps but doesn't touch the inner surface of the glass?
> POV keeps a list of all interiors it's inside, and when it hits another face
> that has the same interior, it removes that interior from the list. If it
> wasn't the last interior, though, the IOR doesn't change. That effectively
> makes the glass faces that are inside the water "disappear" from the point
> of view of refraction/TIR, though of course any textures will still be
> computed.
I see...I think. ;-)
Seems slightly similar to my immersion CSG, only ignoring the ior
instead of removing the entire surface, and quite a bit more general.
I'll just have to try to implement it for my own tracer, then I'll
understand it completely.
--
Christopher James Huff <chr### [at] mac com>
POV-Ray TAG e-mail: chr### [at] tag povray org
TAG web site: http://tag.povray.org/
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 Wed, 24 Jul 2002 12:49:10 -0400, TinCanMan quoth:
>> One thing that has been bothering me is the "glass of water" type
>> situation...I'm not sure POV handles it correctly or how to model it
>> correctly.
>>
>>
> Here it is necessary to double up your surfaces so the surface of the
> water is slightly outside the surface of the glass. ie, the ray exits
> the glass into air and then into the water. There is no way to avoid
> increasing the number of surfaces in this case if you want it to work
> correctly. For something completely immersed int the water (or glass for
> that matter) this isn't necessary (in case you think this is
> contradicatory to my previous post).
>
> -tgq
If you could create the glass without an inner surface (perhaps by using
clipped_by), you would get the most realistic performance, since the ray
would go directly from glass to water, without passing through a layer of
air.
--
Mark
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 Wed, 24 Jul 2002 21:06:53 -0500, Christopher James Huff wrote:
> In article <slr### [at] fwi com>,
> Ron Parker <ron### [at] povray org> wrote:
>
>> It's handled correctly except for the very rare case where a ray enters
>> the water object without leaving the glass object. If your surfaces are
>> close enough together, that almost never happens and AA will fix it if it
>> does.
>
> You mean where it just skirts the edge of the water object where it
> overlaps but doesn't touch the inner surface of the glass?
Right. A very rare case indeed.
--
#macro R(P)z+_(P)_(P)_(P+1)_(P+1)+z#end#macro Q(C,T)bicubic_patch{type 1u_steps
6v_steps 6R(1)R(3)R(5)R(7)pigment{rgb z}}#end#macro _(Y)#local X=asc(substr(C,Y
,1))-65;<T+mod(X,4)div(X,4)9>-2#end#macro O(T)Q("ABEFUQWS",T)Q("WSXTLOJN",T)#
end O(0)O(3)Q("JNKLCGCD",0)light_source{x 1}// ron### [at] povray org
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) |
In article <pan### [at] gte net>,
Mark Wagner <mar### [at] gte net> wrote:
> If you could create the glass without an inner surface (perhaps by using
> clipped_by), you would get the most realistic performance, since the ray
> would go directly from glass to water, without passing through a layer of
> air.
If you cut away the water surface, the ray never "enters" the water
object. If you cut away the glass surface, it won't leave the glass
object until it reaches the other side of the cup, if it exits through
the top of the cup it will never become "outside" the cup.
As Ron Parker explained though, when there is an overlap the glass/water
transition is handled as it should be and the ior of the redundant
surface is ignored, so you don't need any special CSG. Still, there are
two extra surfaces in the body of the glass...that just bugs me, having
6 surfaces where 4 should be sufficient.
Maybe it would be possible to specify interior transitions on a
per-surface basis...instead of a "water object" and a "glass object",
the glass of water situation would be 3 separate surfaces: glass-air,
glass-water, and water-air. The modelling would be more difficult...it'd
probably only be worth it for a scene with a lot of glasses and bottles
of liquids (a lab or bar?) or if it was somehow automatically generated
(back to the immerse CSG?). Maybe a good trick for a real-time raytracer
though.
--
Christopher James Huff <chr### [at] mac com>
POV-Ray TAG e-mail: chr### [at] tag povray org
TAG web site: http://tag.povray.org/
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) |