public Obj loadObj(Context context, String name) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(context.getAssets().open(name))); String line = reader.readLine(); ArrayList<Float> normalList = new ArrayList<>(); ArrayList<Float> vertexList = new ArrayList<>(); ArrayList<Float> uvList = new ArrayList<>(); float xScale = 0; float yScale = 0; float zScale = 0; Obj obj = new Obj(); while (line != null) { Utils.print("Processing line: " + line); String[] lineSplit = line.split("\\s+"); if (lineSplit.length > 0) { if (lineSplit[0].compareTo(COMMENT) == 0) { Utils.print("Comment, IGNORING LINE "); } else if (lineSplit[0].compareTo(MAT_REF) == 0) { Utils.print("Material Reference: " + lineSplit[1]); if (obj.getCurrGroup() == null) { Utils.print("Malformed file, no object declared"); return null; } if (obj.getMatLib() == null) { Utils.print("Malformed file, no materialLib declared"); return null; } obj.setGroupMat(lineSplit[1]); } else if (lineSplit[0].compareTo(SMOOTHING) == 0) { Utils.print("Smoothing"); } else if (lineSplit[0].compareTo(MAT_LIB) == 0) { Utils.print("Material Library: " + lineSplit[1]); obj.setMatLib(new MaterialLib(context, lineSplit[1])); } else if (lineSplit[0].compareTo(OBJECT) == 0) { Utils.print("Object name: " + lineSplit[1]); obj.name = lineSplit[1]; } else if (lineSplit[0].compareTo(FACE) == 0) { float[] faceTris = parseFace(lineSplit, vertexList, normalList, uvList); for (int i = 0; i < faceTris.length; i++) { obj.getCurrGroup().floatBuffer.add(faceTris[i]); } } else if (lineSplit[0].compareTo(GROUP) == 0) { Utils.print("Group: " + lineSplit[1]); obj.createGroup(lineSplit[1]); } else { float x = Float.parseFloat(lineSplit[1]); float y = Float.parseFloat(lineSplit[2]); if (lineSplit[0].compareTo(VERTEX) == 0) { float z = Float.parseFloat(lineSplit[3]); vertexList.add(x); vertexList.add(y); vertexList.add(z); if (Math.abs(x) > xScale) { xScale = Math.abs(x); } if (Math.abs(y) > yScale) { yScale = Math.abs(y); } if (Math.abs(z) > zScale) { zScale = Math.abs(z); } } else if (lineSplit[0].compareTo(NORMAL) == 0) { float z = Float.parseFloat(lineSplit[3]); normalList.add(x); normalList.add(y); normalList.add(z); } else if (lineSplit[0].compareTo(UV) == 0) { uvList.add(x); uvList.add(y); } } line = reader.readLine(); } } ; // gUtils.print("Created Object: " + obj.toString()); return obj; }