Search in sources :

Example 1 with StringHolder

use of argparser.StringHolder in project artisynth_core by artisynth.

the class MeshViewer method main.

public static void main(String[] args) {
    StringHolder fileName = new StringHolder();
    IntHolder width = new IntHolder(640);
    IntHolder height = new IntHolder(480);
    Vector meshFileList = new Vector();
    ArrayList<String> meshQueue = new ArrayList<String>();
    ArgParser parser = new ArgParser("java maspack.geometry.MeshViewer [options] <objFile> ...");
    // parser.addOption ("-file %s #mesh file names", meshFileList);
    parser.addOption("-width %d #width (pixels)", width);
    parser.addOption("-height %d #height (pixels)", height);
    parser.addOption("-drawAxes %v #draw coordinate axes", drawAxes);
    parser.addOption("-drawEdges %v #draw mesh edges", drawEdges);
    parser.addOption("-noDrawFaces %v #do not draw faces", noDrawFaces);
    parser.addOption("-edgeColor %fX3 #edge color", edgeColor);
    parser.addOption("-backgroundColor %fX3 #background color", backgroundColor);
    parser.addOption("-rotate %fX4 #rotation (axis-angle)", rotation);
    parser.addOption("-axisLength %f #coordinate axis length", axisLength);
    parser.addOption("-smooth %v #use smooth shading", smooth);
    parser.addOption("-oneSided %v #draw only front faces", oneSided);
    parser.addOption("-class %s #use PolygonalMesh sub class", className);
    parser.addOption("-zeroIndexed %v #zero indexed (for writing)", zeroIndexed);
    parser.addOption("-queue %v #queue meshes for viewing", queueMeshes);
    parser.addOption("-printBounds %v #print bounds for meshes", printBounds);
    parser.addOption("-skip %d #for .xyzb point meshes, use every n-th point", skipCount);
    parser.addOption("-pointMesh %v #specifies that mesh must be read as a point mesh", pointMesh);
    RigidTransform3d X = new RigidTransform3d();
    ArrayList<MeshInfo> infoList = new ArrayList<MeshInfo>(0);
    int idx = 0;
    while (idx < args.length) {
        try {
            idx = parser.matchArg(args, idx);
            if (parser.getUnmatchedArgument() != null) {
                String meshFileName = parser.getUnmatchedArgument();
                if (queueMeshes.value) {
                    meshQueue.add(meshFileName);
                } else {
                    X.R.setAxisAngle(rotation[0], rotation[1], rotation[2], Math.toRadians(rotation[3]));
                    loadMeshes(infoList, meshFileName, X);
                }
            }
        } catch (Exception e) {
            // malformed or erroneous argument
            parser.printErrorAndExit(e.getMessage());
        }
    }
    // parser.matchAllArgs (args);
    // for (Iterator it = meshFileList.iterator(); it.hasNext();) {
    // loadMeshes (meshList, ((StringHolder)it.next()).value, X);
    // }
    // call this to prevent awful looking fonts:
    System.setProperty("awt.useSystemAAFontSettings", "on");
    final MeshViewer frame = new MeshViewer("MeshViewer", infoList, width.value, height.value);
    frame.setMeshQueue(meshQueue);
    frame.setVisible(true);
    // add close
    frame.addWindowListener(new WindowListener() {

        @Override
        public void windowOpened(WindowEvent arg0) {
        }

        @Override
        public void windowIconified(WindowEvent arg0) {
        }

        @Override
        public void windowDeiconified(WindowEvent arg0) {
        }

        @Override
        public void windowDeactivated(WindowEvent arg0) {
        }

        @Override
        public void windowClosing(WindowEvent arg0) {
            frame.exit(0);
        }

        @Override
        public void windowClosed(WindowEvent arg0) {
        }

        @Override
        public void windowActivated(WindowEvent arg0) {
        }
    });
}
Also used : RigidTransform3d(maspack.matrix.RigidTransform3d) WindowListener(java.awt.event.WindowListener) ArrayList(java.util.ArrayList) ArgParser(argparser.ArgParser) Point(java.awt.Point) StringHolder(argparser.StringHolder) WindowEvent(java.awt.event.WindowEvent) IntHolder(argparser.IntHolder) Vector(java.util.Vector)

