import bmesh
import math
'''
msh = bpy.data.meshes.new('hexHemisphereMesh')
obj = bpy.data.objects.new('hexHemisphere', msh)
bpy.context.scene.objects.link(obj)
'''
nnn = 5
obj = bpy.context.active_object
me = obj.data
bm = bmesh.from_edit_mesh(me)
uv_lay = bm.loops.layers.uv.active
def uvVerts(n):
yield(0.0, 0.0)
for p in range(1, n+1):
dTheta = 2.0*math.pi/float(p)/6.0
for q in range(p*6):
theta = dTheta * float(q)
yield(math.cos(theta), math.sin(theta))
vrts = list(uvVerts(nnn))
inds = list(uvIndices(nnn))
loopNode = 0
cord = 0
for face in bm.faces:
for loop in face.loops:
loop[uv_lay].uv = vrts[ind[loopNode][cord]]
loopNode += 1
cord += 1
cord = 0
TODO
def uvIndices(n):
for q in range(1,6):
yield(q,0,q+1)
yield(6,0,1)
for p in range(1,n):
u00 = 3*p*(p-1)+1
l00 = 3*p*(p+1)+1
u0 = u00
l0 = l00
for q in range(6):
for r in range(p):
yield(l0+r, u0+r, l0+r+1)
if q==5 and r==p-1:
yield(u0+r, l0+r+1, u00)
else:
yield(u0+r, l0+r+1, u0+r+1)
if q<5:
yield(l0+r+1, u0+r+1, l0+r+2)
else:
yield(l0+r+1, u00, l00)
u0 += p
l0 += p+1