コード例 #1
0
    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);
    }
コード例 #2
0
    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);
    }