POV-Ray : Newsgroups : povray.binaries.images : joining the greeble-madness :) Server Time
7 Aug 2024 11:23:48 EDT (-0400)
  joining the greeble-madness :) (Message 38 to 47 of 47)  
<<< Previous 10 Messages Goto Initial 10 Messages
From: Sven Littkowski
Subject: Re: Feedback
Date: 31 Jan 2016 21:23:15
Message: <56aec193$1@news.povray.org>
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

From: Sven Littkowski
Subject: Re: Feedback
Date: 31 Jan 2016 21:25:34
Message: <56aec21e$1@news.povray.org>
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

From: Thomas de Groot
Subject: Re: Feedback
Date: 1 Feb 2016 02:54:15
Message: <56af0f27$1@news.povray.org>
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

From: Sven Littkowski
Subject: Re: Feedback
Date: 1 Feb 2016 07:55:30
Message: <56af55c2$1@news.povray.org>
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

From: Thomas de Groot
Subject: Re: Feedback
Date: 1 Feb 2016 08:12:15
Message: <56af59af$1@news.povray.org>
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

From: Sven Littkowski
Subject: Re: Feedback
Date: 2 Feb 2016 01:51:27
Message: <56b051ef$1@news.povray.org>
No, not new, indeed. But timeless.   :-)


Post a reply to this message

From: Sven Littkowski
Subject: Re: Feedback
Date: 7 Feb 2016 12:05:18
Message: <56b7794e$1@news.povray.org>
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

From: Sven Littkowski
Subject: Re: Feedback
Date: 7 Feb 2016 12:06:56
Message: <56b779b0@news.povray.org>
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

From: Sven Littkowski
Subject: Re: Feedback
Date: 7 Feb 2016 13:08:24
Message: <56b78818$1@news.povray.org>
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

From: Jörg 'Yadgar' Bleimann
Subject: Re: Feedback
Date: 22 Feb 2016 15:46:13
Message: <56cb7395@news.povray.org>
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

<<< Previous 10 Messages Goto Initial 10 Messages

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