|
![](/i/fill.gif) |
> Hello,
>
> I've a transparency problem with a rolled up plane, which I created by lots of
> very narrow boxes:
>
> #declare tube = merge{
> box {<0,0,0>,<0.2,7.5,0.075> pigment {rgb<0,0,1>}}
> box {<0.2,0>,<0.366,7.5,0.075> pigment
> {rgb<0.2,0.2,0.3>}}
> }
>
>
> #declare i = 0;
>
> #while ( i<= 2000)
> object {tube translate<2.3+i/2500,0,0> rotate<0,i/909*360,0>}
> declare i = i + 1;
>
> #end
>
> Adding a factor of transparency by "transmit" in "pigment" doesn't work. Even if
> I add a transmit factor of 0.9 the rolled up plane stays as it is with a factor
> of 0.0
>
> What's the reason for the behaviour of this object?
>
>
>
>
>
>
Your "Tube" object been a merge (or union) of textured objects, any
texture given to the final object would be ignored. Remove the texture
from that part, or have them transparent.
You probably have a max_trace_level problem.
If you wrap your loop in a merge, you may get closer to what you want as
the inside surfaces will get removed.
It will be prety long to render such a merge.
#declare tube = merge{
box {<0,0,0>, <0.201,7.5,0.075> pigment {rgb<0,0,1>}}
// the 0.201 is to prevent coincident surfaces between the two //components.
box {<0.2,0>, <0.366,7.5,0.075> pigment
{rgb<0.2,0.2,0.3>}}
}
/////////////////////////
merge{// this remover the inner surfaces.
#declare i = 0;
#while ( i <= 2000)
object {tube translate<2.3+i/2500,0,0> rotate <0,i/909*360,0>}
declare i = i + 2;
#end
}
You may need to increase the max_trace_level like:
global_settings{max_trace_leve 20}
You may try using a blob object with many cylinder components like:
blob{threshold 0.1
#declare i = 0;
#while ( i <= 2000)
cylinder{0, <0, 7.5, 0.075>, 0.1, 0.3
translate<2.0+i/250,0,0>
rotate <0,i/909*380,0>
}
#declare i = i + 1;
#end
pigment{rgbf<1, 0.3, 0.7, 0.9>}
rotate <-120, 25, 0>
}
Alain
Post a reply to this message
|
![](/i/fill.gif) |