// Written by Andy Lynch // Andy's LDraw Viewer lite - a pared-down hack for viewing on the web // http://www.randommeme.com/mblog/ // Feel free to use as you wish... I'd love to hear if anyone does anything with this code... import damkjer.ocd.*; import noc.*; Camera camera1; LDrawModel model; ColorLibrary colorlib; int DragMode = 0; int lineWeight = 2; void setup(){ size( 400, 300, P3D); frameRate( 24); strokeWeight(2); camera1 = new Camera(this, 50, -100, -200, 0.0, 0.0, 0.0); model = new LDrawModel(); model.loadByName("model.ldr"); colorlib = new ColorLibrary("ldconfig.ldr"); }; float angZ = 0.0; float dangZ = 0.00; float angY = 0.0; float dangY = 0.00; void draw(){ background( 0, 0, 0); camera1.feed(); background( 128, 128, 128); perspective(); //noSmooth(); ambientLight( 128, 128, 128); scale( -1.0, 1.0, 1.0); pointLight(255, 255, 255, 2000, 4000, 3000); pointLight(255, 255, 255, -2000, -6000, -3000); rotateX( angY); angY += dangY; rotateY( angZ); angZ += dangZ; // model pushMatrix(); strokeWeight( lineWeight); model.draw(0); popMatrix(); camera(); // reset the camera before switching to 2D }; void mouseDragged() { if( DragMode == 0){ camera1.tumble(-radians(mouseX - pmouseX), -radians(mouseY - pmouseY)); }else if( DragMode == 1){ // camera1.zoom(-radians(mouseY - pmouseY) / 2.0); camera1.dolly( -( mouseY - pmouseY)); // camera1.aim( 0.0, 0.0, 0.0); }else if( DragMode == 2){ camera1.boom(-radians(mouseY - pmouseY) * 10.0); }; // camera1.track(mouseX - pmouseX, mouseY - pmouseY); // camera1.zoom(radians(mouseY - pmouseY) / 2.0); } void keyPressed() { if (key == '1') { lineWeight = 1; } else if( key == '2'){ lineWeight = 2; } else if( key == 'd'){ DragMode = 1; } else if( key == 't'){ DragMode = 0; } else if( key == 'b'){ DragMode = 2; } else if( key == 'x'){ strokeWeight( 2); } else if( key == 'y'){ dangY = -dangY; } else if( key == 'z'){ dangZ = -dangZ; } };