POV-Ray : Newsgroups : povray.binaries.images : Experimental alternative diffuse models Server Time
8 May 2024 00:51:11 EDT (-0400)
  Experimental alternative diffuse models (Message 14 to 23 of 23)  
<<< Previous 10 Messages Goto Initial 10 Messages
From: clipka
Subject: Re: Experimental alternative diffuse models
Date: 6 Apr 2016 09:51:54
Message: <5705147a$1@news.povray.org>
Am 06.04.2016 um 14:06 schrieb Thomas de Groot:

> Thanks. I am beginning to see/understand where this may lead my use. I
> am still a bit unsure about the dedicated use of either of the two
> alternatives though for given materials.

It's actually pretty simple:

- If you're working in the field of planetary photometrics, you probably
want to use Lommel-Seeliger.

- Otherwise, you probably want to use Oren-Nayar.


Post a reply to this message

From: Thomas de Groot
Subject: Re: Experimental alternative diffuse models
Date: 7 Apr 2016 02:43:36
Message: <57060198$1@news.povray.org>
On 6-4-2016 15:51, clipka wrote:
> Am 06.04.2016 um 14:06 schrieb Thomas de Groot:
>
>> Thanks. I am beginning to see/understand where this may lead my use. I
>> am still a bit unsure about the dedicated use of either of the two
>> alternatives though for given materials.
>
> It's actually pretty simple:
>
> - If you're working in the field of planetary photometrics, you probably
> want to use Lommel-Seeliger.
>
> - Otherwise, you probably want to use Oren-Nayar.
>

Very good. That makes my life much simpler :-)

-- 
Thomas


Post a reply to this message

From: Thomas de Groot
Subject: Re: Experimental alternative diffuse models
Date: 7 Apr 2016 02:47:07
Message: <5706026b@news.povray.org>
On 6-4-2016 15:46, clipka wrote:

> Actually, having read up a bit on the models' origins and technical
> background by now, I'd say the following:
>
[...]

Thanks indeed. That answers my questions and makes comprehensive the use 
of both Lambertian and oren_nayar models. As for my own use, I think I 
shall skip the lommel_seeliger model.

-- 
Thomas


Post a reply to this message

From: Le Forgeron
Subject: Re: Experimental alternative diffuse models
Date: 7 Apr 2016 12:32:42
Message: <57068baa@news.povray.org>
Testing the new (123) code.

Center prism is lambertian (traditional)

On left, lommel_seeliger (0.5 and 1 at full left)

On most right, oren_nayar (2)

on front right, oren_nayar (1) and lommel_seeliger (0.5)


Now, I know we have a "fresnel" qualifier, but could we have some easier keyword for
the alternative diffuse models ?
(and "lambert" is not even mentionned, that is a bit unfair)

There is no chance to remember the exact spelling without double-checking the
documentation...

Something like "dusty" for oren_nayar, or "rough" ? and I have no clue for
lommel_seeliger.

It's unfair when compared to "phong", but a short name is better to avoid typo and for
memory.


Post a reply to this message


Attachments:
Download 't.png' (150 KB)

Preview of image 't.png'
t.png


 

From: clipka
Subject: Re: Experimental alternative diffuse models
Date: 7 Apr 2016 16:26:22
Message: <5706c26e$1@news.povray.org>
Am 07.04.2016 um 18:32 schrieb Le_Forgeron:

> Now, I know we have a "fresnel" qualifier, but could we have some easier keyword for
the alternative diffuse models ?
> (and "lambert" is not even mentionned, that is a bit unfair)
> 
> There is no chance to remember the exact spelling without double-checking the
documentation...
> 
> Something like "dusty" for oren_nayar, or "rough" ? and I have no clue for
lommel_seeliger.

That's a no-go, as far as I'm concerned. Here's why:

"Dustyness" or "roughness" are physical phenomena.

Oren-Nayar and Lommel-Seeliger are two mathematical approaches that
differ in the underlying model and the resulting formulae, but they are
both designed to model dustyness and roughness, and they are equally
valid attempts to approximate these phenomena.

If we call one "rough", what do we call the other? "rough2"?

What if at some point in the future we decide to provide yet another
alternative? Minnaert would be a hot candidate, for instance. "rough3"?

