|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Hey, welcome back, Zeger!
As you can see, your stuff is that good, that even after a decade it is
wanted!
Question:
What kind of metallic texture did you use for your two sample objects? I
really liked that texture.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Here a link to some areas of the spaceship v2:
https://www.facebook.com/media/set/?set=a.729262957088962.1073741832.100000157941289&type=3
(not at the begin or end of that photo album, more in the middle.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 1-2-2016 1:33, Zeger Knaepen wrote:
> On 31/01/2016 20:39, Sven Littkowski wrote:
>> Biiig thanks! Got it, Thomas!
>>
>> Is it that version that can do boxes and cylinders, or is it the
>> previous version that does only boxes? Any idea?
>
> As far as I can tell, that's the version that does prisms.
> There should be a parametric patch version somewhere
Yes, if I remember correctly, I used this for prisms and for spheres at
the time. I do not remember any parametric patch however.
>
> Ok, the attached zip-file may or may not contain all needed files, but
> the code is not pretty..
> at all.. :)
I shall add it to the collection ;-) Thanks!
--
Thomas
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Now we have here a thread that spans ten years. :-D
And we have some of the best greebles the universe ever has seen. Thanks
to Zeger!
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 1-2-2016 13:55, Sven Littkowski wrote:
> Now we have here a thread that spans ten years. :-D
>
> And we have some of the best greebles the universe ever has seen. Thanks
> to Zeger!
>
They were in the original posts however, weren't they? Because that is
were my copy came from. So, nothing really new.
--
Thomas
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
No, not new, indeed. But timeless. :-)
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Zeger, problem:
I want to make a render with your CYLINDRIC GREEBLES. But a file that is
required ("macros.inc"), is missing. Can you post this file here?
Or, if anyone else has this file, too, please post it. Thanks.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
cylindergreebles.pov
------------
#default {pigment {rgb 1} finish {ambient .1 specular 1}}
camera {
location <2.8,-1,-3>
angle 80
look_at x
}
#declare Seed=seed(441);
light_source {<-750,500,-500> rgb 1} //<1.5,1.4,1.3>}
light_source {<-750,-500,-500> rgb <.5,.4,.3>}
light_source {<500,150,750> rgb <.5,.6,.7>}
#include "macros.inc"
#macro
RoundCilinderSegment(StartHeight,EindHeight,Radius,StartHoek,EindHoek,Bevel,BevelHeight,MaxLength)
#local Start=y*(StartHeight+Bevel);
#local Eind=y*(EindHeight-Bevel);
#local Start2=y*StartHeight;
#local Eind2=y*EindHeight;
#local StartHoek2=StartHoek+degrees(Bevel/Radius);
#local EindHoek2=EindHoek-degrees(Bevel/Radius);
#local TotaleLengte=radians(EindHoek-StartHoek)*(Radius+BevelHeight);
#local Aantal=max(int(TotaleLengte/MaxLength),1);
#local Tel=0;
mesh {
triangle {
vrotate(<Radius,StartHeight,0>,y*StartHoek),
vrotate(<Radius,EindHeight,0>,y*StartHoek),
vrotate(<Radius+BevelHeight,StartHeight+Bevel,0>,y*StartHoek2)
}
triangle {
vrotate(<Radius,EindHeight,0>,y*StartHoek),
vrotate(<Radius+BevelHeight,EindHeight-Bevel,0>,y*StartHoek2),
vrotate(<Radius+BevelHeight,StartHeight+Bevel,0>,y*StartHoek2)
}
triangle {
vrotate(<Radius,EindHeight,0>,y*StartHoek),
vrotate(<Radius,EindHeight,0>,y*StartHoek2),
vrotate(<Radius+BevelHeight,EindHeight-Bevel,0>,y*StartHoek2)
}
triangle {
vrotate(<Radius,StartHeight,0>,y*StartHoek),
vrotate(<Radius+BevelHeight,StartHeight+Bevel,0>,y*StartHoek2),
vrotate(<Radius,StartHeight,0>,y*StartHoek2)
}
triangle {
vrotate(<Radius,StartHeight,0>,y*EindHoek),
vrotate(<Radius,EindHeight,0>,y*EindHoek),
vrotate(<Radius+BevelHeight,StartHeight+Bevel,0>,y*EindHoek2)
}
triangle {
vrotate(<Radius,EindHeight,0>,y*EindHoek),
vrotate(<Radius+BevelHeight,EindHeight-Bevel,0>,y*EindHoek2),
vrotate(<Radius+BevelHeight,StartHeight+Bevel,0>,y*EindHoek2)
}
triangle {
vrotate(<Radius,EindHeight,0>,y*EindHoek),
vrotate(<Radius,EindHeight,0>,y*EindHoek2),
vrotate(<Radius+BevelHeight,EindHeight-Bevel,0>,y*EindHoek2)
}
triangle {
vrotate(<Radius,StartHeight,0>,y*EindHoek),
vrotate(<Radius+BevelHeight,StartHeight+Bevel,0>,y*EindHoek2),
vrotate(<Radius,StartHeight,0>,y*EindHoek2)
}
#while (Tel<Aantal)
#local H1=StartHoek2+(EindHoek2-StartHoek2)*(Tel/Aantal);
#local H2=StartHoek2+(EindHoek2-StartHoek2)*((Tel+1)/Aantal);
#local P1=vrotate(<Radius+BevelHeight,StartHeight+Bevel,0>,y*H1);
#local P2=vrotate(<Radius+BevelHeight,EindHeight-Bevel,0>,y*H1);
#local P3=vrotate(<Radius+BevelHeight,EindHeight-Bevel,0>,y*H2);
#local P4=vrotate(<Radius+BevelHeight,StartHeight+Bevel,0>,y*H2);
#local N1=vrotate(x,y*H1);
#local N2=vrotate(x,y*H2);
smooth_triangle {P1,N1,P2,N1,P4,N2}
smooth_triangle {P2,N1,P3,N2,P4,N2}
//triangle {P1,P2,P4}
//triangle {P2,P3,P4}
#local P2B=vrotate(<Radius,EindHeight,0>,y*H1);
#local P3B=vrotate(<Radius,EindHeight,0>,y*H2);
triangle {P2,P2B,P3}
triangle {P2B,P3B,P3}
#local P2B=vrotate(<Radius,StartHeight,0>,y*H2);
#local P3B=vrotate(<Radius,StartHeight,0>,y*H1);
triangle {P2B,P1,P3B}
triangle {P1,P4,P2B}
#local Tel=Tel+1;
#end
}
#end
#macro Verlaag(X)
#local R=X-(1+rand(Seed)*2.5);
R
#end
#macro
CilinderGreeble(StartHeight,EindHeight,Radius,StartHoek,EindHoek,Bevel,BevelHeight,MaxLength,Detail)
#local Start=(StartHeight+Bevel);
#local Eind=(EindHeight-Bevel);
#local StartH=StartHoek+degrees(Bevel/Radius);
#local EindH=EindHoek-degrees(Bevel/Radius);
//cilindertjes:
#local Aantal=rand(Seed)*Detail;
#while (Aantal>0)
#local Size=(Bevel*.01)+rand(Seed)*Bevel*.99*2;
#local Hoek=StartH+(EindH-StartH)*rand(Seed);
#local Hoogte=Start+(Eind-Start)*rand(Seed);
#local Depth=BevelHeight/2+rand(Seed)*BevelHeight/2;
superellipsoid {<1,.1+rand(Seed)*.3> rotate y*90 scale
<Depth,Size,Size> translate x*Radius rotate y*Hoek translate y*Hoogte}
#local Aantal=Aantal-1;
#end
//vakjes:
#local Aantal=rand(Seed)*Detail;
#while (Aantal>0)
#local S=Start+(Eind-Start)*rand(Seed);
#local E=S+(Eind-S)*rand(Seed);
#local SH=StartH+(EindH-StartH)*rand(Seed);
#local EH=SH+(EindH-SH)*rand(Seed);
#local H=BevelHeight/2+rand(Seed)*BevelHeight/2;
RoundCilinderSegment(S,E,Radius,SH,EH,Bevel/2,H,AantalStapjes)
#local Aantal=Aantal-1;
#end
//verticale buisjes
#local Aantal=rand(Seed)*Detail;
#while (Aantal>0)
#local S=Start+(Eind-Start)*rand(Seed);
#local E=S+(Eind-S)*rand(Seed);
#local SH=StartH+(EindH-StartH)*rand(Seed);
//#local EH=SH+(EindH-SH)*rand(Seed);
#local H=(BevelHeight/2+rand(Seed)*BevelHeight/2)/2;
//RoundCilinderSegment(S,E,Radius,SH,EH,Bevel/2,H,AantalStapjes)
cylinder {y*S,y*E,H translate x*Radius rotate y*SH}
sphere {y*S,H translate x*Radius rotate y*SH}
sphere {y*E,H translate x*Radius rotate y*SH}
#local Aantal=Aantal-1;
#end
//horizontale buisjes simuleren, toruskes zouden wsl te traag gaan
#local Aantal=rand(Seed)*Detail;
#while (Aantal>0)
#local S=Start+(Eind-Start)*rand(Seed);
#local H=BevelHeight/2+rand(Seed)*BevelHeight/2;
#local H=min((Eind-S),H*2)/2;
#local E=S+H*2;
#local SH=StartH+(EindH-StartH)*rand(Seed);
#local EH=SH+(EindH-SH)*rand(Seed);
RoundCilinderSegment(S,E,Radius,SH,EH,H,H,AantalStapjes)
#local Aantal=Aantal-1;
#end
#end
#macro
VerdeelCilinder(StartHeight,EindHeight,Radius,StartHoek,EindHoek,Diepte,Bevel,BevelHeight)
#local Start=y*(StartHeight+Bevel);
#local Eind=y*(EindHeight-Bevel);
#local Start2=y*StartHeight;
#local Eind2=y*EindHeight;
#if (Diepte<0)
#ifndef(Detail) #local Detail=5; #end
#local H=rand(Seed)*BevelHeight;
#ifndef(MaxSegmentLength) #local AantalStapjes=Bevel; //(eigenlijk de
maximale lengte van een segment)
#else #local AantalStapjes= MaxSegmentLength; #end
RoundCilinderSegment(StartHeight,EindHeight,Radius,StartHoek,EindHoek,Bevel,H,AantalStapjes)
CilinderGreeble(StartHeight,EindHeight,Radius+H,StartHoek,EindHoek,Bevel,H,AantalStapjes,Detail)
#else
// eerst es checken of 't nie onvoorstelbaar ongelijk verdeeld is:
#local Lengte=radians(EindHoek-StartHoek)*Radius;
#local Hoogte=EindHeight-StartHeight;
#local PercentageU=.5+(rand(Seed)-rand(Seed))*.5*.9;
#local PercentageV=.5+(rand(Seed)-rand(Seed))*.5*.9;
#local MidHeight=StartHeight+(EindHeight-StartHeight)*PercentageU;
#local MidHoek=StartHoek+(EindHoek-StartHoek)*PercentageV;
// als't 2 keer zo hoog als breed is (of nog hoger), dan ff enkel in
de hoogte bijsnijden:
#if ((Hoogte>(Lengte*2))&(rand(Seed)>.125))
VerdeelCilinder(StartHeight,MidHeight,Radius,StartHoek,EindHoek,Verlaag(Diepte),Bevel,BevelHeight)
VerdeelCilinder(MidHeight,EindHeight,Radius,StartHoek,EindHoek,Verlaag(Diepte),Bevel,BevelHeight)
// als't 2 keer lager dan breed is (of nog lager), dan ff enkel in de
breedte bijsnijden:
#else
#if (((Hoogte*2)<Lengte)&(rand(Seed)>.125))
VerdeelCilinder(StartHeight,EindHeight,Radius,StartHoek,MidHoek,Verlaag(Diepte),Bevel,BevelHeight)
VerdeelCilinder(StartHeight,EindHeight,Radius,MidHoek,EindHoek,Verlaag(Diepte),Bevel,BevelHeight)
#else
VerdeelCilinder(StartHeight,MidHeight,Radius,StartHoek,MidHoek,Verlaag(Diepte),Bevel,BevelHeight)
VerdeelCilinder(MidHeight,EindHeight,Radius,StartHoek,MidHoek,Verlaag(Diepte),Bevel,BevelHeight)
VerdeelCilinder(StartHeight,MidHeight,Radius,MidHoek,EindHoek,Verlaag(Diepte),Bevel,BevelHeight)
VerdeelCilinder(MidHeight,EindHeight,Radius,MidHoek,EindHoek,Verlaag(Diepte),Bevel,BevelHeight)
#end
#end
#end
#end
//#include "textures.inc"
union {
#declare Detail=5;
#declare MaxSegmentLength=.1;
VerdeelCilinder(-3,3,1,0,360,10,.002,.0075)
cylinder {-3*y,3*y,1}
//Metaal()
rotate z*90
}
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
I found that file in another posting of Zeger, dating back to 2002! :-D
Here it is, for all those who need it for Zeger's formidable greebles.
------------------------
//Een afgeronde kader, zoals box{}, maar dan afgerond, en enkel de randen.
#macro Kader (Begin,Eind,Straal)
#local Begin=Begin*<1,1,1>;
#local Eind=Eind*<1,1,1>;
#local R=Straal;
#local B=<min(Begin.x,Eind.x),min(Begin.y,Eind.y),min(Begin.z,Eind.z)>+R;
#local E=<max(Begin.x,Eind.x),max(Begin.y,Eind.y),max(Begin.z,Eind.z)>-R;
merge { //merge, zodat het ook voor transparante materialen werkt.
#if (R > 0)
//Onderste rij
sphere {
B,R
}
sphere {
<E.x,B.y,B.z>,R
}
sphere {
<E.x,B.y,E.z>,R
}
sphere {
<B.x,B.y,E.z>,R
}
//Bovenste rij
sphere {
E,R
}
sphere {
<E.x,E.y,B.z>,R
}
sphere {
<B.x,E.y,E.z>,R
}
sphere {
<B.x,E.y,B.z>,R
}
//Onderste cilinders
cylinder {
B,<E.x,B.y,B.z>,R
}
cylinder {
B,<B.x,B.y,E.z>,R
}
cylinder {
<E.x,B.y,B.z>,<E.x,B.y,E.z>,R
}
cylinder {
<E.x,B.y,E.z>,<B.x,B.y,E.z>,R
}
//Bovenste cilinders
cylinder {
<B.x,E.y,B.z>,<E.x,E.y,B.z>,R
}
cylinder {
<B.x,E.y,B.z>,<B.x,E.y,E.z>,R
}
cylinder {
<E.x,E.y,B.z>,<E.x,E.y,E.z>,R
}
cylinder {
<E.x,E.y,E.z>,<B.x,E.y,E.z>,R
}
//Verticale cilinders
cylinder {
B,<B.x,E.y,B.z>,R
}
cylinder {
<E.x,B.y,B.z>,<E.x,E.y,B.z>,R
}
cylinder {
<B.x,B.y,E.z>,<B.x,E.y,E.z>,R
}
cylinder {
<E.x,B.y,E.z>,<E.x,E.y,E.z>,R
}
#end
}
#end
//Zoals box{}, maar dan afgerond. Gebruikt Kader()!
#macro Ronddoos(Begin,Eind,Straal)
#local Begin=Begin*<1,1,1>;
#local Eind=Eind*<1,1,1>;
#local R=Straal;
#local B=<min(Begin.x,Eind.x),min(Begin.y,Eind.y),min(Begin.z,Eind.z)>+R;
#local E=<max(Begin.x,Eind.x),max(Begin.y,Eind.y),max(Begin.z,Eind.z)>-R;
merge {
object {Kader (Begin,Eind,Straal)}
box {
B,E
}
box {
<B.x,B.y,B.z-R>,<E.x,E.y,E.z+R>
}
box {
<B.x-R,B.y,B.z>,<E.x+R,E.y,E.z>
}
box {
<B.x,B.y-R,B.z>,<E.x,E.y+R,E.z>
}
}
#end
//Beveled tekst. Geeft als resultaat een afgeronde tekst met instelbare
resolutie (bestaat uit blobs)
#macro Text (Lettertype, Tkst, R, P, T)
#local Tekst=
text {
ttf Lettertype //"starwars.ttf"
Tkst,.01,0
}
#declare Min=min_extent(Tekst);
#declare Max=max_extent(Tekst);
#local Telx=0;
#local Tely=0;
blob {
threshold T
#while (Telx<ResX)
#declare Tely=0;
#while (Tely<ResY)
#local PlaatsX=(Min.x+(Max.x-Min.x)*(Telx/ResX));
#local PlaatsY=(Min.y+(Max.y-Min.y)*(Tely/ResY));
#local Norm=<0,0,0>;
#local Loc=trace(Tekst,<PlaatsX,PlaatsY,-10>,z,Norm);
#if ((Norm.x*Norm.y*Norm.z)!=0)
sphere {
Loc,R,P
}
#end
#local Tely=Tely+1;
#end
#local Telx=Telx+1;
#end
}
#end
//Een alternatieve versie voor Atan2. Werkt ook met beiden nul.
#macro Atan (arg1,arg2)
#if (arg1=0 & arg2=0)
0
#else
atan2(arg1,arg2)
#end
#end
//Geeft het punt op plaats T van de bezier-kromme met controlepunten P1,
P2, P3 en P4
#macro Bezier (P1,P2,P3,P4,T)
#local beziera=pow(1-T,3);
#local bezierb=3*pow(1-T,2)*T;
#local bezierc=3*(1-T)*pow(T,2);
#local bezierd=pow(T,3);
#local beziere=pow(T,2);
#local bezierf=pow(1-T,2);
#local bezierg=2*(1-T)*T;
#local bezierh=bezierf-bezierg;
#local bezieri=bezierg-beziere;
#local bezierx=(beziera*P1.x + bezierb*P2.x + bezierc*P3.x + bezierd*P4.x);
#local beziery=(beziera*P1.y + bezierb*P2.y + bezierc*P3.y +
bezierd*P4.y);
#local bezierz=(beziera*P1.z + bezierb*P2.z + bezierc*P3.z + bezierd*P4.z);
<bezierx,beziery,bezierz>
#end
//De rotatie rond X en Z berekenen voor een bepaald punt op een
bezierkromme met controlepunten P1, P2, P3 en P4 op plaats T
//Ik haal deze formules van een INC-file van Michael D Johnson. Er
stond bij dat hij niet zeker is van deze formules.
//Ik dus ook niet... :-)
#macro BezierRot(P1,P2,P3,P4,T)
#local beziera=pow(1-T,3);
#local bezierb=3*pow(1-T,2)*T;
#local bezierc=3*(1-T)*pow(T,2);
#local bezierd=pow(T,3);
#local beziere=pow(T,2)
#local bezierf=pow(1-T,2);
#local bezierg=2*(1-T)*T;
#local bezierh=bezierf-bezierg;
#local bezieri=bezierg-beziere;
#local bezierx=(beziera*P1.x + bezierb*P2.x + bezierc*P3.x + bezierd*P4.x);
#local beziery=(beziera*P1.y + bezierb*P2.y + bezierc*P3.y +
bezierd*P4.y);
#local bezierz=(beziera*P1.z + bezierb*P2.z + bezierc*P3.z + bezierd*P4.z);
#local bezierdx=(-bezierf*P1.x + bezierh*P2.x + bezieri*P3.x +
beziere*P4.x);
#local bezierdy=(-bezierf*P1.y + bezierh*P2.y + bezieri*P3.y +
beziere*P4.y);
#local bezierdz=(-bezierf*P1.z + bezierh*P2.z + bezieri*P3.z +
beziere*P4.z);
#local A2=degrees(Atan(bezierdy,bezierdz));
#local A=degrees (Atan(bezierdy,bezierdx));
<A2,0,A>
#end
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Hi(gh)!
On 30.01.2016 16:15, clipka wrote:
> But I do agree that re-opening discussions from 10 years ago isn't
> really a too promising idea.
Not necessarily... I'm on this group since 2000 (which now is more than
three quarters of my entire Internet life!), keeping track of all image
postings since then - and I would be ready to participate if you comment
on something I wrote here in 2006!
On a German Commodore 64 forum, in 2010 I dug out a thread from 1999
(!), when the original poster was only 12 years old... "thread
necromancing" can be enlightening!
See you in Khyberspace!
Yadgar
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|