|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
#version 3.7;
#include "textures.inc"
difference
{
box{<-2,1,-2>, < 2,4, 2> }
union
{
box{< 0,0,-3>, < 3,3, 3>}
box{< 0,2,-3>, < 3,5, 3>}
}
texture {Gold_Texture}
}
light_source { <5,3,0> }
camera
{
location <5,3,0>
look_at <0,3,0>
sky <0,1,0>
}
Rendering the above scene creates a box with some kind of hole in the middle.
The boxes in the union must be like a big box {< 0,0,-3>, < 3,5, 3>} but the
behavior is different.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
After some changes...
> #version 3.7;
Mendatory:
global_settings{assumed_gamma 1}
>
> #include "textures.inc"
>
> //difference
union
> {
> box{<-2,1,-2>, < 2,4, 2> }
Remove the useless union.
> // union // This is not needed at all
> // {
New colouring.
> box{< 0,0,-3>, < 3,3, 3> pigment{rgbf<1,0.1,0.1,1>}}
> box{< 0,2,-3>, < 3,5, 3> pigment{rgbf<0.1,0.1,1,1>}}
> // }
> pigment{rgb<0.1,1,0.1>}
> }
>
> light_source { <5,3,0> rgb 1}
This light is BLACK!
You must add some colour.
>
> camera
> {
Pull the camera back so we can see the whole thing
> location <5,3,-9>
> look_at <0,3,0>
> sky <0,1,0>
> }
>
> Rendering the above scene creates a box with some kind of hole in the middle.
> The boxes in the union must be like a big box {< 0,0,-3>, < 3,5, 3>} but the
> behavior is different.
>
>
There is a construction problem as well as coincident surfaces that
cause some additional problems.
Changing the difference to an union.
Giving distinct colour to each component...
Pull back the camera to -9*z
Adding a colour value to the light_source
and we get:
A smaller green box, a large red and a large blue box.
Most of the green box is inside the others.
The red and blue overlap.
The red and blue boxes have coincident surfaces. This can throw
insideness tests off.
The problem is NOT version dependent, version 3.6 or 3.5 should render
similarly.
Alain
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> There is a construction problem as well as coincident surfaces that
> cause some additional problems.
>
> Changing the difference to an union.
> Giving distinct colour to each component...
> Pull back the camera to -9*z
> Adding a colour value to the light_source
> and we get:
>
> A smaller green box, a large red and a large blue box.
> Most of the green box is inside the others.
> The red and blue overlap.
> The red and blue boxes have coincident surfaces. This can throw
> insideness tests off.
>
> The problem is NOT version dependent, version 3.6 or 3.5 should render
> similarly.
>
>
> Alain
This bug is not present in version 3.6, I just rendered it in 3.6.2.
The boxes inside the union have coincident surfaces and that is causing the
problem. If I make an small change, lets say 3.0001 instead of 3, the problem
disappears. I hope you can fix this bug because is very annoying, and with
version 3.6 there was no problem.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 07/02/2012 10:37 PM, jotito wrote:
> #version 3.7;
>
> #include "textures.inc"
>
> difference
> {
> box{<-2,1,-2>, < 2,4, 2> }
> union
> {
> box{< 0,0,-3>, < 3,3, 3>}
> box{< 0,2,-3>, < 3,5, 3>}
> }
> texture {Gold_Texture}
> }
>
> light_source { <5,3,0> }
>
> camera
> {
> location <5,3,0>
> look_at <0,3,0>
> sky <0,1,0>
> }
>
> Rendering the above scene creates a box with some kind of hole in the middle.
> The boxes in the union must be like a big box {< 0,0,-3>, < 3,5, 3>} but the
> behavior is different.
>
>
OK ... so what's new (I'm confused) are you trying to do this:
difference
{
box{<-2,1,-2>, < 2,4, 2> }
box{< 0,0,-3>, < 3,2, 3> }
box{< 0,3,-3>, < 3,5, 3> }
texture {Gold_Texture}
}
or this:
difference
{
box{<-2,1,-2>, < 2,4, 2> }
box{< 0,0,-3>, < 3,3, 3> }
box{< 0,2,-3>, < 3,5, 3> }
texture {Gold_Texture}
}
because if it's the 2nd one why not just do this:
box{<-2,1,-2>, < 0,4, 2> }
.. I mean yer just choppin' off the pos x portion of the main box!
Jim
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
>
> OK ... so what's new (I'm confused) are you trying to do this:
>
> difference
> {
> box{<-2,1,-2>, < 2,4, 2> }
> box{< 0,0,-3>, < 3,2, 3> }
> box{< 0,3,-3>, < 3,5, 3> }
> texture {Gold_Texture}
> }
>
> or this:
>
> difference
> {
> box{<-2,1,-2>, < 2,4, 2> }
> box{< 0,0,-3>, < 3,3, 3> }
> box{< 0,2,-3>, < 3,5, 3> }
> texture {Gold_Texture}
> }
>
> because if it's the 2nd one why not just do this:
>
> box{<-2,1,-2>, < 0,4, 2> }
>
> .. I mean yer just choppin' off the pos x portion of the main box!
>
> Jim
What I am doing is creating a Military Tank using CSG. I detected that a part of
the tank was hollow, or "semi-hollow". The same thing that happens when you
extract an object from itself:
difference
{
box{A,B}
box{A,B}
}
But I am aware of that problem and I always avoid it. So I made a detailed
inspection of the code. After hours of checking the code I finally found the
bug.
The code I posted here is just a minimal example of how to reproduce the bug.
Of course I can fix the thing with some "tricks", but that is not the point, I
think is better if a bug is fixed rather than avoiding it using tricks.
I am not asking for a way to avoid the bug, what I want is to inform the
existence of this bug.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 07/03/2012 02:38 PM, jotito wrote:
>>
>> OK ... so what's new (I'm confused) are you trying to do this:
>>
>> difference
>> {
>> box{<-2,1,-2>, < 2,4, 2> }
>> box{< 0,0,-3>, < 3,2, 3> }
>> box{< 0,3,-3>, < 3,5, 3> }
>> texture {Gold_Texture}
>> }
>>
>> or this:
>>
>> difference
>> {
>> box{<-2,1,-2>, < 2,4, 2> }
>> box{< 0,0,-3>, < 3,3, 3> }
>> box{< 0,2,-3>, < 3,5, 3> }
>> texture {Gold_Texture}
>> }
>>
>> because if it's the 2nd one why not just do this:
>>
>> box{<-2,1,-2>, < 0,4, 2> }
>>
>> .. I mean yer just choppin' off the pos x portion of the main box!
>>
>> Jim
>
> What I am doing is creating a Military Tank using CSG. I detected that a part of
> the tank was hollow, or "semi-hollow". The same thing that happens when you
> extract an object from itself:
> difference
> {
> box{A,B}
> box{A,B}
> }
1 - 1 = 0 ... for a hollow box with thickness to the walls, the inside
box HAS to be smaller than the outside box and unioned with an even
smaller box that extends below the outside boxes outer dimension (-y
relative to the outer box. If you want a hollow shelled box then just
use a single box with the hollow object modifier.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> There is a construction problem as well as coincident surfaces that
> cause some additional problems.
>
> Changing the difference to an union.
> Giving distinct colour to each component...
> Pull back the camera to -9*z
> Adding a colour value to the light_source
> and we get:
>
> A smaller green box, a large red and a large blue box.
> Most of the green box is inside the others.
> The red and blue overlap.
> The red and blue boxes have coincident surfaces. This can throw
> insideness tests off.
>
> The problem is NOT version dependent, version 3.6 or 3.5 should render
> similarly.
>
>
> Alain
After several tests I just find that the problem actually is the same in 3.6 and
3.7, the code I tested in 3.6 was a different one. So the problem is NOT version
dependent.
I guess will be better to use Blender or other software. I can not continue
searching for holes or other issues in my model.
Best regards.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Am 03.07.2012 17:45, schrieb jotito:
> This bug is not present in version 3.6, I just rendered it in 3.6.2.
I did the same, but with a different result. Using version
3.6.2.msvc9.win64 (on Windows 7), the scene you posted (minus the
#version statement) /does/ exhibit the very same issues as when using
version 3.7 RC6.
The underlying problem is that differences are internally modeled as the
intersection of the first object and the inverted remaining object(s).
An inverted CSG union in turn is modeled as a CSG intersection of its
inverted members. And intersections, like merges, are inherently
susceptible to coincident-surface problems.
While at first glance it might seem that the problem could be solved by
representing an inverted CSG union as a CSG union with its inside test
result inverted, that approach doesn't quite cut it; you'd actually need
to use a CSG merge there rather than a union, and as mentioned before
merges are just as problematic as intersections. (As a matter of fact,
at its core the intersection /is/ implemented pretty much like a merge
with inverted inside test result).
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
>> There is a construction problem as well as coincident surfaces that
>> cause some additional problems.
>>
>> Changing the difference to an union.
>> Giving distinct colour to each component...
>> Pull back the camera to -9*z
>> Adding a colour value to the light_source
>> and we get:
>>
>> A smaller green box, a large red and a large blue box.
>> Most of the green box is inside the others.
>> The red and blue overlap.
>> The red and blue boxes have coincident surfaces. This can throw
>> insideness tests off.
>>
>> The problem is NOT version dependent, version 3.6 or 3.5 should render
>> similarly.
>>
>>
>> Alain
>
> This bug is not present in version 3.6, I just rendered it in 3.6.2.
>
> The boxes inside the union have coincident surfaces and that is causing the
> problem. If I make an small change, lets say 3.0001 instead of 3, the problem
> disappears. I hope you can fix this bug because is very annoying, and with
> version 3.6 there was no problem.
>
>
>
Just tested with 3.6.2 and 3.7RC6
Same resolution, exactly same code, and the result is THE SAME! Just as
I said it should in my first post.
OK, the coincident noise pattern is different, but it's normal and must
be expected. Then there is the case of gamma handling, but adding
global_settings{assumed_gamma 2.2}
or
global_settings{assumed_gamma 1}
to both versions gives identical results except for the random noise
pattern.
You are abusing a limitation to do some manipulations that could me
acheived in a way more reliable maner.
In your case, replace your 2 cutting objects by a single one and use a
gradient pattern to have a transparent strip or use clipped_by to cut a
hole.
Alain
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|