home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Multimedia / k3d-setup-0.7.11.0.exe / share / k3d / scripts / MeshSourceScript / blobby.py < prev    next >
Encoding:
Text File  |  2009-02-15  |  1.8 KB  |  48 lines

  1. #python
  2.  
  3. import k3d
  4. k3d.check_node_environment(locals(), "MeshSourceScript")
  5.  
  6. blobby = k3d.blobby.create(Output)
  7. Cs = blobby.varying_data().create("Cs", "k3d::color")
  8.  
  9. # Add four ellipsoids to the blobby ...
  10. ellipsoids = [k3d.point3(-1, 0, 1), k3d.point3(1, 0, 1), k3d.point3(1, 0, -1), k3d.point3(-1, 0, -1)]
  11.  
  12. blobby.first_primitives().append(len(blobby.primitives()))
  13. blobby.primitive_counts().append(len(ellipsoids) + 1)
  14. blobby.first_operators().append(len(blobby.operators()))
  15. blobby.operator_counts().append(1)
  16. blobby.materials().append(Document.get_node("Material"))
  17.  
  18. for center in ellipsoids:
  19.     blobby.primitives().append(k3d.blobby.primitive_type.ELLIPSOID)
  20.     blobby.primitive_first_floats().append(len(blobby.floats()))
  21.     blobby.primitive_float_counts().append(16)
  22.     for i in (k3d.translate3(center[0], center[1], center[2]) * k3d.scale3(1)).column_major_list():
  23.         blobby.floats().append(i)
  24.  
  25. # Add a segment to the blobby ...
  26. blobby.primitives().append(k3d.blobby.primitive_type.SEGMENT)
  27. blobby.primitive_first_floats().append(len(blobby.floats()))
  28. blobby.primitive_float_counts().append(23)
  29. blobby.floats().append(-1)
  30. blobby.floats().append(0)
  31. blobby.floats().append(0)
  32. blobby.floats().append(1)
  33. blobby.floats().append(0)
  34. blobby.floats().append(0)
  35. blobby.floats().append(1)
  36. for i in k3d.identity3().column_major_list():
  37.     blobby.floats().append(i)
  38.  
  39. # Assign colors to each ellipsoid and segment ...
  40. Cs.assign([k3d.color(1, 0, 0), k3d.color(0, 1, 0), k3d.color(0, 0, 1), k3d.color(1, 1, 0), k3d.color(1, 1, 1)])
  41.  
  42. # Add the ellipsoids and segment together to produce a surface ...
  43. blobby.operators().append(k3d.blobby.operator_type.ADD)
  44. blobby.operator_first_operands().append(len(blobby.operands()))
  45. blobby.operator_operand_counts().append(6)
  46. blobby.operands().assign([5, 0, 1, 2, 3, 4])
  47.  
  48.