POV-Ray : Newsgroups : povray.newusers : Blobs Server Time
3 Sep 2024 10:18:49 EDT (-0400)
  Blobs (Message 1 to 7 of 7)  
From: Oleguer Vilella
Subject: Blobs
Date: 29 Jan 2005 12:27:02
Message: <41fbc766@news.povray.org>
Hi all,

I have done this code:
======================================
#declare lipid =  union {
blob{  threshold 0.1
sphere {<0, 0, 0>, 2 ,1 texture {pigment { color Red }finish { ambient 0.2 
diffuse 0.8 phong 1 }}}
}}

#macro Make_Stuff (Stuff,How_Many)
#local Ample=-12;

#while (Ample<How_Many)
object{Stuff  rotate <0,0*Ample,0> translate<3*Ample,9*cos (Ample/8),0> }
#local Ample=Ample+1;
#end
#end

#declare layer = union {Make_Stuff (lipid,100)}
global_settings { max_trace_level 29 }

#macro Make_Many (Stuff,How_Many)
#local Fons=0;

#while (Fons<How_Many)
object{Stuff  translate <0,3*sin (Fons/8),3*Fons> translate <10, -20, 30>}
#local Fons=Fons+1;
#end
#end

union {Make_Many (layer,50)}
======================================
How can I unife all the spheres?
Thanks in advance.

Oleguer


Post a reply to this message

From: Alain
Subject: Re: Blobs
Date: 29 Jan 2005 21:15:00
Message: <41fc4324$2@news.povray.org>
Oleguer Vilella nous apporta ses lumieres en ce 2005-01-29 11:25:
> Hi all,
> 
> I have done this code:
> ======================================
> #declare lipid =  union {
> blob{  threshold 0.1
> sphere {<0, 0, 0>, 2 ,1 texture {pigment { color Red }finish { ambient 0.2 
> diffuse 0.8 phong 1 }}}
> }}
> 
> #macro Make_Stuff (Stuff,How_Many)
> #local Ample=-12;
> 
> #while (Ample<How_Many)
> object{Stuff  rotate <0,0*Ample,0> translate<3*Ample,9*cos (Ample/8),0> }
> #local Ample=Ample+1;
> #end
> #end
> 
> #declare layer = union {Make_Stuff (lipid,100)}
> global_settings { max_trace_level 29 }
> 
> #macro Make_Many (Stuff,How_Many)
> #local Fons=0;
> 
> #while (Fons<How_Many)
> object{Stuff  translate <0,3*sin (Fons/8),3*Fons> translate <10, -20, 30>}
> #local Fons=Fons+1;
> #end
> #end
> 
> union {Make_Many (layer,50)}
> ======================================
> How can I unife all the spheres?
> Thanks in advance.
> 
> Oleguer 
> 
> 
You can start by removing the union and blob from the lipid object:
#declare Lipid=sphere{0,2,1 texture{pigment{color Red}finish{ambient 0.2 diffuse 0.8
phong 1}}}

Then, in the Layer object:
#declare Layer=blob{thresshold 0.1 Make_Stuff(Lipid,100)}

I did not try it.
Note: it's beter to *always* start any user defined identifier with a capital letter,
it prevent any 
name clash with built-in reserved name, present and future. Who know if a future
fersion could use 
"layer" for some purpose?

Alain


Post a reply to this message

From: Mike Williams
Subject: Re: Blobs
Date: 30 Jan 2005 01:15:28
Message: <sA9oPCA0tH$BFwS0@econym.demon.co.uk>
Wasn't it Oleguer Vilella who wrote:
>Hi all,
>
>I have done this code:
>======================================
>======================================
>How can I unife all the spheres?

Do you mean like this?

#macro Make_All(N,M)
  blob {threshold 0.1
  #local Ample=-12;
  #while (Ample<N)
    #local Fons=0;
    #while (Fons<M)
      sphere {<0,0,0>, 2, 1
        rotate <0,0*Ample,0> translate<3*Ample,9*cos (Ample/8),0>
        translate <0,3*sin (Fons/8),3*Fons> translate <10, -20, 30>
      }
      #local Fons=Fons+1;
    #end
    #local Ample=Ample+1;
  #end
  }
#end 

object {Make_All(100,50)
  texture {
    pigment { color Red }
    finish { ambient 0.2 diffuse 0.8 phong 1 }
  }
}

-- 
Mike Williams
Gentleman of Leisure


