[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