Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 package edu.tum.cs.vis.model.parser;
00009
00010 import java.io.BufferedReader;
00011 import java.io.DataInputStream;
00012 import java.io.FileInputStream;
00013 import java.io.InputStreamReader;
00014
00015 import edu.tum.cs.vis.model.util.Group;
00016 import edu.tum.cs.vis.model.util.Mesh;
00017 import edu.tum.cs.vis.model.util.Triangle;
00018 import edu.tum.cs.vis.model.util.Vertex;
00019
00041 public class CustomParser extends ModelParser {
00042
00043
00044
00045
00046 @Override
00047 protected boolean loadModel(String filename) {
00048 try {
00049
00050
00051 FileInputStream fstream = new FileInputStream(filename);
00052
00053 DataInputStream in = new DataInputStream(fstream);
00054 BufferedReader br = new BufferedReader(new InputStreamReader(in));
00055 String strLine;
00056
00057 Group g = new Group(model);
00058 model.setGroup(g);
00059 Mesh m = new Mesh();
00060 g.setMesh(m);
00061
00062 boolean isTriangles = false;
00063
00064 while ((strLine = br.readLine()) != null) {
00065 if (strLine.compareTo("#") == 0)
00066 isTriangles = true;
00067 else {
00068 String[] parts = strLine.split("\t");
00069
00070 if (!isTriangles) {
00071 if (parts.length != 5)
00072 throw new RuntimeException("Vertex: invalid number of data: "
00073 + parts.length);
00074
00075 float x = Float.valueOf(parts[0]);
00076 float y = Float.valueOf(parts[1]);
00077 float z = Float.valueOf(parts[2]);
00078
00079 model.getVertices().add(new Vertex(x, y, z));
00080 } else {
00081 if (parts.length != 3)
00082 throw new RuntimeException("Triangle: invalid number of data: "
00083 + parts.length);
00084 int p1 = Integer.valueOf(parts[0]);
00085 int p2 = Integer.valueOf(parts[1]);
00086 int p3 = Integer.valueOf(parts[2]);
00087
00088 Triangle t = new Triangle();
00089 t.getPosition()[0] = model.getVertices().get(p1);
00090 t.getPosition()[1] = model.getVertices().get(p2);
00091 t.getPosition()[2] = model.getVertices().get(p3);
00092
00093 t.updateCentroid();
00094 m.getTriangles().add(t);
00095 }
00096 }
00097
00098 }
00099
00100 in.close();
00101
00102 } catch (Exception e) {
00103 System.err.println("Error: " + e.getMessage());
00104 return false;
00105 }
00106
00107 return true;
00108
00109 }
00110 }