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 / nurbs_patches.py < prev    next >
Encoding:
Text File  |  2008-10-03  |  2.6 KB  |  80 lines

  1. #python
  2.  
  3. import k3d
  4. k3d.check_node_environment(locals(), "MeshSourceScript")
  5.  
  6. # Perform required one-time setup to store geometric points in the mesh ...
  7. points = Output.create_points()
  8. point_selection = Output.create_point_selection()
  9.  
  10. # Perform required one-time setup to store NURBS patches in the mesh ...
  11. nurbs_patches = Output.create_nurbs_patches()
  12. patch_first_points = nurbs_patches.create_patch_first_points()
  13. patch_u_point_counts = nurbs_patches.create_patch_u_point_counts()
  14. patch_v_point_counts = nurbs_patches.create_patch_v_point_counts()
  15. patch_u_orders = nurbs_patches.create_patch_u_orders()
  16. patch_v_orders = nurbs_patches.create_patch_v_orders()
  17. patch_u_first_knots = nurbs_patches.create_patch_u_first_knots()
  18. patch_selection = nurbs_patches.create_patch_selection()
  19. patch_v_first_knots = nurbs_patches.create_patch_v_first_knots()
  20. patch_materials = nurbs_patches.create_patch_materials()
  21. patch_points = nurbs_patches.create_patch_points()
  22. patch_point_weights = nurbs_patches.create_patch_point_weights()
  23. patch_u_knots = nurbs_patches.create_patch_u_knots()
  24. patch_v_knots = nurbs_patches.create_patch_v_knots()
  25.  
  26. # Create an (optional) array to hold color values at the parametric
  27. # corners of each patch ...
  28. Cs = nurbs_patches.writable_varying_data().create("Cs", "k3d::color")
  29.  
  30. # We will create two identical NURBS patches ...
  31. for i in range(2):
  32.     patch_first_points.append(len(patch_points))
  33.     patch_u_point_counts.append(3)
  34.     patch_v_point_counts.append(2)
  35.     patch_u_orders.append(3)
  36.     patch_v_orders.append(2)
  37.     patch_u_first_knots.append(len(patch_u_knots))
  38.     patch_v_first_knots.append(len(patch_v_knots))
  39.     patch_selection.append(0)
  40.     patch_materials.append(None)
  41.  
  42.     patch_points.append(len(points) + 0)
  43.     patch_points.append(len(points) + 1)
  44.     patch_points.append(len(points) + 2)
  45.     patch_points.append(len(points) + 3)
  46.     patch_points.append(len(points) + 4)
  47.     patch_points.append(len(points) + 5)
  48.  
  49.     patch_point_weights.append(1)
  50.     patch_point_weights.append(10)
  51.     patch_point_weights.append(1)
  52.     patch_point_weights.append(1)
  53.     patch_point_weights.append(0.5)
  54.     patch_point_weights.append(1)
  55.  
  56.     patch_u_knots.append(1)
  57.     patch_u_knots.append(1)
  58.     patch_u_knots.append(1)
  59.     patch_u_knots.append(2)
  60.     patch_u_knots.append(2)
  61.     patch_u_knots.append(2)
  62.  
  63.     patch_v_knots.append(1)
  64.     patch_v_knots.append(1)
  65.     patch_v_knots.append(2)
  66.     patch_v_knots.append(2)
  67.  
  68.     Cs.append(k3d.color(1, 0, 0))
  69.     Cs.append(k3d.color(0, 1, 0))
  70.     Cs.append(k3d.color(0, 0, 1))
  71.     Cs.append(k3d.color(1, 1, 1))
  72.  
  73.     positions = [(-5, 5, 5), (5, 5, 5), (5, 5, 10), (-5, -5, 5), (5, -5, 5), (5, -5, 10)]
  74.  
  75.     for position in positions:
  76.         points.append(k3d.point3(position[0], position[1], position[2] + (i * -10)))
  77.         point_selection.append(0.0)
  78.  
  79.  
  80.