|
|
"Trevor G Quayle" <Tin### [at] hotmailcom> wrote:
>
> BTW, why is the render so long? Is it just from the area lighting and focal
> blur? Try manual bounding of the CSG of the sphere, sometimes this can help
> considerably, especially when you are differencing a whole lot of objects
> like the dimples.
>
> -tgq
To follow up on this, I have a similar type object (holes in a shell rather
than dimples) that I've worked on and instead of differencing the holes, I
used blobs (give the dimple blobs a negative strength), and it is *much*
faster.
Compare Ball1 (blobs) to Ball2 (CSG) in the following:
//START
#macro GeodesicBlob(n,R,Obj,k)
#if (n=0)
cylinder{-z,z,Obj,k}
#else
#local nL=pow(2,(n-1));
#local i=-nL;
#while (i<=nL)
#local nS=4*(nL-abs(i));
#if (nS=0)
cylinder{-z,z,Obj,k translate<0,0,-R> rotate x*i*90/nL}
#else
#local j=0;
#while (j<nS)
cylinder{-z,z,Obj,k translate<0,0,-R> rotate x*i*90/nL rotate
y*j*360/nS}
#local j=j+1;
#end
#end
#local i=i+1;
#end
#end
#end
#macro Geodesic(n,R,Obj)
#if (n=0)
cylinder{-z,z,Obj}
#else
#local nL=pow(2,(n-1));
#local i=-nL;
#while (i<=nL)
#local nS=4*(nL-abs(i));
#if (nS=0)
cylinder{-z,z,Obj translate<0,0,-R> rotate x*i*90/nL}
#else
#local j=0;
#while (j<nS)
cylinder{-z,z,Obj translate<0,0,-R> rotate x*i*90/nL rotate
y*j*360/nS}
#local j=j+1;
#end
#end
#local i=i+1;
#end
#end
#end
#declare R0=40;
#declare R2=0.5;
#declare OS=5;
#declare X0=sqrt(pow(R0,2)-pow(OS,2));
#declare OS1=OS*(R0-R2)/R0;
#declare R1=X0*(R0-R2)/R0;
#declare RR=R0-2*R2;
#declare D=0.1;
#declare Ball1=
difference{
blob{
threshold D
sphere{0,RR/sqrt(1-sqrt(D)),1}
GeodesicBlob(5,RR,2,-0.01)
}
bounded_by{sphere{0,40}}
rotate y*40
pigment{rgb 1}
}
#declare Ball2=
difference{
sphere{0,RR}
Geodesic(6,RR,1)
bounded_by{sphere{0,40}}
rotate y*40
pigment{rgb 1}
}
object{Ball2}
//END
-tgq
Post a reply to this message
|
|