POV-Ray : Newsgroups : povray.general : no_image ignored in nested (difference > union > object) CSG member : Re: no_image ignored in nested (difference > union > object) CSG member Server Time
23 Apr 2024 14:53:03 EDT (-0400)
  Re: no_image ignored in nested (difference > union > object) CSG member  
From: Alain Martel
Date: 24 Mar 2020 10:46:22
Message: <5e7a1d3e$1@news.povray.org>
Le 2020-03-24 à 09:14, Oblomov a écrit :
> Hello,
> and thanks for taking time to look into this and provide an explanation:
> 
> William F Pokorny <ano### [at] anonymousorg> wrote:
>>> The `difference` is intentionally ‘useless’, since it's only supposed to
>>> illustrate the odd behavior: both walls are rendered. Replacing the `difference`
>>> with a direct use of the object `object { Pair pigment { color White } }` works
>>> as expected, as does using a union instead of a difference (in both cases, a
>>> single wall is visible, albeit with a shadow cast from the other, invisible
>>> wall).
>>>
>>> I'm not entirely sure if this behavior is expected or a bug. In the latter case,
>>> should I open a GitHub issue?
>>>
>>
>> Hi,
>>
>> I believe what you see is expected behavior
> 
> I was actually hoping for this to be a bug, since achieving the same effect will
> require me to restructure the source in a somewhat «illogical» way: I was hoping
> to be able to define a Room object with all the walls and floors and ceilings
> and holes in them, and make one of the walls “see-through” for the camera. I
> guess now I'll have to build the rooms without the see-through wall at all and
> then add it (with the no_image tag) as a separate object. I guess I'm lucky I
> don't need to operate complex transformations on the rooms themselves, so this
> will be relatively easy.
> 

For that «see through» wall : You can replace that wall with a polygon 
and give it a regular texture and an inside_texture with pigment{rgbt 1}.

When seen from the front, you see the normal texture, but, when seeing 
it from the back, it will be perfectly transparent.

Another way would be to define your room as a mesh with an 
inside_vector. You then give it : pigment{rgbt 1} and an 
interior_texture with the texture for the walls.

That way, when the camera is inside the room, everything will look 
normal, but, when the camera is outside, the walls facing the camera 
will be invisible.

Not perfect as lights that are outside of the room will see the 
transparent part and shine through.


Post a reply to this message

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