![](/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) |
Simon <sim### [at] surfeu de> wrote:
: So if you want to get the same result after
: scaling you should do something like this :
: ...
: density{yourcolor*1/scalevalue}
But this is exactly what I don't want to be forced to do.
--
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}// - 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) |
Ron Parker <ron### [at] povray org> wrote:
: how should it scale when the container is scaled nonuniformly?
It should scale so that if you, for example, scale the object to be
twice as wide on screen, render and then squeeze the image to half-size
in width (eg. just drop out every other column of pixels), the image should
be the same (perhaps not 100% identical, but by all practical means the same,
that is, minor differences in individual pixels not noticeable).
--
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}// - 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 31 May 2001 12:02:24 -0400, Warp wrote:
>Ron Parker <ron### [at] povray org> wrote:
>: how should it scale when the container is scaled nonuniformly?
>
> It should scale so that if you, for example, scale the object to be
>twice as wide on screen, render and then squeeze the image to half-size
>in width (eg. just drop out every other column of pixels), the image should
>be the same (perhaps not 100% identical, but by all practical means the same,
>that is, minor differences in individual pixels not noticeable).
Well, that's not strictly true unless you use an orthographic camera, so let's
assume that you meant to say "with an orthographic camera."
Even assuming that, we have a problem: if we take a sphere and scale it
nonuniformly, perhaps by stretching it by a factor of 2 along the Y axis,
now we have to make the density factor depend on the direction of the
ray we're measuring: a ray traveling parallel to the X axis should use
the same density factor it would have without scaling, but a ray traveling
parallel to the Y axis should use half the density factor.
Interestingly enough, that turns into an argument for the notion that POV
should scale the density factor with the object whenever it would scale
the density pattern with the object, because while you could get the
current behavior by scaling the object before the interior statement in
a world where scale affected the factor, you can't get the behavior you
described at all in the current model.
I think the change could be implemented, but I also think it would require
some pretty big changes in the media code.
--
#macro R(L P)sphere{L F}cylinder{L P F}#end#macro P(V)merge{R(z+a z)R(-z a-z)R(a
-z-z-z a+z)torus{1F clipped_by{plane{a 0}}}translate V}#end#macro Z(a F T)merge{
P(z+a)P(z-a)R(-z-z-x a)pigment{rgbt 1}hollow interior{media{emission T}}finish{
reflection.1}}#end Z(-x-x.2y)Z(-x-x.4x)camera{location z*-10rotate x*90}
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 <3b166b10@news.povray.org>, Warp <war### [at] tag povray org>
wrote:
> It should scale so that if you, for example, scale the object to be
> twice as wide on screen...
What about scaling it to be half as deep? Or 10 times as long as it was?
If this is ever done, it should be as an option, probably with several
methods...greatest/smallest scale component, average scale component,
etc...otherwise, you will end up with some kind of direction-dependant
density...a neat idea, but not a good behavior for transformations in my
opinion.
--
Christopher James Huff - chr### [at] mac com, http://homepage.mac.com/chrishuff/
TAG: chr### [at] tag povray org, 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) |
Makes me conjure up a new keyword known as 'fixed', or 'static' or something
similar.
If you wanted to retain a unaffected media density when scaling then you'd
set it into a fixed unchanging state. I hadn't thought of that nonuniform
scaling problem. Maybe if it were at least either A: unaffected media or B:
affected by scaling, then that would suffice without need to complicate
things.
Kind of an addendum to what Ron was saying.
Bob H.
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) |
"Warp" wrote:
> Simon wrote:
> : So if you want to get the same result after
> : scaling you should do something like this :
> : ...
> : density{yourcolor*1/scalevalue}
>
> But this is exactly what I don't want to be forced to do.
I too have been annoyed by the current behavior, but when thinking about it
I think it's more logical this way after all.
Think about object attenuation. Using fade_power and fade_distance we can
simulate attenuation. It is a property of the material the object is made
of. If we scale the object twice as big, then, like in real life, the
attenuation is stronger because the light travels through more of it. That
is logical.
Why should media be any different? Media is also a property of the material,
and in reality it would be stronger when it is larger. Just take any colored
liquid as an example.
IMHO the current behavior should be continued.
But the current method does have problems too, so a switch to change between
behaviors would be even better...
Rune
--
3D images and anims, include files, tutorials and more:
Rune's World: http://rsj.mobilixnet.dk (updated May 10)
POV-Ray Users: http://rsj.mobilixnet.dk/povrayusers/
POV-Ray Webring: http://webring.povray.co.uk
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) |
"Rune" <run### [at] mobilixnet dk> wrote in message
news:3b169d40@news.povray.org...
>
> Think about object attenuation. Using fade_power and fade_distance we can
> simulate attenuation. It is a property of the material the object is made
> of. If we scale the object twice as big, then, like in real life, the
> attenuation is stronger because the light travels through more of it. That
> is logical.
I know, but...
> Why should media be any different? Media is also a property of the
material,
> and in reality it would be stronger when it is larger. Just take any
colored
> liquid as an example.
Yes, but not in the sense that were that object a drinking glass with some
attenuation and you simply rescaled for one reason or another you wouldn't
want it attenuating light more or less than originally when it's resized
only to fit another scene.
> But the current method does have problems too, so a switch to change
between
> behaviors would be even better...
No arguments from me.
Bob H.
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" <ron### [at] povray org> wrote:
> It really can be argued both ways, but those who would argue that the
> density factor should scale with the container have a difficult question
> to answer: how should it scale when the container is scaled nonuniformly?
>
>
>
If you think of media as tiny emitting/absorbing/reflecting particles in the
container's volume (which is what it is supposed to model) there are only
two possible ways to handle scaling the container AFAICS.
The current method is to keep constant the "number of particles" per unit of
volume. Thus if you scale the container, the total number of media particles
in the container changes and thus the apparent opacity changes. Frankly, I
think this is perfecly logical and in no way inferior to the alternative.
The other possible approach, the one which people seem to be talking about
here, is to keep constant the "number of media particles" in the container,
irrespective of scaling. Obviously this only gives the result people expect
if the container is scaled uniformly. Anyway, the correct conversion should
be something like:
Mult=sqrt(3)/vlength(Scale)
where Scale is the scaling vector of the container, and Mult is the
multiplier to be applied to the media density in the scaled container.
Since it only keeps the apparent opacity if the scaling is uniform, I'm not
sure it would be such a good default. People would then probably expect the
opacity to always stay the same, and it would be even harder to explain to
them why this is not the case with non-uniform scaling.
--
Margus Ramst
Personal e-mail: mar### [at] peak edu ee
TAG (Team Assistance Group) e-mail: mar### [at] tag povray org
Home page http://www.hot.ee/margusrt
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" <ron### [at] povray org> wrote:
>
> Interestingly enough, that turns into an argument for the notion that POV
> should scale the density factor with the object whenever it would scale
> the density pattern with the object, because while you could get the
> current behavior by scaling the object before the interior statement in a
> world where scale affected the factor, you can't get the behavior you
> described at all in the current model.
>
> I think the change could be implemented, but I also think it would require
> some pretty big changes in the media code.
>
Hmm...
That would mean anisotropic absorption/emission, right?
It would be an interesting option to have, certainly. But frankly I'm not
sure if I'd want it as the default behaviour.
--
Margus Ramst
Personal e-mail: mar### [at] peak edu ee
TAG (Team Assistance Group) e-mail: mar### [at] tag povray org
Home page http://www.hot.ee/margusrt
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 Sun, 03 Jun 2001 00:21:48 +0200, Margus Ramst wrote:
>That would mean anisotropic absorption/emission, right?
Probably not. It just means transforming the ray into the media's original
space before calculating the media's effect on it. The result is anisotropic,
but only because the scaling is also anisotropic.
--
#macro R(L P)sphere{L F}cylinder{L P F}#end#macro P(V)merge{R(z+a z)R(-z a-z)R(a
-z-z-z a+z)torus{1F clipped_by{plane{a 0}}}translate V}#end#macro Z(a F T)merge{
P(z+a)P(z-a)R(-z-z-x a)pigment{rgbt 1}hollow interior{media{emission T}}finish{
reflection.1}}#end Z(-x-x.2y)Z(-x-x.4x)camera{location z*-10rotate x*90}
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) |