The "phong" and "specular" keywords are an ideal showcase of what is
wrong with that approach: The one uses the Phong model, the other the
Blinn-Phong model. One is a tad faster, while the other is a tad more
precise, but both are equally valid models to compute specular
highlights. Yet only one has the honor of carrying the generic name of
the phenomenon. (And, as a matter of fact, the name is misleading:
"specular" would normally encompass not only specular highlights but
also specular reflection -- which in turn we just call "reflection",
although that therm could also encompass diffuse reflection. In short,
keyword choice is a bitch. "albedo" turns out to have been a bad pick,
too, because besides the white-sky albedo it is actually meant to denote
there's also blue-sky albedo, black-sky albedo, geometric albedo, bond
albedo, single-scattering albedo, and what-have-you-not albedo, all
meaning different things.)


As for being difficult to remember, there are two approaches to solve this:


(A) Provide a standard include file with generic finish macros, just
like we provide standard include files with pigments, colours and some
such. You could have one "Rough" finish, that may happen to invoke the
Oren-Nayar model. Or the Lommel-Seeliger model. Or Minnaert. Or
what-have-you. If all you want is /any/ rough finish, any of the
mathematical models is good enough.

Note that work on this could be started any moment, by whoever wants to
assist in improving POV-Ray.


(B) Overhaul the entire finish syntax to define materials based on the
physical phenomena that need modelling, and _optionally_ the
mathematical model(s) to use (with defaults being picked otherwise),
maybe like so:

    finish {
      roughness 0.05
      reflection {
        // how to model light reflected in a specular manner
        brightness {
          // variable reflection
          minimum 0.0
          maximum auto // compute from ior
          #if (!UseFresnel)
            linear // just use a linear interpolation model
          #elseif (UseSchlickApproximation)
            schlick // use schlick's approximation
          #else
            fresnel // use fresnel model
          #endif
        }
        light_source {
          // how to model light coming from a light_source
          blinn_phong
        }
        environment {
          // how to model light coming from other objects
          raytracing { blur off }
        }
      }
      diffuse {
        // how to model light reflected diffusely
        brightness 0.5
        conserve_energy on // compensate for variable reflection
        light_source {
          oren_nayar
        }
        environment {
          #if (UseRadiosity)
            radiosity
          #elseif (UseMonteCarlo)
            raytracing { blur on } // Monte Carlo!
          #else
            constant 0.2 // our current "ambient"!
          #end
        }
      }
      refraction {
        // how to model light transmitted in a "specular" manner
        conserve_energy on // compensate for variable reflection
        light_source {
          raytracing { blur off } // uses looks_like
        }
        environment {
          photons
          raytracing { blur off }
        }
      }
      translucency {
        // how to model light transmitted in a diffuse manner
        ...
    }

As a matter of fact that's the general direction I'd personally prefer
to go, but it's still a loooong way to get there. So in the meantime,
new features need to be hooked up in whatever way they fit best with the
current syntax.


Post a reply to this message

From: Le Forgeron
Subject: Re: Experimental alternative diffuse models
Date: 7 Apr 2016 16:46:48
Message: <5706c738$1@news.povray.org>
Le 07/04/2016 22:26, clipka a écrit :
> Am 07.04.2016 um 18:32 schrieb Le_Forgeron:
> 
>> Now, I know we have a "fresnel" qualifier, but could we have some easier keyword
for the alternative diffuse models ?
>> (and "lambert" is not even mentionned, that is a bit unfair)
>>
>> There is no chance to remember the exact spelling without double-checking the
documentation...
>>
>> Something like "dusty" for oren_nayar, or "rough" ? and I have no clue for
lommel_seeliger.
> 
> That's a no-go, as far as I'm concerned. Here's why:
> 

Can we shorten them ? selecting only one of them (and if possible the easiest to
spell) ?
(or have aliases in the token array, so that either of them get recognised/parsed ?)

phong / specular is a nice illustration of that problem. Thanks for the point.

(I hate "Name of specifier" as a designation of item:
the law of refraction ( ior1.sin phi1 = ior2.sin phi2 ) is for many Snell's law.
But it is hammered in school as Descartes' law in France.
And sometime it is Snell-Descartes law.
Whatever, if you talk of it with an alien, you have no change of being understood
if you stick to "Name of specifier".

It's the first step of obscuring things in jargon.
)

Guess which country thinks CarolusMagnus, son of Pepin and Berthe/Bertrada, was the
emperor from ?


Post a reply to this message

From: Christian Froeschlin
Subject: Re: Experimental alternative diffuse models
Date: 7 Apr 2016 17:22:34
Message: <5706cf9a$1@news.povray.org>
Hard names aside, might it be more logical to write it like this

   diffuse {<amount> method <bla> roughness <x> ...}

similar to e.g. how reflection or media parameters are grouped.
Supported parameters depend on the method, and if it makes sense
to have e.g. a roughness parameter for multiple methods it can
have different range / interpretation depending on method).

