def sunflower(scene,nseeds=100,npetals=50): pos = kernelpositions(nseeds) headverts=pos2verts(pos) faces=[(v,v+1,v+2) for v in range(0,len(headverts),3)] head=Tools.addmeshobject(scene,headverts,faces,name='head') kernelverts,kernelfaces=kernel(radius=1.5,scale=(1.0,1.0,0.3)) #print len(kernelverts),kernelfaces kernelmesh = Tools.newmesh(kernelverts,kernelfaces,name='kernel') kernels = [Tools.addmeshduplicate(scene,kernelmesh,name='kernel') for i in range(nseeds)] for i in range(nseeds): #print(kernels[i],head.data.verts[i*3:(i+1)*3]) loc = Tools.center(head.data.verts[i*3:(i+1)*3]) kernels[i].setLocation(loc) head.makeParentVertex([kernels[i]],tuple([v.index for v in head.data.verts[i*3:(i+1)*3]])) # add petals (parent to head) petalverts,petalfaces=petal((2.0,1.0,1.0)) petalmesh = Tools.newmesh(petalverts,petalfaces,name='petal') r = sqrt(nseeds) petals = [Tools.addmeshduplicate(scene,petalmesh,name='petal') for i in range(npetals)] for i,p in enumerate(petals): a=float(i)*2*pi/npetals p.setLocation(r*cos(a),r*sin(a),0) e=p.getEuler('localspace') e.z=a p.setEuler(e) head.makeParent(petals) # add stalk (parent head to stalk) stalkverts,stalkfaces=stalk() stalkob = Tools.addmeshobject(scene,stalkverts,stalkfaces,name='stalk') stalkob.makeParent([head]) # create a group of kernels and a group of petals for easy scaling kernelgroup = Blender.Group.New('kernels') kernelgroup.objects=kernels petalgroup = Blender.Group.New('petals') petalgroup.objects=petals # create a group consisting of all objects # unfortunately you cannot make a group of groups all = Blender.Group.New('sunflower') all.objects=sum([kernels,petals],[head,stalkob]) # trick to flatten lists