Post a reply to this message

From: Oleguer Vilella
Subject: Re: Blobs
Date: 30 Jan 2005 06:15:11
Message: <41fcc1bf@news.povray.org>
Hi Alain,

Your code gives me an error. It says: "No matching } in 'sphere',, found 
instead".

This part of code is:
======================================
#declare Lipid=sphere{0,2,1 texture{pigment{color Red}finish{ambient 0.2 
diffuse 0.8 phong 1}}}
======================================
Why this error? I have closed de all the }
Understood that's is better declare the identifiers with a capital letter. 
Thanks a lot for reminder me that.



Hi Mike,

Thanks for your help Mike, but that's not what I was looking for. I'm 
traying to unify all the spheres to obtain an uniform membrane.

Thanks all the helps,
Oleguer



news:41fc4324$2@news.povray.org...
> Oleguer Vilella nous apporta ses lumieres en ce 2005-01-29 11:25:
>> Hi all,
>>
>> I have done this code:
>> ======================================
>> #declare lipid =  union {
>> blob{  threshold 0.1
>> sphere {<0, 0, 0>, 2 ,1 texture {pigment { color Red }finish { ambient 
>> 0.2 diffuse 0.8 phong 1 }}}
>> }}
>>
>> #macro Make_Stuff (Stuff,How_Many)
>> #local Ample=-12;
>>
>> #while (Ample<How_Many)
>> object{Stuff  rotate <0,0*Ample,0> translate<3*Ample,9*cos (Ample/8),0> }
>> #local Ample=Ample+1;
>> #end
>> #end
>>
>> #declare layer = union {Make_Stuff (lipid,100)}
>> global_settings { max_trace_level 29 }
>>
>> #macro Make_Many (Stuff,How_Many)
>> #local Fons=0;
>>
>> #while (Fons<How_Many)
>> object{Stuff  translate <0,3*sin (Fons/8),3*Fons> translate <10, -20, 
>> 30>}
>> #local Fons=Fons+1;
>> #end
>> #end
>>
>> union {Make_Many (layer,50)}
>> ======================================
>> How can I unife all the spheres?
>> Thanks in advance.
>>
>> Oleguer
> You can start by removing the union and blob from the lipid object:
> #declare Lipid=sphere{0,2,1 texture{pigment{color Red}finish{ambient 0.2 
> diffuse 0.8 phong 1}}}
>
> Then, in the Layer object:
> #declare Layer=blob{thresshold 0.1 Make_Stuff(Lipid,100)}
>
> I did not try it.
> Note: it's beter to *always* start any user defined identifier with a 
> capital letter, it prevent any name clash with built-in reserved name, 
> present and future. Who know if a future fersion could use "layer" for 
> some purpose?
>
> Alain


Post a reply to this message

From: Alain
Subject: Re: Blobs
Date: 30 Jan 2005 09:15:57
Message: <41fcec1d$1@news.povray.org>
Oleguer Vilella nous apporta ses lumieres en ce 2005-01-30 05:13:
> Hi Alain,
> 
> Your code gives me an error. It says: "No matching } in 'sphere',, found 
> instead".
> 
> This part of code is:
> ======================================
> #declare Lipid=sphere{0,2,1 texture{pigment{color Red}finish{ambient 0.2 
> diffuse 0.8 phong 1}}}
> ======================================
> Why this error? I have closed de all the }
> Understood that's is better declare the identifiers with a capital letter. 
> Thanks a lot for reminder me that.
> 
> 
> 
> Hi Mike,
> 
> Thanks for your help Mike, but that's not what I was looking for. I'm 
> traying to unify all the spheres to obtain an uniform membrane.
> 
> Thanks all the helps,
> Oleguer
> 
> 
OK, the syntax used is that of a sphere as a blob component, not a regular sphere. You
probably need 
to replace that by a macro, or place it inside the Make_Stuff macro.

Alain


Post a reply to this message

From: Mike Williams
Subject: Re: Blobs
Date: 31 Jan 2005 11:41:20
Message: <J9lazIApnj$BFwVN@econym.demon.co.uk>
Wasn't it Oleguer Vilella who wrote:
>Hi Mike,
>
>Thanks for your help Mike, but that's not what I was looking for. I'm 
>traying to unify all the spheres to obtain an uniform membrane.

Sorry for the late response. I've been unable to establish a link to the
pov newsserver for a few days.

