Advertisement
Guest User

Untitled

a guest
Oct 8th, 2014
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.19 KB | None | 0 0
  1. import wblut.math.*;
  2. import wblut.processing.*;
  3. import wblut.core.*;
  4. import wblut.hemesh.*;
  5. import wblut.geom.*;
  6.  
  7. import unlekker.util.*;
  8. import unlekker.modelbuilder.*;
  9. import unlekker.modelbuilder.filter.*;
  10. import unlekker.modelbuilder.UVertexList;
  11.  
  12. import java.util.List;
  13.  
  14. WB_HashGrid grid;
  15. HE_Mesh     front,back,fused,mesh;
  16. WB_Render   render;
  17.  
  18. ArrayList vectors;
  19.  
  20. UNav3D nav;
  21.  
  22. UGeometry model;
  23.  
  24. void setup() {
  25.     size(800,600,OPENGL);
  26.     nav=new UNav3D(this);
  27.   nav.trans.set(width/2,height/2,0);
  28.     createMesh();
  29. }
  30.  
  31. void draw() {
  32.  
  33.     background(43,171,150);
  34.   directionalLight(255, 255, 255, 1, 1, -1);
  35.   directionalLight(127, 127, 127, -1, -1, 1);
  36.  
  37.   nav.doTransforms();
  38.   noStroke();
  39.   fill(242,101,34);
  40.   render.drawFaces(mesh);
  41.   stroke(10);
  42.   render.drawEdges(mesh);
  43.    
  44. }
  45.  
  46. HE_Mesh createGrid(int scaleFactor){
  47.  
  48.  
  49.   int vAmount = 13;
  50.   int  fAmount = vAmount-1;
  51.   float[][] vertices=new float[vAmount*vAmount][3];
  52.   int index = 0;
  53.   for (int j = 0; j < vAmount; j++) {
  54.     for (int i = 0; i < vAmount; i++) {
  55.       vertices[index][0] =-200+ i * 40;
  56.       vertices[index][1] =-200+j * 40;
  57.       float n = noise(i+j) * scaleFactor;
  58.       vertices[index][2] = n;
  59.  
  60.       index++;
  61.     }
  62.   }
  63.  
  64.   index = 0;
  65.   int[][] faces = new int[fAmount*fAmount][];
  66.   for (int j = 0; j < fAmount; j++) {
  67.     for (int i = 0; i < fAmount; i++) {
  68.       faces[index]=new int[4];
  69.       faces[index][0] = i + vAmount * j;
  70.       faces[index][1] = i + 1 + vAmount * j;
  71.       faces[index][2] = i + 1 + vAmount * (j + 1);
  72.       faces[index][3] = i + vAmount * (j + 1);
  73.       index++;
  74.     }
  75.   }
  76.  
  77.  
  78.   HEC_FromFacelist creator=new HEC_FromFacelist();
  79.   creator.setVertices(vertices);
  80.   creator.setFaces(faces);
  81.   creator.setDuplicate(false);
  82.  
  83.   HE_Mesh grid =new HE_Mesh(creator);
  84.  
  85.   return grid;
  86. }
  87.  
  88. void createMesh() {
  89.  
  90.  
  91.   int gridSize =12;
  92.  
  93.   front=createGrid(200);
  94.   //int i=0;
  95.   for (int i=0; i < gridSize*gridSize; i++) {
  96.    
  97.       if(random(100) < 50){
  98.           front.deleteFace(front.getFaceByKey(i));
  99.       }
  100.       i++;
  101.    
  102.   }
  103.  
  104.  
  105.  
  106.   front.cleanUnusedElementsByFace();
  107.   front.capHalfedges();
  108.  
  109.   back = new HE_Mesh();
  110.   back.set(front);
  111.   back.flipAllFaces();  
  112.  
  113.  
  114.   HEM_Extrude extruder = new HEM_Extrude();
  115.   extruder.setDistance(30.0);
  116.   front.modify(extruder);
  117.  
  118.   fused = new HE_Mesh();
  119.   fused.add(front);
  120.   fused.fuse(back);
  121.  
  122.   mesh = new HE_Mesh();
  123.   mesh.set(fused);
  124.   mesh.resolvePinchPoints();
  125.   mesh.pairHalfedges();
  126.  
  127.   //HES_CatmullClark s = new HES_CatmullClark().setKeepEdges(true).setKeepBoundary(true);
  128.   //mesh.subdivide(s,2);
  129.  
  130.   render=new WB_Render(this);
  131. }
  132.  
  133. void initImageWithFile(String file){
  134.  
  135.   PImage img = loadImage(file);
  136.   vectors = new ArrayList();
  137.   for (int i=0; i < img.width; i++) {
  138.       for (int j=0; j < img.height; j++) {
  139.         color c = img.get(i,j);
  140.         if (red(c) != 0 && green(c) != 0 && blue(c) != 0) {
  141.           vectors.add(new PVector(i,j));
  142.         }
  143.       }
  144.   }
  145.  
  146.  
  147.  
  148. }
  149.  
  150. void saveSTL() {
  151.  
  152.   String fileName = "metaballs";
  153.   saveFrame(fileName+".png");
  154.   HET_Export.saveToSTL(mesh,sketchPath(fileName+".stl"),1.0);
  155.  
  156. }
  157.  
  158. void keyPressed() {
  159.  
  160.   if(key=='s') {
  161.    saveSTL();
  162.   }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement