|
![](/i/fill.gif) |
On Tue, 10 Oct 2006 18:56:58 +0200
Urs Holzer <urs### [at] andonyar com> wrote:
> marabou wrote:
>
> > hello,
> >
> > currently I render a scene with an isosurface and a mirror showing
> > that isosurface. isosurface is created like:
> > difference{
> > object { isosurface1_containedby_box }
> > object {
> > isosurface2_containedby_box
> > translate y*-value
> > }
> > rotate x*90
> > }
> > the result is a nearly planar surface.
> > the mirror has reflection 0.8.
> > [...]
>
> Could you give us the code (i.e. the function) of the isosurfaces? Could
> you also post an image of one of those isosurfaces (without using CSG)?
> Probably someone can then see the problem.
> I don't know much about isosurfaces. So I make now a last guess about
> what could be the problem and then I'll give up: Some functions are
> bad, because they have infinite max_gradient. POV-Ray won't detect
> that. But it should report high max_gradient values, so this is rather
> not the case.
>
> Good luck in solving the problem!
>
it is only one CSG in image; please see p.b.images.
little explanation of code:
two arrays hold the clock steps and the spline points and are processed in macro
create_spline(...).
variable createdsplinepath holds the spline and is used in a function f_myspline. this
function is used to create the iso contained_by box.
in macro draw_object(...) the iso is differenced by itself with a little translate to
get only the surface of iso.
then object is placed. the call to draw_object(...) gets references to the two arrays
i mentioned above.
parts of code follow (read from buttom to top):
#macro create_iso(isosteps, isopoints)
//====================================
create_spline(isosteps, isopoints, 0) //returns createdsplinepath
#undef f_myspline
#declare f_myspline = function {
spline{
createdsplinepath // is the created spline
}
}
#declare iso =
isosurface {
function { y - f_myspline(x).x - f_myspline(z).z }
accuracy 0.001
// max_gradient 4
max_gradient 2.038
contained_by {
box { -1,1 }
}
pigment { rgb <255,255,255>/255 }
finish {
phong 0.5
phong_size 10
}
}
#end //macro create_iso
#macro draw_object(objsteps, objspline)
//=====================================
create_iso(objsteps, objspline)
difference {
object { iso }
object { iso scale <1.001,1,1.001> translate y*-0.02 }
}
#end
#declare splsteps_m = array[]{}
#declare spl_m = array[]{}
object{
draw_object(splsteps_m, spl_m)
translate <0,-0.5,-2.5>
}
Post a reply to this message
|
![](/i/fill.gif) |