![](/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) |
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
|
![](/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 <Xns### [at] 204 213 191 226>,
"Rafal 'Raf256' Maj" <raf### [at] raf256 com> 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] earthlink net>
http://home.earthlink.net/~cjameshuff/
POV-Ray 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) |
"Rafal 'Raf256' Maj" <raf### [at] raf256 com> wrote in message
news:Xns### [at] 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 ?
>
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
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |