[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2414] branches/geodesic_domes: adding original geodesic domes script from 2.49

Brendon Murphy meta.androcto1 at gmail.com
Mon Oct 10 12:22:41 CEST 2011


Revision: 2414
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2414
Author:   meta-androcto
Date:     2011-10-10 10:22:40 +0000 (Mon, 10 Oct 2011)
Log Message:
-----------
adding original geodesic domes script from 2.49
this way everyone has the same script.

Added Paths:
-----------
    branches/geodesic_domes/Geodesic_Domes_Original/
    branches/geodesic_domes/Geodesic_Domes_Original/READ ME FIRST.txt
    branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/
    branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/forms.py
    branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/geodesic.py
    branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/goo.py
    branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/vefm.py
    branches/geodesic_domes/Geodesic_Domes_Original/geodesic2.0.blend
    branches/geodesic_domes/Geodesic_Domes_Original/geodesic_2.0_Mod.py

Added: branches/geodesic_domes/Geodesic_Domes_Original/READ ME FIRST.txt
===================================================================
--- branches/geodesic_domes/Geodesic_Domes_Original/READ ME FIRST.txt	                        (rev 0)
+++ branches/geodesic_domes/Geodesic_Domes_Original/READ ME FIRST.txt	2011-10-10 10:22:40 UTC (rev 2414)
@@ -0,0 +1,33 @@
+Geodesic Domes 2.0 mod
+
+This script is mostly work by Andy Houston,
+who kindly gave me, Brendon Murphy (Meta-Androcto)
+permissions to modify his script.
+
+The original .blend with the original script is included in the zip file.
+
+The modifications are listed in geodesic_2.0_Mod.py.
+
+For best results, a Full Python install is needed.
+www.python.org
+
+For Optional Speed up, also install the Python Psyco Module.
+http://psyco.sourceforge.net/
+
+This script is known to work in Blender 2.45
+it should also work in earlier versions of Blender. 2.42a tested.
+
+Installation in Blender: Windows. (other os use your script installation paths.)
+
+Copy the file geodesic_2.0_Mod.py & bpymodules folder
+to Blender/.blender/scripts folder.
+Windows will ask you if you want to overwrite, this is fine, say yes.
+
+Alternative Installation: 
+Copy the file geodesic_2.0_Mod.py to Blender/.blender/scripts folder.
+Copy the contents of bpymodules folder to Blender/.blender/scripts/bpymodules.
+
+Enjoy this Wonderful Script.
+Further information will be available at;
+http://wiki.blender.org/index.php/Scripts/Manual/Wizards/geodesic dome.
+Brendon.
\ No newline at end of file