Example 2 with StringHolder

use of argparser.StringHolder in project artisynth_core by artisynth.

the class NURBSViewer method main.

public static void main(String[] args) {
    StringHolder fileName = new StringHolder();
    IntHolder width = new IntHolder(400);
    IntHolder height = new IntHolder(400);
    ArgParser parser = new ArgParser("java maspack.geometry.NURBSViewer");
    parser.addOption("-width %d #width (pixels)", width);
    parser.addOption("-height %d #height (pixels)", height);
    parser.addOption("-drawAxes %v #draw coordinate axes", drawAxes);
    parser.addOption("-file %s #wavefront file name", fileName);
    parser.addOption("-sphere %v #create a NURBS sphere", addSphere);
    parser.addOption("-circle %v #create a NURBS circle", addCircle);
    parser.addOption("-mesh %v #create a mesh for surfaces", addMesh);
    parser.addOption("-collider %v #create a colliding object for meshes", collider);
    parser.addOption("-axisLength %f #coordinate axis length", axisLength);
    parser.addOption("-GLVersion %d{2,3} " + "#version of openGL for graphics", glVersion);
    parser.matchAllArgs(args);
    NURBSViewer viewFrame = null;
    try {
        GLVersion glv = (glVersion.value == 3 ? GLVersion.GL3 : GLVersion.GL2);
        viewFrame = new NURBSViewer(width.value, height.value, glv);
        GLViewer viewer = viewFrame.getViewer();
        if (fileName.value != null) {
            viewFrame.addNURBS(new File(fileName.value));
        }
        if (addSphere.value) {
            NURBSSurface sphere = new NURBSSurface();
            sphere.setSphere(0, 0, 0, 10);
            if (addMesh.value) {
                viewFrame.addNURBSWithMesh(sphere);
            } else {
                viewFrame.addNURBS(sphere);
            }
        }
        if (addCircle.value) {
            NURBSCurve3d circle = new NURBSCurve3d();
            circle.setCircle(0, 0, 10);
            viewFrame.addNURBS(circle);
        }
        viewer.autoFitPerspective();
        if (drawAxes.value) {
            if (axisLength.value > 0) {
                viewer.setAxisLength(axisLength.value);
            } else {
                viewer.setAxisLength(GLViewer.AUTO_FIT);
            }
        }
        if (collider.value) {
            viewFrame.addCollidable();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    viewFrame.setVisible(true);
}
Also used : GLVersion(maspack.render.GL.GLViewer.GLVersion) GLViewer(maspack.render.GL.GLViewer) StringHolder(argparser.StringHolder) NURBSCurve3d(maspack.geometry.NURBSCurve3d) IntHolder(argparser.IntHolder) ArgParser(argparser.ArgParser) File(java.io.File) IOException(java.io.IOException) NURBSSurface(maspack.geometry.NURBSSurface)

Aggregations

ArgParser (argparser.ArgParser)2 IntHolder (argparser.IntHolder)2 StringHolder (argparser.StringHolder)2 Point (java.awt.Point)1 WindowEvent (java.awt.event.WindowEvent)1 WindowListener (java.awt.event.WindowListener)1 File (java.io.File)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 Vector (java.util.Vector)1 NURBSCurve3d (maspack.geometry.NURBSCurve3d)1 NURBSSurface (maspack.geometry.NURBSSurface)1 RigidTransform3d (maspack.matrix.RigidTransform3d)1 GLViewer (maspack.render.GL.GLViewer)1 GLVersion (maspack.render.GL.GLViewer.GLVersion)1