|
|
Spider wrote :
> Try to write the blobs into a pre-made .inc file, taht way the parsing should be
> decreaaased to some part.
Simon de Vet wrote :
> BTW, any chance of making something to export to the .blb files? (These are
> supported by Moray, and I think it's a pretty straightforward text format....)
I just made a new version of the macro which can export to moray .blb AND Povray
.inc
files.
Here is the code of the macro :
// Start here
#macro Random(A,B,S)
A+(B-A)*rand(S)
#end
#declare Asteroid_Texture = texture {
pigment {
bozo
turbulence 1 lambda 2 omega 0.6 octaves 6
color_map {
[ 0 color rgb<127,129,129>/255 ]
[ 1 color rgb<79,81,81>/255 ]
}
scale 0.25
}
normal {
average
normal_map {
[ 1
granite 0.6
turbulence 1 lambda 2.5 omega 0.5 octaves 6
scale 2
]
[ 1
leopard 1
turbulence 0.5 lambda 1.5 omega 0.8 octaves 6
slope_map {
[ 0.00 <1.0,0> ]
[ 0.10 <0.6,1> ]
[ 1.00 <0.0,0> ]
}
scale 0.2
]
}
}
finish { ambient 0.2 diffuse 1 }
}
#macro
Asteroid(Nb_Body,Nb_Big_Crater,Nb_Small_Crater,Sca_Ast,Export,file_name,S)
blob {
threshold 0.5
// Output to file
#if ( (Export=1) | (Export=2) )
#fopen file_blob file_name write
#if (Export=2)
#write (file_blob,"[blob1.0]\n")
#write (file_blob,"threshold = 0.5\n")
#else
#write (file_blob,"blob {\n threshold 0.5\n")
#end
#end
//
// Body
#local Cpt = 0 ;
#while (Cpt<Nb_Body)
#local RotX = Random(0,360,S) ;
#local RotY = Random(0,360,S) ;
#local PosZ = Random(1.5,2.4,S) ;
#local Rad = -PosZ/1.8 + 7/3 ;
#local Position = Sca_Ast*vrotate(<0,0,PosZ>,<RotX,RotY,0>) ;
sphere { Position,Rad,1 }
// Output to file
#if (Export=2)
#write (file_blob,"sphere = ",Position.x," ",Position.z,"
",Position.y," ",Rad," 1\n")
#end
#if (Export=1)
#write (file_blob," sphere { ",Position," , ",Rad," , 1 }\n")
#end
//
#local Cpt = Cpt + 1 ;
#end
// Big Craters
#local Cpt = 0 ;
#while (Cpt<Nb_Big_Crater)
#local RotX = Random(0,360,S) ;
#local RotY = Random(0,360,S) ;
#local PosZ = Random(2,3,S);
#local Rad = PosZ - 1.5 ;
#local Position = Sca_Ast*vrotate(<0,0,PosZ>,<RotX,RotY,0>) ;
sphere { Position,Rad,-5 }
// Output to file
#if (Export=2)
#write (file_blob,"sphere = ",Position.x," ",Position.z,"
",Position.y," ",Rad," -5\n")
#end
#if (Export=1)
#write (file_blob," sphere { ",Position," , ",Rad," , -5 }\n")
#end
//
#local Cpt = Cpt + 1 ;
#end
// Small Craters
#local Cpt = 0 ;
#while (Cpt<Nb_Small_Crater)
#local RotX = Random(0,360,S) ;
#local RotY = Random(0,360,S) ;
#local PosZ = Random(3,3.5,S) ;
#local Rad = PosZ/2 - 1 ;
#local Position = Sca_Ast*vrotate(<0,0,PosZ>,<RotX,RotY,0>) ;
sphere { Position,Rad,-1 }
// Output to file
#if (Export=2)
#write (file_blob,"sphere = ",Position.x," ",Position.z,"
",Position.y," ",Rad," -1\n")
#end
#if (Export=1)
#write (file_blob," sphere { ",Position," , ",Rad," , -1 }\n")
#end
//
#local Cpt = Cpt + 1 ;
#end
texture { Asteroid_Texture }
// Output to file
#if ( (Export=1) | (Export=2) )
#if (Export=1)
#write (file_blob," texture { Asteroid_Texture }\n}\n")
#end
#fclose file_blob
#end
//
no_shadow
}
#end
// End of macro
And here is the code for the Asteroid picture I made:
#declare R1 = seed(100) ;
Asteroid(600,30,1200,<1,1,1.5>,0,"",R1)
The parameters:
Asteroid(
Number of components for the body ,
Number of components for the big craters ,
Number of components for the small craters ,
Scale vector: scales the position of each component, not the radius ,
Export parameter: 0=no export / 1=povray .inc export / 2=moray .blb export
,
Name of the file to export ,
pseudo-random stream
)
Of course, these parameters will change in the future.
The macro is still under construction...
With the .blb exporter, I can visualize with Moray where the spheres are. And I
discovered that many are useless. I'll try to decrease this number without
affecting the look of the Asteroid.
I discovered another problem: when I reduce the number of spheres for the body
to 300, the strength of the body is smaller: the holes created by negative
spheres are deeper.
I tried to create more small/sharp craters, but in this case, I need 1200+
components, and many of them are unused (too far from the body).
And I think that many other problems will appear.
Thank you for your suggestions.
I'll try to integrate most of them into a new beta version of the macro.
If you have other ideas, don't hesitate to modify the macro source code.
___________________________________________________
To answer me, remove the Z from my adress.
Post a reply to this message
|
|