String [] terrainBuild(Vec3 [] vectors, int objectNum, int wide, int high){ String [] terrain = new String[vectors.length]; for(int i = 0; i < terrain.length; i++){ terrain[i] = "v "+nf(vectors[i].x*100,1,1)+" "+nf(vectors[i].y*100,1,1)+" "+nf(vectors[i].z*100,1,1); } String [] faces = new String[(wide-1)*(high-1)]; int baseLength = wide-1; int sourceLength = wide; for(int i = 0; i < faces.length; i++){ int [] facenum = new int[4]; int sourceStart = (i % (wide - 1)) + ((i / (wide - 1)) * wide); int sourceEnd = sourceStart + (wide * 2); int add = objectNum * (wide - 1) * (high - 1); int n = 0; for (int j = sourceStart; j < sourceEnd; j += wide){ for (int k = 0; k < 2; k++){ //numbering starts at 1 facenum[n++] = (j+k+add+1); } } faces[i] = "f "+facenum[0]+" "+facenum[1]+" "+facenum[3]+" "+facenum[2]; } String newline = ""; String name = "g Plane"+nf(objectNum+1,2); String [] returnable = { "" }; returnable = concat(returnable, terrain); returnable = append(returnable, newline); returnable = append(returnable, name); returnable = concat(returnable, faces); returnable = append(returnable, newline); returnable = append(returnable, "g"); return returnable; } void saveObjects(String fileName){ String [] file = terrainBuild(net.netImage(), 0, net.W, net.H); saveStrings(fileName,file); println("file:"+fileName+" saved"); }