POV-Ray : Newsgroups : povray.binaries.images : slice an object : Re: slice an object Server Time
5 Nov 2024 04:27:01 EST (-0500)
  Re: slice an object  
From: Meothuru
Date: 14 Dec 2007 00:50:01
Message: <web.476218acbef053205a73e3b40@news.povray.org>
"Leef_me" <nomail@nomail> wrote:
> "Meothuru" <nomail@nomail> wrote:
> >
>
> Very nice.
>
> I was trying to do something like that with a 3-d heart shape. I didn't succeed
> and the project was time sensitive.
>
> My idea was to use several 'intersection' statements between the object and
> boxes, then be able to make the pieces fly into place. Hmmm, blob might have
> been nice too.
>
> Now that you have the method, please use it wisely. No poser characters should
> be harmed. ;)
>
> Code would be appreciated.
>
> Leef_me



Heres is the exported SDL-code from the KPOV-modeler (it is machine-generated
code, not handcoded.). Hope it helps ...

//---------------------------
//*PMRawBegin
#include "textures.inc"
//*PMRawEnd

global_settings {
   adc_bailout 0.0039216
   assumed_gamma 1.5
   max_trace_level 256
   noise_generator 2
}

// this is the object you want to slice

#declare myObject = difference {
   union {
      cylinder {
         <1, 0, 0>, <-1, 0, 0>, 0.5
         scale 1
         rotate <0, 0, 0>
         translate y*0.25
      }

      cylinder {
         <-0.75, 0, 0>, <-1, 0, 0>, 0.535
         scale 1
         rotate <0, 0, 0>
         translate y*0.25
      }

      cylinder {
         <1, 0, 0>, <-1, 0, 0>, 0.5
         scale 1
         rotate <0, 0, 0>
         translate y*(-0.25)
      }

      cylinder {
         <-0.75, 0, 0>, <-1, 0, 0>, 0.535
         scale 1
         rotate <0, 0, 0>
         translate y*(-0.25)
      }
   }

   superellipsoid {
      <0.2, 0.2>
      scale <1, 0.5, 1>
      rotate <0, 0, 0>
      translate x*1.2642
   }

   torus {
      0.5, 0.25
      scale <1, 1.15, 1>
      rotate x*90
      translate x*0.7
   }

   cylinder {
      <0, 0.8, 0>, <0, -0.8, 0>, 0.1
      scale 1
      rotate <0, 0, 0>
      translate x*0.5
   }

   box {
      <-1.001, -0.075, -0.5>, <0.5, 0.075, -0.375>
      scale 1
      rotate <0, 0, 0>
      translate <0, 0, 0>
   }

   box {
      <-1.001, -0.075, 0.375>, <0.5, 0.075, 0.5>
      scale 1
      rotate <0, 0, 0>
      translate <0, 0, 0>
   }

   pigment {
      color rgb <0.9, 0.9, 0.9>
   }

   finish {
      //*PMRawBegin
      Dull
      //*PMRawEnd
   }
   scale 1
   rotate z*90
   translate <0, 0, 0>
}

// this is the definition of the slice (intersection)

#declare Slice = box {
   <-1, -0.05, -1>, <1, 0.05, 1>
   translate y*(-1.06)

   // set the  slice at the bottom(direct under teh object)
}

sky_sphere {
   pigment {
      color rgb <0.054902, 0.219608, 0.4>
   }
}

union {
   //*PMRawBegin
   #declare z1=0;          //Init Loop Counter
   #declare scheiben=13;  // Number of slices
   #declare Thickness=0.15;    // Thicknes of the slices
   #declare abstand=-0.15; // Distance between the slices
   #declare versatz1=0;  //Offset of the slice-shift init
   #declare versatz2=0;  //dto.

   #while (z1<=1)
      union {
         intersection {
            object {myObject }
            object {Slice translate <0,versatz1,0>}
         }
     translate <0, versatz2,0>
     }
     #declare versatz1=versatz1+Thickness;
     #declare versatz2=versatz2+Thickness+abstand;
     #declare z1=z1+1/scheiben;
   #end
   //*PMRawEnd

   pigment {
      color rgb <0.9, 0.9, 0.9>
   }

   finish {
      //*PMRawBegin
      Dull
      //*PMRawEnd
   }
   scale 2
   translate <-0.75, -1, -0.75>
   rotate <0, 0, 0>
   //*PMRawBegin
   //*PMRawEnd
}

union {
   //*PMRawBegin
   myObject
   //*PMRawEnd
   rotate y*33
   translate <3, 0, -1>
}

light_source {
   //*PMName Key-Light
   <4, 10, -15>, rgb <1, 1, 1>
   area_light <6, 0, 0>, <0, 6, 0>, 9, 9
   adaptive 1
   circular
   orient
}

light_source {
   //*PMName Fill-Light
   <-4, 10, -15>, rgb <0.5, 0.5, 0.5>
   shadowless
   media_interaction off
}

camera {
   perspective
   location <3, 3, -6>
   sky <0, 1, 0>
   direction <0, 0, 1>
   right <1.3333, 0, 0>
   up <0, 1, 0>
   look_at <0, 0, 0>
}
//---------------------------------


Post a reply to this message

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