POV-Ray : Newsgroups : povray.general : Colour from single trace Server Time
6 May 2024 02:48:16 EDT (-0400)
  Colour from single trace (Message 4 to 13 of 26)  
<<< Previous 3 Messages Goto Latest 10 Messages Next 10 Messages >>>
From: Kenneth
Subject: Re: Colour from single trace
Date: 28 Oct 2018 12:55:05
Message: <web.5bd5e8c7306629fe43b397d0@news.povray.org>
eval_pigment returns the 'linear' color of an object, not a gamma-bent color
(i.e., not at gamma 2.2.) I.e., it returns an rgb color, not an srgb one. If the
*original* color of your object was chosen to be srgb <...> rather than rgb, and
you want to use the returned srgb equivalent in your scene or for some other
purpose, the result should be used as  srgb <0.2,0.5,0.75>, for example, not rgb
<...>.

But if your original color was  rgb <...>, then eval_pigment will return that
same color.

As Clipka noted, eval_pigment doesn't take into account the *illumination* of
the object-- lighting, shadow, phong, etc--, just the basic strict color found
there.


Post a reply to this message

From: Alain
Subject: Re: Colour from single trace
Date: 28 Oct 2018 21:18:01
Message: <5bd65fc9$1@news.povray.org>
Le 18-10-28 à 12:50, Kenneth a écrit :
> eval_pigment returns the 'linear' color of an object, not a gamma-bent color
> (i.e., not at gamma 2.2.) I.e., it returns an rgb color, not an srgb one. If the
> *original* color of your object was chosen to be srgb <...> rather than rgb, and
> you want to use the returned srgb equivalent in your scene or for some other
> purpose, the result should be used as  srgb <0.2,0.5,0.75>, for example, not rgb
> <...>.
> 
> But if your original color was  rgb <...>, then eval_pigment will return that
> same color.
> 
> As Clipka noted, eval_pigment doesn't take into account the *illumination* of
> the object-- lighting, shadow, phong, etc--, just the basic strict color found
> there.
> 
> 
> 
> 

Also, it probably won't work for UV mapped textures.


Post a reply to this message

From: Norbert Kern
Subject: Re: Colour from single trace
Date: 29 Oct 2018 16:20:00
Message: <web.5bd76b15306629fe9487b4210@news.povray.org>
"Paul Bourke" <pau### [at] gmailcom> wrote:
> I am aware of the trace macro that returns the intersection point and normal at
> that point on a object given a ray (point and direction). But is there a way to
> get the colour?


What do you have in hands to determine the intersection point?


there lies a solution for some of the mentioned limitations - in combination
with a mesh camera.


Norbert


Post a reply to this message

From: And
Subject: Re: Colour from single trace
Date: 9 Nov 2018 23:25:01
Message: <web.5be65c9a306629fefd114ee40@news.povray.org>
"Paul Bourke" <pau### [at] gmailcom> wrote:
> I am aware of the trace macro that returns the intersection point and normal at
> that point on a object given a ray (point and direction). But is there a way to
> get the colour?

I want this function, too. But I want it for UV map...


Post a reply to this message

From: Le Forgeron
Subject: Re: Colour from single trace
Date: 11 Nov 2018 03:43:24
Message: <5be7ebac$1@news.povray.org>
Le 10/11/2018 à 05:20, And a écrit :
> "Paul Bourke" <pau### [at] gmailcom> wrote:
>> I am aware of the trace macro that returns the intersection point and normal at
>> that point on a object given a ray (point and direction). But is there a way to
>> get the colour?
> 
> I want this function, too. But I want it for UV map...
> 
> 
UV mapping of object does make sense (in term of trace), but I'm still
perplex about getting the colour...

There could be more than a single texture (layered), or a complex
texture, and there is finish too which can interfere (a white pigment
with a mirror finish reflecting a complex environment).

So, when asking for "colour" at intersection point, what is expected ?
#1: the colour (<r,g,b>) of the point as it would appear on a rendered
image (e.g. a white sphere in the dark would return black)
#2: the intrinsect colour(<r,g,b>) of the object at that point (e.g. a
white sphere in the dark would return white)

(Yes, I'm repeating C.Lipka's question, because it went unanswered)


Post a reply to this message

From: Stephen
Subject: Re: Colour from single trace
Date: 11 Nov 2018 05:02:57
Message: <5be7fe51$1@news.povray.org>
On 10/11/2018 04:20, And wrote:

On 11/11/2018 08:43, Le_Forgeron wrote:
>> I want this function, too. But I want it for UV map...
>>
>>
> UV mapping of object does make sense (in term of trace), but I'm still
> perplex about getting the colour...
> 
> There could be more than a single texture (layered), or a complex
> texture, and there is finish too which can interfere (a white pigment
> with a mirror finish reflecting a complex environment).
> 
> So, when asking for "colour" at intersection point, what is expected ?
> #1: the colour (<r,g,b>) of the point as it would appear on a rendered
> image (e.g. a white sphere in the dark would return black)
> #2: the intrinsect colour(<r,g,b>) of the object at that point (e.g. a
> white sphere in the dark would return white)
> 

