Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2015
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. import bpy
  2. import bmesh
  3. import numpy as np
  4.  
  5. ## ------- part 1 --- do this once.
  6. sig = 0.3
  7. n_frames = 101
  8. bpy.context.scene.frame_end = n_frames
  9.  
  10. pi = np.pi
  11. make_ico = bpy.ops.mesh.primitive_ico_sphere_add
  12. make_ico(subdivisions=3, size = 2.0, location = (0,0,3))
  13. obj = bpy.context.active_object
  14. me = obj.data
  15.  
  16. ico0 = np.array([v.co for v in me.vertices]) # get ico vertices
  17. zmin, zmax = ico0[:,2].min(), ico0[:,2].max()
  18. zc = np.linspace(zmin, zmax, n_frames)
  19. ico = np.zeros_like(ico0)
  20. data = []
  21.  
  22. for i in range(n_frames):
  23. ico[:,:2] = (1.0 + np.exp(-(ico0[:,2] - zc[i])**2/(2.*sig**2)))[:,None] * ico0[:,:2]
  24. ico[:,2] = ico0[:,2]
  25. data.append(ico.copy())
  26.  
  27. ## ------- part 2 ---set up keyblocks / shape_keys
  28.  
  29. for i_frame in range(n_frames):
  30. block = obj.shape_key_add(name=str(i_frame), from_mix=False) # returns a key_blocks member
  31. for (vert, co) in zip(block.data, data[i_frame]):
  32. vert.co = co
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement