public ObjModel(String fileName){
        positions = new ArrayList<Vector3f>();
        texCoords = new ArrayList<Vector2f>();
        normals = new ArrayList<Vector3f>();
        indices = new ArrayList<ObjIndex>();
        hasNormals = false;
        hasTexCoords = false;

        BufferedReader meshReader = null;

        try{
            meshReader = new BufferedReader(new FileReader(fileName));
            String line;

            while((line = meshReader.readLine()) != null){
                String[] tokens = line.split(" ");
                tokens = Util.removeEmptyStrings(tokens);

                if(tokens.length == 0 || tokens[0].equals("#")){
                    continue;
                }else if(tokens[0].equals("v")){
                    positions.add(new Vector3f(Float.valueOf(tokens[1]),
                            Float.valueOf(tokens[2]),
                            Float.valueOf(tokens[3])));
                }else if(tokens[0].equals("vt")){
                    texCoords.add(new Vector2f(Float.valueOf(tokens[1]),
                            Float.valueOf(tokens[2])));
                }else if(tokens[0].equals("vn")){
                    normals.add(new Vector3f(Float.valueOf(tokens[1]),
                            Float.valueOf(tokens[2]),
                            Float.valueOf(tokens[3])));
                }else if (tokens[0].equals("f")){
                    for(int i = 0 ; i < tokens.length - 3 ; i++){
                        indices.add(parseObjIndex(tokens[1]));
                        indices.add(parseObjIndex(tokens[2 + i]));
                        indices.add(parseObjIndex(tokens[3 + i]));
                    }

                    //indices.add(Integer.parseInt(tokens[1]) - 1);
                    //indices.add(Integer.parseInt(tokens[2]) - 1);
                    //indices.add(Integer.parseInt(tokens[3]) - 1);
                    //if(tokens.length > 5){
                        //indices.add(Integer.parseInt(tokens[1].split("/")[0]) - 1);
                        //indices.add(Integer.parseInt(tokens[3].split("/")[0]) - 1);
                        //indices.add(Integer.parseInt(tokens[4].split("/")[0]) - 1);
                    //}
                }
            }
            meshReader.close();
        }catch(Exception e){
            System.out.println(e);
            e.printStackTrace();
            System.exit(1);
        }
    }