|
|
Differenced isosurface texture problem
I apologize if this is a known issue; I searched the newsgroup and the known
bug list and didn't find anything relating to it.
There appears to be a problem with the textures on iso surfaces that
intersect in a difference CSG. At its worst the texture on the surface of
the subtracted area vanishes completely. What exactly happens depends on
what is intersecting with what, so I created this simple sample scene.
The scene has a difference between a green box and a red sphere, either one
can be a primitive or an iso surface depending on #declare settings. Given
how they are set you will see:
Primitive box, primitive sphere: a green box with a red half-sphere cutout.
Iso box, primitive sphere: same
Primitive box, iso sphere: a green box with a dark green half-sphere cutout.
Iso box, iso sphere: a green box with a clear round cutout, you can see the
ground plane through it.
POVWin v3.5b10, Windows 2000, Pentium III 700, 326MB
POVWin v3.5b10, Windows 98SE, Celeron 500, 192MB
- J. M. Thomas
#version 3.5;
#include "colors.inc"
#include "functions.inc"
#declare iso_box = true;
#declare iso_sphere = true;
global_settings {
assumed_gamma 1.0
}
// ----------------------------------------
camera {
location <-1.0, 0.5, -4.0>
direction 1.5*z
right x*image_width/image_height
look_at <0.0, 0.0, 0.0>
}
sky_sphere {
pigment {
gradient y
color_map {
[0.0 rgb <0.6,0.7,1.0>]
[0.7 rgb <0.0,0.1,0.8>]
}
}
}
light_source {
<0, 0, 0> // light's position (translated below)
color rgb <1, 1, 1> // light's color
translate <-30, 30, -30>
}
// ----------------------------------------
plane {
y, -1
pigment { color rgb <0.7,0.5,0.3> }
}
difference
{
#if (iso_box)
isosurface
{
function{ x+y+z }
threshold 4
contained_by{ box{ -0.75, 0.75 } }
pigment{ Green }
translate<0,0,.5>
}
#else
box
{
-0.75, 0.75
pigment{ Green }
translate<0,0,.5>
}
#end // iso_box
#if (iso_sphere)
isosurface
{
function{ f_sphere( x, y, z, .5 ) }
contained_by{ box{ -.5, .5 } }
pigment{ Red }
translate<0,0,-0.5>
}
#else
sphere
{
0.0, .5
pigment{ Red }
translate<0,0,-0.5>
}
#end // iso_sphere
}
Post a reply to this message
|
|