日常の進捗

主に自分のための,行為とその習慣化の記録

HE_MESH Tutorial (2)

f:id:takawo:20171103235631g:plain

ライブラリ

  • PeasyCam
  • ControlP5
  • HE_Mesh

上記ライブラリをContribution Managerで検索してインストールする

コード

import controlP5.*;

import peasy.*;
import peasy.org.apache.commons.math.*;
import peasy.org.apache.commons.math.geometry.*;

import wblut.geom.*;
import wblut.hemesh.*;
import wblut.core.*;
import wblut.math.*;
import wblut.nurbs.*;
import wblut.processing.*;

ControlP5 cp5;

WB_Render3D render;
HE_Mesh mesh;

int setEdge;
int setWidthSegments;
int setHeightSegments;
int setDepthSegments;

PeasyCam cam;

// setup関数 : 初回1度だけ実行される
void setup() {
  size(960, 540, P3D); // ウィンドウサイズを960px,540pxに
  colorMode(HSB, 360, 100, 100); // HSBでの色指定にする

  cp5 = new ControlP5(this);
  cp5.setAutoDraw(false);

  cp5.addSlider("setEdge").setRange(0, 500).setValue(250).setPosition(20, 20);
  cp5.addSlider("setWidthSegments").setRange(0, 50).setValue(5).setPosition(20, 40);
  cp5.addSlider("setHeightSegments").setRange(0, 50).setValue(5).setPosition(20, 60);
  cp5.addSlider("setDepthSegments").setRange(0, 50).setValue(5).setPosition(20, 80);

  cam = new PeasyCam(this, 500);
  create();
}

void create() {
  render = new WB_Render3D(this);
  HEC_Cube creator = new HEC_Cube();
  creator.setEdge(setEdge);
  creator.setWidthSegments(setWidthSegments).setHeightSegments(setHeightSegments).setDepthSegments(setDepthSegments);
  mesh = new HE_Mesh(creator);
}

// draw関数 : setup関数実行後繰り返し実行される
void draw() {
  create();
  
  background(0, 0, 0);
  cam.beginHUD();
  directionalLight(0, 0, 100, 1, 1, -1);
  directionalLight(0, 0, 50, -1, -1, 1);
  cp5.draw();
  cam.endHUD();
  
  noStroke();
  fill(0, 50, 50);
  render.drawFaces(mesh);
  fill(120, 100, 100);
  render.drawVertices(mesh, 10);
  stroke(120, 100, 100);
  render.drawEdges(mesh);
  stroke(0, 0, 100);
  render.drawFaceNormals( mesh, 10 );
}

リファレンス

Hemesh : 3D Printing Part 1 | Free Art Bureau