// Triangle mesh viewer + corner table + subdivision + smoothing + compression + simplificatioin + geodesics + isolation // Written by Jarek Rossignac June 2006. Modified February 2008 import processing.opengl.*; // load OpenGL String [] fn= {"hole.vts","tet.vts","bunny.vts","horse.vts","body.vts","torus.vts","fandisk.vts","squirrel.vts","venus.vts"}; //String [] fn= {"tet.vts","bunny.vts","horse.vts","torus.vts"}; int fni=0; int fniMax=fn.length; // ** SETUP ** void setup() { size(800, 800, OPENGL); setColors(); sphereDetail(6); //smooth(); PFont font = loadFont("Courier-14.vlw"); textFont(font, 12); // font for writing labels on screen M.declare(); M.init(); M.makeGrid(5); M.update(); initView(M); } // ** DRAW ** void draw() { background(white); perspective(PI/2.0,width/height,1.0,6.0*Rbox); if (showHelpText) {camera(); translate(-290,-290,0); scale(1.7,1.7,1.0); showHelp(); showColors(); return; }; lights(); directionalLight(0,0,128,0,1,0); directionalLight(0,0,128,0,0,1); translate(float(height)/2, float(height)/2, 0.0); // center view wrt window if ((!keyPressed)&&(mousePressed)) {C.pan(); C.pullE(); }; if ((keyPressed)&&(mousePressed)) {updateView();}; C1.track(C); C2.track(C1); C2.apply(); M.show(); } //*** KEY ACTIONS (details in keys tab) void keyPressed() { keys(); }; void mousePressed() {C.anchor(); C.pose(); if (keyPressed&&((key=='m')||(key=='w')) ) {C.setMark(); M.hitTriangle();}; }; // record where the cursor was when the mouse was pressed void mouseReleased() {C.anchor(); C.pose(); }; // reset the view if any key was pressed when mouse was released