![](/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) |
Three different ways to compute gradients:
Left: Interpolation in a linear color space (assumed_gamma 1.0); color
gradients look fine, while greyscale gradients appear to be biased
towards white (despite being physically linear).
Center: Interpolation in a gamma 2.5 color space; greyscale gradients
look better (despite being physically non-linear), but color gradients
have a tendency to look too dark in the transition zone.
Right: Interpolating the R:G:B ratio linearly, then adjusting for a
brightness interpolated in a gamma 2.5 color space, yields both pleasing
color and brightness gradients.
Post a reply to this message
Attachments:
Download 'gradients.png' (149 KB)
Preview of image 'gradients.png'
![gradients.png](/povray.binaries.images/attachment/%3C4fb4bb51%40news.povray.org%3E/gradients.png?ttop=443866&toff=1800&preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Le 17/05/2012 10:48, clipka nous fit lire :
> Three different ways to compute gradients:
>
> Left: Interpolation in a linear color space (assumed_gamma 1.0); color
> gradients look fine, while greyscale gradients appear to be biased
> towards white (despite being physically linear).
>
> Center: Interpolation in a gamma 2.5 color space; greyscale gradients
> look better (despite being physically non-linear), but color gradients
> have a tendency to look too dark in the transition zone.
>
> Right: Interpolating the R:G:B ratio linearly, then adjusting for a
> brightness interpolated in a gamma 2.5 color space, yields both pleasing
> color and brightness gradients.
What about... interpolating in HSV or HSL space ?
any available scene source ?
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) |
Am 17.05.2012 12:24, schrieb Le_Forgeron:
> What about... interpolating in HSV or HSL space ?
No, thanks - we certainly don't want to average hues. That would mess up
every gradient involving some neutral grey and any other color, giving
the transition an unexpected reddish hue (or whatever hue our algorithm
would assign to grey).
> any available scene source ?
Nope; the scene relies on a source code patch, which won't make it into
3.7.0 (it may become part of some future 3.7.1 though).
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) |
Le 18/05/2012 14:44, clipka nous fit lire :
> Am 17.05.2012 12:24, schrieb Le_Forgeron:
>
>> What about... interpolating in HSV or HSL space ?
>
> No, thanks - we certainly don't want to average hues. That would mess up
> every gradient involving some neutral grey and any other color, giving
> the transition an unexpected reddish hue (or whatever hue our algorithm
> would assign to grey).
If you have a neutral grey and another non-neutral, the right hue for
grey is the other hue.
The real non-slope is opposite hue. (yellow & blue... magenta & green..)
>
>> any available scene source ?
>
> Nope; the scene relies on a source code patch, which won't make it into
> 3.7.0 (it may become part of some future 3.7.1 though).
My mind with a twist: could you make the same picture, but with the
original colours rotated by about 10° to 15° in the Hue ?
Anyway, waiting for a general coded solution in 3.7.1 then ;)
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) |
Am 18.05.2012 18:19, schrieb Le_Forgeron:
> Le 18/05/2012 14:44, clipka nous fit lire :
>> Am 17.05.2012 12:24, schrieb Le_Forgeron:
>>
>>> What about... interpolating in HSV or HSL space ?
>>
>> No, thanks - we certainly don't want to average hues. That would mess up
>> every gradient involving some neutral grey and any other color, giving
>> the transition an unexpected reddish hue (or whatever hue our algorithm
>> would assign to grey).
>
> If you have a neutral grey and another non-neutral, the right hue for
> grey is the other hue.
Yes, but the code to convert between RGB and HSV/HSL doesn't know that.
Besides, any grey ever so slightly off-neutral - whether intentionally
or unintentionally - has its own inherent hue.
Oh, and averaging hues would actually not just tint the transition, it
would make them rainbow-style. For instance, a transition between green
and an ever so slightly reddish grey would include some pastel yellow.
Or some blue and pink, depending on which "direction" you choose for
interpolating hues.
> The real non-slope is opposite hue. (yellow& blue... magenta& green..)
When interpolating hues, those would become rainbow-style rather than
going via neutral grey.
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) |
Le 18/05/2012 19:06, clipka nous fit lire :
> Am 18.05.2012 18:19, schrieb Le_Forgeron:
>> The real non-slope is opposite hue. (yellow& blue... magenta& green..)
>
> When interpolating hues, those would become rainbow-style rather than
> going via neutral grey.
My personal approach on that: hue is a circle, choose whichever section
is smaller for interpolation; if both are equal, just go through the center.
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) |
Le 18/05/2012 20:30, Le_Forgeron nous fit lire :
> Le 18/05/2012 19:06, clipka nous fit lire :
>> Am 18.05.2012 18:19, schrieb Le_Forgeron:
>>> The real non-slope is opposite hue. (yellow& blue... magenta& green..)
>>
>> When interpolating hues, those would become rainbow-style rather than
>> going via neutral grey.
>
> My personal approach on that: hue is a circle, choose whichever section
> is smaller for interpolation; if both are equal, just go through the center.
Here some illustration of povray rgb interpolation, hsv, hsl and using
linear cartesian interpolation of (h,s) taken as polar coordinate,
The important point in interpolation is at least that (red,red) stay red
all the way.
Post a reply to this message
Attachments:
Download 'pol9.png' (105 KB)
Download 'pol6.png' (120 KB)
Download 'pol3.png' (123 KB)
Download 'pol.png' (146 KB)
Preview of image 'pol9.png'
![pol9.png](/povray.binaries.images/attachment/%3C4fb6b993%40news.povray.org%3E/pol9.png?ttop=443866&toff=1800&preview=1)
Preview of image 'pol6.png'
![pol6.png](/povray.binaries.images/attachment/%3C4fb6b993%40news.povray.org%3E/pol6.png?ttop=443866&toff=1800&preview=1)
Preview of image 'pol3.png'
![pol3.png](/povray.binaries.images/attachment/%3C4fb6b993%40news.povray.org%3E/pol3.png?ttop=443866&toff=1800&preview=1)
Preview of image 'pol.png'
![pol.png](/povray.binaries.images/attachment/%3C4fb6b993%40news.povray.org%3E/pol.png?ttop=443866&toff=1800&preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |