POV-Ray : Newsgroups : povray.newusers : isosurface in mirror : Re: isosurface in mirror Server Time
29 Jul 2024 10:27:44 EDT (-0400)
  Re: isosurface in mirror  
From: marabou
Date: 10 Oct 2006 13:16:43
Message: <20061010191611.e0fefa2b.not@available.yet>
On Tue, 10 Oct 2006 18:56:58 +0200
Urs Holzer <urs### [at] andonyarcom> 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

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