IEnumerator ConstructModel(string filename) { isLoaded = false; FileReader.ObjectFile obj = FileReader.ReadObjectFile(directoryPath + filename); FileReader.MaterialFile mtl = FileReader.ReadMaterialFile(directoryPath + obj.mtllib); MeshFilter filter = gameObject.AddComponent <MeshFilter> (); MeshRenderer renderer = gameObject.AddComponent <MeshRenderer> (); filter.mesh = PopulateMesh(obj); renderer.materials = DefineMaterial(obj, mtl); isLoaded = true; yield return(null); }
Material[] DefineMaterial(FileReader.ObjectFile obj, FileReader.MaterialFile mtl) { Material[] materials = new Material[obj.usemtl.Count]; for (int i = 0; i < obj.usemtl.Count; i += 1) { int index = mtl.newmtl.IndexOf(obj.usemtl [i]); Texture2D texture = new Texture2D(1, 1); texture.LoadImage(File.ReadAllBytes(Path.Combine(directoryPath, mtl.mapKd [index]))); materials [i] = new Material(Shader.Find("Diffuse")); materials [i].name = mtl.newmtl [index]; materials [i].mainTexture = texture; } return(materials); }