POV-Ray : Newsgroups : povray.newusers : How to get preserve color through an intersection call? : Re: How to get preserve color through an intersection call? Server Time
4 Jul 2024 13:56:27 EDT (-0400)
  Re: How to get preserve color through an intersection call?  
From: Alain
Date: 3 Oct 2010 14:20:15
Message: <4ca8c95f$1@news.povray.org>

> On 10/03/2010 04:42 AM, Brad wrote:
>> #declare shell = difference{
>> sphere{<0,0,0>  6}
>> sphere{<0,0,0>  5}}
>
> try assigning a pigment to the above and that might better visualize
> whats going on here ...
>
>> // and this is putting the spherical shell with holes in it with the filled
>> //holes
>>
>> union{
>> object{shell_with_cylindercutouts texture {pigment{color rgb<0,0,0>}}}
>> object{cutouts}}
>
> then comment out the union stuff and look at the "cutouts" only ... I
> didn't try it but I think having the "bunch_of_cyclinders" extend beyond
> the outer skin of the "shell" is the problem.

There is nothing wrong with the warning, and it don't point to the real 
problem.

The extent of an object relative to another don't have any effect exept 
preventing coincident surfaces artefacts.

Whenever you use a difference or intersections, the various surfaces 
take the texture of the object that define THAT surface. The end of the 
cutouts thake their colouration from the sphere and their sides from the 
cylinders.

Here's the real problem:
You have the shell with the holes. The sides of the holes ARE coloured.
You have the cutouts. The sides of those are also coloured.
Then, you union both, reconstructing the original sphere.
The coloured parts are there but hiden inside the thickhess of the shell.

You need to make your pierced shell, then place coloured and transparent 
pieces into the holes.
You can make some sets of cutouts and give each the desided colouration. 
One red set, one green set and one blue set in your case.

A side note: Why not let POV-Ray compute the end points of your 
cylinders? Just use a cylinder like this one:
cylinder{0, 10*x, 0.5}
Then, you rotate it to where you want it. This gives you a cleaner code.
Also, when you have very small values like 5.66549845232e-15, you can 
replace them with 0 (zero), the difference is absolutely negligeable. In 
fact, usualy, any value smaller than 1e-6 can be changed to zero.



Alain


Post a reply to this message

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