Well, once you've got all the blob components in a single blob object
you can adjust the threshold value, and the strength and radius of the
individual blobs, and the separation between the blobs (like #local
Fons=Fons+0.5), so that they blob together into a bumpy membrane. You
can't do that with your original version because each sphere is a
separate blob object.

Alternatively, you could discard the blobs altogether and use the same
cos and sin waves to drive an isosurface function, which will give you a
perfectly smooth membrane that has exactly the same shape.

#declare  F = function {y - 9*cos(x/3/8) - 3*sin(z/3/8)}

#declare Thickness=1.5;

isosurface {
  function { abs(F(x,y,z)) - Thickness }
  max_gradient 2
  contained_by{box{<-36,-20,0><300,20,150>}}
  pigment {rgb x}
  finish { ambient 0.2 diffuse 0.8 phong 1 }
  translate <10,-20,30>
}


If you want, you can put fake blobs back into the isosurface as follows.
The "x+z" and "z-x" bits rotate the fake blobs by 45 degrees, otherwise
the leopard pattern has a diagonal pattern.

camera {location  <150,150,-150> look_at <150,50,0> }
background {rgb 1}
light_source {<-30, 100, -30> color rgb 1}

#declare  F = function {y - 9*cos(x/3/8) - 3*sin(z/3/8)}

#declare Thickness=1.5;

#include "functions.inc"

isosurface {
  function { abs(F(x,y,z)) - Thickness - f_leopard(x+z,0,z-x) }
  max_gradient 2
  contained_by{box{<-36,-20,0><300,20,150>}}
  pigment {rgb x}
  finish { ambient 0.2 diffuse 0.8 phong 1 }
  translate <10,-20,30>
}



-- 
Mike Williams
Gentleman of Leisure


Post a reply to this message

From: Oleguer Vilella
Subject: Re: Blobs
Date: 1 Feb 2005 15:07:52
Message: <41ffe198@news.povray.org>
Hi Mike,

Don't worry, it isn't a delay.

Thanks for your help. All understood now. I didn't know the leopard function 
and I now I know it.

Regards,
Oleguer


news:J9lazIApnj$BFwVN@econym.demon.co.uk...
> Wasn't it Oleguer Vilella who wrote:
>>Hi Mike,
>>
>>Thanks for your help Mike, but that's not what I was looking for. I'm
>>traying to unify all the spheres to obtain an uniform membrane.
>
> Sorry for the late response. I've been unable to establish a link to the
> pov newsserver for a few days.
>
> Well, once you've got all the blob components in a single blob object
> you can adjust the threshold value, and the strength and radius of the
> individual blobs, and the separation between the blobs (like #local
> Fons=Fons+0.5), so that they blob together into a bumpy membrane. You
> can't do that with your original version because each sphere is a
> separate blob object.
>
> Alternatively, you could discard the blobs altogether and use the same
> cos and sin waves to drive an isosurface function, which will give you a
> perfectly smooth membrane that has exactly the same shape.
>
> #declare  F = function {y - 9*cos(x/3/8) - 3*sin(z/3/8)}
>
> #declare Thickness=1.5;
>
> isosurface {
>  function { abs(F(x,y,z)) - Thickness }
>  max_gradient 2
>  contained_by{box{<-36,-20,0><300,20,150>}}
>  pigment {rgb x}
>  finish { ambient 0.2 diffuse 0.8 phong 1 }
>  translate <10,-20,30>
> }
>
>
> If you want, you can put fake blobs back into the isosurface as follows.
> The "x+z" and "z-x" bits rotate the fake blobs by 45 degrees, otherwise
> the leopard pattern has a diagonal pattern.
>
> camera {location  <150,150,-150> look_at <150,50,0> }
> background {rgb 1}
> light_source {<-30, 100, -30> color rgb 1}
>
> #declare  F = function {y - 9*cos(x/3/8) - 3*sin(z/3/8)}
>
> #declare Thickness=1.5;
>
> #include "functions.inc"
>
> isosurface {
>  function { abs(F(x,y,z)) - Thickness - f_leopard(x+z,0,z-x) }
>  max_gradient 2
>  contained_by{box{<-36,-20,0><300,20,150>}}
>  pigment {rgb x}
>  finish { ambient 0.2 diffuse 0.8 phong 1 }
>  translate <10,-20,30>
> }
>
>
>
> -- 
> Mike Williams
> Gentleman of Leisure


Post a reply to this message

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