home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Multimedia / k3d-setup-0.7.11.0.exe / share / k3d / scripts / create_blobby.py < prev    next >
Text File  |  2008-07-27  |  3KB  |  78 lines

  1. #python
  2.  
  3. import k3d
  4.  
  5. doc = Document
  6. doc.start_change_set()
  7. try:
  8.     frozen_mesh = doc.new_node("FrozenMesh")
  9.     frozen_mesh.name = "Blobby"
  10.  
  11.     mesh = k3d.dynamic_cast(frozen_mesh, "imesh_storage").reset_mesh()
  12.  
  13.     blobbies = mesh.create_blobbies()
  14.     first_primitives = blobbies.create_first_primitives()
  15.     primitive_counts = blobbies.create_primitive_counts()
  16.     first_operators = blobbies.create_first_operators()
  17.     operator_counts = blobbies.create_operator_counts()
  18.     materials = blobbies.create_materials()
  19.     primitives = blobbies.create_primitives()
  20.     primitive_first_floats = blobbies.create_primitive_first_floats()
  21.     primitive_float_counts = blobbies.create_primitive_float_counts()
  22.     floats = blobbies.create_floats()
  23.     Cs = blobbies.writable_varying_data().create_array("Cs", "k3d::color")
  24.     operators = blobbies.create_operators()
  25.     operator_first_operands = blobbies.create_operator_first_operands()
  26.     operator_operand_counts = blobbies.create_operator_operand_counts()
  27.     operands = blobbies.create_operands()
  28.  
  29.     ellipsoids = [k3d.point3(-1, 0, 1), k3d.point3(1, 0, 1), k3d.point3(1, 0, -1), k3d.point3(-1, 0, -1)]
  30.  
  31.     first_primitives.append(len(primitives))
  32.     primitive_counts.append(len(ellipsoids) + 1)
  33.     first_operators.append(len(operators))
  34.     operator_counts.append(1)
  35.     materials.append(k3d.dynamic_cast(Document.get_node("Material"), "imaterial"))
  36.  
  37.     for center in ellipsoids:
  38.         primitives.append(k3d.primitive_type.ellipsoid)
  39.         primitive_first_floats.append(len(floats))
  40.         primitive_float_counts.append(16)
  41.         for i in (k3d.translate3(center) * k3d.scale3(1, 1, 1)).column_major_list():
  42.             floats.append(i)
  43.  
  44.     primitives.append(k3d.primitive_type.segment)
  45.     primitive_first_floats.append(len(floats))
  46.     primitive_float_counts.append(23)
  47.     floats.append(-1)
  48.     floats.append(0)
  49.     floats.append(0)
  50.     floats.append(1)
  51.     floats.append(0)
  52.     floats.append(0)
  53.     floats.append(1)
  54.     for i in k3d.identity3().column_major_list():
  55.         floats.append(i)
  56.  
  57.     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)])
  58.  
  59.     operators.append(k3d.operator_type.add)
  60.     operator_first_operands.append(len(operands))
  61.     operator_operand_counts.append(6)
  62.     operands.assign([5, 0, 1, 2, 3, 4])
  63.  
  64.     mesh_instance = doc.new_node("MeshInstance")
  65.     mesh_instance.name = "Blobby Instance"
  66.     mesh_instance.gl_painter = doc.get_node("GL Default Painter")
  67.     mesh_instance.ri_painter = doc.get_node("RenderMan Default Painter")
  68.     doc.set_dependency(mesh_instance.get_property("input_mesh"), frozen_mesh.get_property("output_mesh"))
  69.  
  70.     doc.finish_change_set("Create Test Blobby")
  71.  
  72.     k3d.ui().message("Note: not all RenderMan engines can render blobby geometry!")
  73.  
  74. except:
  75.     doc.cancel_change_set()
  76.     raise
  77.  
  78.