Added: branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/forms.py
===================================================================
--- branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/forms.py	                        (rev 0)
+++ branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/forms.py	2011-10-10 10:22:40 UTC (rev 2414)
@@ -0,0 +1,351 @@
+import math
+from math import pi,sin,cos,atan,tan,fabs
+import vefm
+from vefm import *
+from Blender import NMesh
+class form(mesh):
+
+	def __init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform):
+
+		mesh.__init__(self)
+
+		self.a360=pi*2.0
+
+		self.ures=uresolution
+		self.vres=vresolution
+		
+		self.uscale=uscale
+		self.vscale=vscale
+
+		self.upart=upart
+		self.vpart=vpart
+
+		self.uphase=uphase*self.a360
+		self.vphase=vphase*self.a360
+
+		self.utwist=utwist
+		self.vtwist=vtwist
+		
+		self.xscale=xscale
+		self.yscale=yscale
+
+		self.sform=sform
+				
+		if self.upart!=1.0:	## there is a gap in the major radius
+			
+			self.uflag=1
+		else:
+			self.uflag=0
+
+		if self.vpart!=1.0:	## there is a gap in the minor radius
+			
+			self.vflag=1
+		else:
+			self.vflag=0
+
+		if self.uflag:
+
+			self.ufinish=self.ures+1
+
+		else:
+			
+			self.ufinish=self.ures
+
+		if self.vflag:
+
+			self.vfinish=self.vres+1
+
+		else:
+
+			self.vfinish=self.vres
+
+		self.ustep=(self.a360/self.ures)*self.upart
+		self.vstep=(self.a360/self.vres)*self.vpart
+
+		if self.xscale!=1.0:
+			
+			self.xscaleflag=1
+			
+		else:
+			
+			self.xscaleflag=0		
+
+		if self.yscale!=1.0:
+			
+			self.yscaleflag=1
+			
+		else:
+			
+			self.yscaleflag=0			
+				
+		self.rowlist=[]
+
+
+
+	def generatepoints(self):
+
+
+
+		for i in range(self.ufinish):
+
+			row=[]
+
+			for j in range(self.vfinish):
+
+				u=self.ustep*i+self.uphase
+				v=self.vstep*j+self.vphase
+
+
+			#	if self.xscaleflag:
+
+			#		u=self.ellipsecomp(self.xscale,u) 
+
+			#	if self.yscaleflag:
+					
+			#		v=self.ellipsecomp(self.yscale,v)
+
+
+				if self.sform[12]:
+					
+					r1=self.superform(self.sform[0],self.sform[1],self.sform[2],self.sform[3],self.sform[14]+u,self.sform[4],self.sform[5],self.sform[16]*v)
+
+				else:
+				
+					r1=1.0
+					
+				if self.sform[13]:
+				
+					r2=self.superform(self.sform[6],self.sform[7],self.sform[8],self.sform[9],self.sform[15]+v,self.sform[10],self.sform[11],self.sform[17]*v)
+				
+				else:
+				
+					r2=1.0
+
+				x,y,z=self.formula(u,v,r1,r2)
+
+				point=vertex(x,y,z)
+
+				row.append(point)
+				self.verts.append(point)
+				
+			self.rowlist.append(row)
+			
+		if self.vflag:
+
+			pass
+
+		else:
+
+			for i in range(len(self.rowlist)):
+				
+				self.rowlist[i].append(self.rowlist[i][0])
+
+		if  self.uflag:
+
+			pass
+
+		else:
+
+			self.rowlist.append(self.rowlist[0])
+
+	def formula(self,u,v,r1,r2):
+
+		pass
+
+	def generatefaces(self):
+
+		ufin=len(self.rowlist)-1
+		vfin=len(self.rowlist[0])-1
+
+		for i in range(ufin):
+
+			for j in range(vfin):
+
+				top=i
+				bottom=i+1
+				left=j
+				right=j+1
+
+
+				a=self.rowlist[top][left]
+				b=self.rowlist[top][right]
+				c=self.rowlist[bottom][right]
+				d=self.rowlist[bottom][left]
+
+				face1=face([a,b,c,d])
+
+				self.faces.append(face1)
+
+				edge1=edge(a,b)
+				edge2=edge(a,d)
+
+				self.edges.append(edge1)
+				self.edges.append(edge2)
+
+				if i+1==ufin:
+
+					edge3=edge(d,c)
+					self.edges.append(edge3)
+
+
+				if j+1==vfin:
+
+					edge4=edge(b,c)
+					self.edges.append(edge4)
+	
+
+class grid(form):
+
+	def __init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform):
+
+		form.__init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform)
+
+		unit=1.0/self.a360
+		
+		self.ustep=self.a360/(self.ures-1)
+		self.vstep=self.a360/(self.vres-1)
+		
+		self.uflag=1
+		self.vflag=1
+			
+		self.xscaleflag=0		
+		self.yscaleflag=0
+
+		self.uexpand=unit*self.uscale
+		self.vexpand=unit*self.vscale
+
+		self.ushift=self.uscale*0.5
+		self.vshift=self.vscale*0.5
+		
+		self.generatepoints()
+		self.generatefaces()
+
+		for i in range(len(self.verts)):
+
+			self.verts[i].index=i
+
+		self.connectivity()
+				
+	def formula(self,u,v,r1,r2):
+	
+		x=u*self.uexpand-self.ushift
+		y=v*self.vexpand-self.vshift
+		z=r1*r2-1.0
+		
+		return x,y,z
+
+
+
+class cylinder(form):
+
+	def __init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform):
+
+		form.__init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform)
+
+		unit=1.0/self.a360
+		self.vshift=self.vscale*0.5
+		self.vexpand=unit*self.vscale
+		self.vflag=1	
+		self.generatepoints()
+		self.generatefaces()
+
+		for i in range(len(self.verts)):
+
+			self.verts[i].index=i
+
+		
+		self.connectivity()	
+
+	def formula(self,u,v,r1,r2):
+	
+		x=sin(u)*self.uscale*r1*r2*self.xscale
+		y=cos(u)*self.uscale*r1*r2
+		z=v*self.vexpand-self.vshift
+		
+		return x,y,z
+
+
+
+class parabola(form):
+
+	def __init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform):
+
+		form.__init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform)
+
+		unit=1.0/self.a360
+		self.vshift=self.vscale*0.5
+		self.vexpand=unit*self.vscale
+		self.vflag=1
+		self.generatepoints()
+		self.generatefaces()
+
+		for i in range(len(self.verts)):
+
+			self.verts[i].index=i
+
+		self.connectivity()		
+	
+	def formula(self,u,v,r1,r2):
+		
+		factor=sqrt(v)+0.001
+	
+		x=sin(u)*factor*self.uscale*r1*r2*self.xscale
+		y=cos(u)*factor*self.uscale*r1*r2
+		z=-v*self.vexpand+self.vshift
+		
+		return x,y,z
+
+		
+class torus(form):
+	
+	def __init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform):
+
+		form.__init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform)
+
+		self.generatepoints()
+		self.generatefaces()
+
+		for i in range(len(self.verts)):
+
+			self.verts[i].index=i
+
+		self.connectivity()		
+		
+					
+	def formula(self,u,v,r1,r2):
+	
+		z=sin(v)*self.uscale*r2*self.yscale
+		y=(self.vscale+self.uscale*cos(v))*cos(u)*r1*r2
+		x=(self.vscale+self.uscale*cos(v))*sin(u)*r1*r2*self.xscale
+
+		return x,y,z
+
+
+class sphere(form):
+	
+	def __init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform):
+
+		form.__init__(self,uresolution,vresolution,uscale,vscale,upart,vpart,uphase,vphase,utwist,vtwist,xscale,yscale,sform)
+
+		self.vstep=(self.a360/(self.vres-1))*self.vpart
+		self.vflag=1
+		self.generatepoints()
+		self.generatefaces()
+
+		for i in range(len(self.verts)):
+
+			self.verts[i].index=i
+
+		self.connectivity()		
+		
+					
+	def formula(self,u,v,r1,r2):
+		
+		v=(v*0.5)-(self.a360*0.25)
+	
+		x=r1*cos(u)*r2*cos(v)*self.uscale*self.xscale
+		y=r1*sin(u)*r2*cos(v)*self.uscale
+		z=r2*sin(v)*self.uscale*self.yscale
+
+		return x,y,z
+

