POV-Ray : Newsgroups : povray.newusers : pigment / finish in union Server Time
25 Dec 2024 13:28:54 EST (-0500)
  pigment / finish in union (Message 1 to 3 of 3)  
From: Rafal 'Raf256' Maj
Subject: pigment / finish in union
Date: 30 Sep 2002 17:12:00
Message: <Xns9299EBC81E5B5raf256com@204.213.191.226>
Hello,
very simple question :

union {                                          
  #declare a = 0.98;
  #declare b = 0.30;
  cylinder { -y, +y*100, 10 pigment { color rgb <a,b,b> } translate z*0  } 
  cylinder { -y, +y*100, 10 pigment { color rgb <a,a,b> } translate z*40 } 
  cylinder { -y, +y*100, 10 pigment { color rgb <b,a,b> } translate z*80 } 
  finish { specular 0.9 roughness 0.02 reflection .5 } // ((1))
  translate <100,0,0>
}  

shouldn't this code set the ((1)) finish to all 3 cyliders in union, 
leaving pigment differnet for each of them ?

Have I to put finish{...} block into each cylinder{...} even it is same for 
all objects in union ?

-- 
#macro g(U,V)(.4*abs(sin(9*sqrt(pow(x-U,2)+pow(y-V,2))))*pow(1-min(1,(sqrt(
pow(x-U,2)+pow(y-V,2))*.3)),2)+.9)#end#macro p(c)#if(c>1)#local l=mod(c,100
);g(2*div(l,10)-8,2*mod(l,10)-8)*p(div(c,100))#else 1#end#end light_source{
y 2}sphere{z*20 9pigment{function{p(26252423)*p(36455644)*p(66656463)}}}//M


Post a reply to this message

From: Christopher James Huff
Subject: Re: pigment / finish in union
Date: 30 Sep 2002 17:56:08
Message: <chrishuff-6D6C1F.17532430092002@netplex.aussie.org>
In article <Xns### [at] 204213191226>,
 "Rafal 'Raf256' Maj" <raf### [at] raf256com> wrote:

> shouldn't this code set the ((1)) finish to all 3 cyliders in union, 
> leaving pigment differnet for each of them ?

No. The finish statement is expanded into a full texture with default 
values for anything that isn't specified, which is applied to any 
untextured objects in the union (there are none in your example).


> Have I to put finish{...} block into each cylinder{...} even it is same for 
> all objects in union ?

Yes. You don't have to specify the whole thing every time, you could 
declare it and use the declared finish, but you need a finish block for 
each of them. You could also use a declared texture, and modify its 
pigment, or use a macro.

-- 
Christopher James Huff <cja### [at] earthlinknet>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: chr### [at] tagpovrayorg
http://tag.povray.org/


Post a reply to this message

From: Tom Melly
Subject: Re: pigment / finish in union
Date: 1 Oct 2002 04:57:22
Message: <3d996372$1@news.povray.org>
"Rafal 'Raf256' Maj" <raf### [at] raf256com> wrote in message
news:Xns### [at] 204213191226...
> Hello,
> very simple question :
>
> union {
>   #declare a = 0.98;
>   #declare b = 0.30;
>   cylinder { -y, +y*100, 10 pigment { color rgb <a,b,b> } translate z*0  }
>   cylinder { -y, +y*100, 10 pigment { color rgb <a,a,b> } translate z*40 }
>   cylinder { -y, +y*100, 10 pigment { color rgb <b,a,b> } translate z*80 }
>   finish { specular 0.9 roughness 0.02 reflection .5 } // ((1))
>   translate <100,0,0>
> }
>
> shouldn't this code set the ((1)) finish to all 3 cyliders in union,
> leaving pigment differnet for each of them ?
>

Nice idea - the trouble is that your pigment statements are not just pigments -
they are expanded to a full texture (including a finish). Therefore your finish
statement has no effect, since it only applies to untextured objects in the
union.

What you need is:

#declare MyFinish =   finish { specular 0.9 roughness 0.02 reflection .5 }
union {
  #declare a = 0.98;
  #declare b = 0.30;
  cylinder { -y, +y*100, 10 pigment { color rgb <a,b,b> } finish{MyFinish}
translate z*0  }
  cylinder { -y, +y*100, 10 pigment { color rgb <a,a,b> } finish{MyFinish}
translate z*40 }
  cylinder { -y, +y*100, 10 pigment { color rgb <b,a,b> } finish{MyFinish}
translate z*80 }
  translate <100,0,0>
}


Post a reply to this message

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