static Vector3 readPos(string posLine) { return(OBJFileReader.readVector3(posLine)); }
static Vector3 readNormal(string normalLine) { // vn # # # return(OBJFileReader.readVector3(normalLine)); }
public static Material loadMaterial(string materialFileName) { string fullPath = dataDir + materialFileName; StreamReader sourceFile = new StreamReader(fullPath); string line; string materialName = null; bool existingFound = false; Material newMaterial = null; char[] space = { ' ' }; // First check if we already have this material do { line = sourceFile.ReadLine(); if (line == null) { break; } else if (line.Contains("newmtl")) { materialName = line.Split(space)[1]; break; } }while (line != null); newMaterial = getMaterialByName(materialName); if (newMaterial != null) { sourceFile.Close(); return(newMaterial); } else { newMaterial = new Material(); newMaterial.materialName = materialName; } // Read rest of the file // use . as separator instead of system default System.Globalization.NumberFormatInfo nfi = new System.Globalization.CultureInfo("en-US", false).NumberFormat; do { line = sourceFile.ReadLine(); if (line == null) { break; } if (line.Contains("#")) { // comment } else if (line.Contains("map_Kd")) { // map_Kd filename.png newMaterial.textureName = line.Split(space)[1]; newMaterial.textureGLIndex = loadTexture(newMaterial.textureName); } else if (line.Contains("illum")) { newMaterial.illumination = Single.Parse(line.Split(space)[1], nfi); } else if (line.Contains("Ka")) { newMaterial.alpha = OBJFileReader.readVector3(line); } else if (line.Contains("Kd")) { newMaterial.diffuse = OBJFileReader.readVector3(line); } else if (line.Contains("Ks")) { newMaterial.specular = OBJFileReader.readVector3(line); } } while (line != null); sourceFile.Close(); materials.Add(newMaterial); return(newMaterial); }