I’ve thought about this in the past.
I think that your option #1 is too complicated. It seems to me that it 
would involve a secondary raytracing operation with maybe a limit to the 
depth of reflective and/or refractive bounces. (Sorry, I don’t have the 
right vocabulary.)
Option #2 is closer to what I would find useful. If “trace” also 
returned the RGB* value of the uv image map at the point of intersection 
of the object by trace. That would be usable.
* Also filter and transmit values, if possible.


> (Yes, I'm repeating C.Lipka's question, because it went unanswered)

Your option #2 opens up the discussion. Christoph's answer on first 
reading is too similar to what every other reply to this question has 
been. Which is: No, nay, never.


-- 

Regards
     Stephen


Post a reply to this message

From: Thomas de Groot
Subject: Re: Colour from single trace
Date: 11 Nov 2018 07:20:30
Message: <5be81e8e$1@news.povray.org>
On 27-10-2018 13:16, Paul Bourke wrote:
> I am aware of the trace macro that returns the intersection point and normal at
> that point on a object given a ray (point and direction). But is there a way to
> get the colour?
> 
> 

That would be nice to have. IT can of course be done now with a 
combination of (1) the trace macro, and (2) the eval_pigment() function.

-- 
Thomas


Post a reply to this message

From: Bald Eagle
Subject: Re: Colour from single trace
Date: 11 Nov 2018 08:25:00
Message: <web.5be82d46306629fe765e06870@news.povray.org>
I think that directly, one can get the underlying pigment rgb values, and
perhaps there's a way to reverse-uv-map the object to get a traceable point on
the image to evaluate.

With regard to the final displayed color, it might be possible to explore this
in light of the screen-object-placement work that's been done.
Pinpointing the pixel on the screen that corresponds to the trace intersection
point would give you the screen x-y position, and once the scene is rendered,
THAT pixel rgb is known with absolute certainty.

It's not a quick process by any means, nor would it likely easily lend itself to
convenient automation.
Perhaps if the selected coordinates of the 2D bounding box for the "re-render
only this area of the screen" feature could be captured, then that might make it
easier to "scan" that square and get a range of values, or render a new scene
composed of just those pixels - "enlarged" to a full-screen size, and with rgb
values in text superimposed....

Or you could just open the render in a 3rd party software package, zoom in, and
use the eye-dropper tool.   :)


Post a reply to this message

From: Thomas de Groot
Subject: Re: Colour from single trace
Date: 11 Nov 2018 11:39:06
Message: <5be85b2a@news.povray.org>
On 11-11-2018 14:23, Bald Eagle wrote:
> I think that directly, one can get the underlying pigment rgb values, and
> perhaps there's a way to reverse-uv-map the object to get a traceable point on
> the image to evaluate.
> 

The closest I have come is attached.

-- 
Thomas


Post a reply to this message


Attachments:
Download 'carpet_01.zip' (961 KB)

From: Alain
Subject: Re: Colour from single trace
Date: 11 Nov 2018 18:55:48
Message: <5be8c184$1@news.povray.org>
Le 18-11-11 à 05:02, Stephen a écrit :

> Option #2 is closer to what I would find useful. If “trace” also 
> returned the RGB* value of the uv image map at the point of intersection 
> of the object by trace. That would be usable.
> * Also filter and transmit values, if possible.
> 
> 
Trace return a coordinate, and optionally, a normal vector.
#declare Normal = <0,0,0>;
#declare Location = trace(Object, Origin, Direction, Normal );

«Location» will return the intersection point, or <0,0,0> if it miss the 
object and «Norm» will return the normal at the found point, or <0,0,0> 
if the object is missed.
Only testing the normal can reliably determine if the object is hit or not.

Next, you need to use eval_pigment() to get the pigment at the 
intersection point, using the transformed pigment of the target object.
If a layered texture is used for the object, then, you need to evaluate 
that layered texture. Better declare that texture and keep track of any 
transformation applied to the object after the texture is applied.

This will return the RGB value of the pigment at the found point.

This don't work for UV mapped textures as those are only defined at the 
surface. Same for aoi and slope patterns.
It WILL work for an image_map as it stretch infinitely along the Z axis.
It will also work for any map type as those are defined everywhere.

What you want is a trace that do use a fifth parameter to return the 
pigment at the found point. This is not possible now, and probably not 
in the short trem. Something like :
#declare Normal = <0,0,0>;
#declare Pigment = rgb 0;
#declare Location = trace(Object, Origin, Direction, Normal , Pigment );


Post a reply to this message

<<< Previous 3 Messages Goto Latest 10 Messages Next 10 Messages >>>

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