Added: branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/geodesic.py
===================================================================
--- branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/geodesic.py	                        (rev 0)
+++ branches/geodesic_domes/Geodesic_Domes_Original/bpymodules/geodesic.py	2011-10-10 10:22:40 UTC (rev 2414)
@@ -0,0 +1,869 @@
+## geodesic rewrite four or five, I've lost track - Jan 05
+#import Blender
+#from Blender  import NMesh #import *
+
+import forms
+from forms import mesh
+import math
+from math import pi,acos,sin,cos,atan,tan,fabs
+import vefm
+from vefm import *
+
+class geodesic(mesh):
+
+	def __init__(self,parameters):
+
+		mesh.__init__(self)
+
+		self.panels=[]
+		self.vertsdone=[]
+		self.skeleton=[]				## List of verts in the full skelton edges.
+
+		self.sphericalverts=[]
+
+		self.a45=pi*0.25
+		self.a90=pi*0.5
+		self.a180=pi
+		self.a270=pi*1.5
+		self.a360=pi*2
+
+		self.setparameters(parameters)
+		self.makegeodesic()
+		self.connectivity()
+
+	def setparameters(self,parameters):
+
+		self.frequency=parameters[0]	## How many subdivisions - up to 20.
+		self.eccentricity=parameters[1]	## Elliptical if >1.0.
+		self.squish=parameters[2]		## Flattened if < 1.0.
+		self.radius=parameters[3]		## Exactly what it says.
+		self.square=parameters[4]		## Controls amount of superellipse in X/Y plane.
+		self.squarez=parameters[5]		## Controls amount of superellipse in Z dimension.
+		self.cart=parameters[6]			## Cuts out sphericalisation step.
+		self.shape=parameters[7]		## Full sphere, dome, flatbase.
+		self.baselevel=parameters[8]		## Where the base is cut on a flatbase dome.
+		self.faceshape=parameters[9]	## Triangular, hexagonal, tri-hex.
+		self.dualflag=parameters[10]
+		self.rotxy=parameters[11]
+		self.rotz=parameters[12]
+		self.klass=parameters[13]
+		self.sform=parameters[14]
+		self.super=0					## Toggles superellipse.
+

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list