日常の進捗

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

HE_MESH Tutorial (5)ベートーベンのポリゴンを削減する

f:id:takawo:20171127212828g:plain

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

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

import controlP5.*;

HE_Mesh mesh, oldMesh;
WB_Render3D render;
PeasyCam cam;

ControlP5 cp5;

float declease_rate=0;

void setup() {
  size(960, 540, P3D);
  colorMode(HSB, 360, 100, 100);
  
  createMesh();
  render = new WB_Render3D(this);
  textAlign(CENTER);
  
  cam = new PeasyCam(this, 500);

  cp5 = new ControlP5(this);
  cp5.setAutoDraw(false);
  cp5.addSlider("declease_rate").setRange(0.5,0.99).setValue(0.9).setPosition(20,20);  
  cp5.addButton("button").setLabel("decrease").setPosition(20,40);  
}

void createMesh() {
  HEC_Creator creator = new HEC_Beethoven().setScale(10).setZAxis(0, -1, 0);
  ;
  mesh = new HE_Mesh(creator);
  oldMesh = mesh.get();
}

void draw() {
  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, 0, 100);
  render.drawFaces(mesh);
}

void controlEvent(ControlEvent event){
  println(declease_rate);
}

void button() {
  println("button");
  mesh.simplify(new HES_TriDec().setGoal(declease_rate));
}