You can also make method name lambert explicit this way except
method lambert will be default anyway.


Post a reply to this message

From: And
Subject: Re: Experimental alternative diffuse models
Date: 8 Apr 2016 02:20:00
Message: <web.57074cf476d9c520af5560460@news.povray.org>
Christian Froeschlin <chr### [at] chrfrde> wrote:
> Hard names aside, might it be more logical to write it like this
>
>    diffuse {<amount> method <bla> roughness <x> ...}
>
> similar to e.g. how reflection or media parameters are grouped.
> Supported parameters depend on the method, and if it makes sense
> to have e.g. a roughness parameter for multiple methods it can
> have different range / interpretation depending on method).
>
> You can also make method name lambert explicit this way except
> method lambert will be default anyway.

I vote this.


Post a reply to this message

From: Thomas de Groot
Subject: Re: Experimental alternative diffuse models
Date: 8 Apr 2016 02:50:49
Message: <570754c9$1@news.povray.org>
On 8-4-2016 8:17, And wrote:
> Christian Froeschlin <chr### [at] chrfrde> wrote:
>> Hard names aside, might it be more logical to write it like this
>>
>>     diffuse {<amount> method <bla> roughness <x> ...}
>>
>> similar to e.g. how reflection or media parameters are grouped.
>> Supported parameters depend on the method, and if it makes sense
>> to have e.g. a roughness parameter for multiple methods it can
>> have different range / interpretation depending on method).
>>
>> You can also make method name lambert explicit this way except
>> method lambert will be default anyway.
>
> I vote this.
>

Yes, me too.

-- 
Thomas


Post a reply to this message

From: omniverse
Subject: Re: Experimental alternative diffuse models
Date: 8 Apr 2016 14:20:00
Message: <web.5707f52376d9c520b1933f770@news.povray.org>
clipka <ano### [at] anonymousorg> wrote:
>
> - If you're working in the field of planetary photometrics, you probably
> want to use Lommel-Seeliger.

Don't see these newsgroups much anymore and by chance found your new diffuse
implementation being talked about. Finally gave it a try after getting the
latest version (123). Thanks for providing the opportunity!

I don't actually work in planetary photometrics, just play. Ever since the Pluto
pictures were shown last summer I began trying to simulate its surface and
atmosphere using POV-Ray.

isosurface uses crude global image from the New Horizons mission, not a true
elevation map, that I just tweaked on to get usable. The 'media' atmosphere is
just a guess based on how it looks in photos.

Images compared here are the default diffuse, 0.6, with 'albedo' added, at top.

Bottom is lommel-seeliger 0.6 and although you might not see the difference
right away please look closely at the upper and lower portions of the sunlit
crescent.
Also especially not obvious at this picture size is how the sunlit horizon edge,
next to space as opposed to shadow terminator, is kept brighter with
lommel-seeliger.

Unfortuntely this is about all I have done to compare, only using 0.8 and this
one 0.6 as the lommel-seeliger value. In fact I didn't even try the other
diffuse model yet, but here's what I've added to my Pluto scene file for the
finish statement:

   finish
   {
    //emission <0.15,0.05,0.005>*<1.5,0.75,0.5>
    //ambient <0.15,0.05,0.005>
    brilliance 3 // um, yeah, whatever for this!
    diffuse albedo 0.6
    #if (SurfaceDiffusion=on)
    //oren_nayar 0.7 // not tried yet
    lommel_seeliger 0.6
    #end
    specular 0.8
    roughness 0.2
    metallic 0.8 // just experimenting too
   }

Little I know of this stuff but to me it does look promising for surfaces of
planets, moons, asteroids, comets...


Post a reply to this message


Attachments:
Download 'diffuse-albedo_ls-compared.jpg' (29 KB)

Preview of image 'diffuse-albedo_ls-compared.jpg'
diffuse-albedo_ls-compared.jpg


 

<<< Previous 10 Messages Goto Initial 10 Messages

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