/// <summary> /// 从本地文件中加载一个.obj模型 /// </summary> /// <param name="modelFilePath">模型文件路径</param> /// <param name="texturePath">贴图文件路径</param> public void LoadFormFile(string modelFilePath, string texturePath) { if (!File.Exists(modelFilePath)) { Debug.Log("请确认obj模型文件是否存在!"); } if (!modelFilePath.EndsWith(".obj")) { Debug.Log("请确认这是一个obj模型文件"); } //读取内容 StreamReader reader = new StreamReader(modelFilePath, Encoding.Default); string content = reader.ReadToEnd(); reader.Close(); //解析内容 ObjMesh objInstace = new ObjMesh(); objInstace = objInstace.LoadFromObj(content); //计算网格 Mesh mesh = new Mesh(); mesh.vertices = objInstace.VertexArray; mesh.triangles = objInstace.TriangleArray; if (objInstace.UVArray.Length > 0) { mesh.uv = objInstace.UVArray; } if (objInstace.NormalArray.Length > 0) { mesh.normals = objInstace.NormalArray; } mesh.RecalculateBounds(); //生成物体 GameObject go = new GameObject(); MeshFilter meshFilter = go.AddComponent <MeshFilter>(); meshFilter.mesh = mesh; MeshRenderer meshRenderer = go.AddComponent <MeshRenderer>(); //获取mtl文件路径 string mtlFilePath = modelFilePath.Replace(".obj", ".mtl"); //从mtl文件中加载材质 Material[] materials = ObjMaterial.Instance.LoadFormMtl(mtlFilePath, texturePath); }
/// <summary> /// 从本地文件中加载一个.obj模型 /// </summary> /// <param name="modelFilePath">模型文件路径</param> /// <param name="texturePath">贴图文件路径</param> public void LoadFormFile(string modelFilePath, string texturePath) { if(!File.Exists(modelFilePath)) Debug.Log("请确认obj模型文件是否存在!"); if(!modelFilePath.EndsWith(".obj")) Debug.Log("请确认这是一个obj模型文件"); //读取内容 StreamReader reader = new StreamReader(modelFilePath,Encoding.Default); string content = reader.ReadToEnd(); reader.Close(); //解析内容 ObjMesh objInstace = new ObjMesh(); objInstace = objInstace.LoadFromObj(content); //计算网格 Mesh mesh = new Mesh(); mesh.vertices = objInstace.VertexArray; mesh.triangles = objInstace.TriangleArray; if(objInstace.UVArray.Length > 0) mesh.uv = objInstace.UVArray; if(objInstace.NormalArray.Length>0) mesh.normals = objInstace.NormalArray; mesh.RecalculateBounds(); //生成物体 GameObject go = new GameObject(); MeshFilter meshFilter = go.AddComponent<MeshFilter>(); meshFilter.mesh = mesh; MeshRenderer meshRenderer = go.AddComponent<MeshRenderer>(); //获取mtl文件路径 string mtlFilePath = modelFilePath.Replace(".obj",".mtl"); //从mtl文件中加载材质 Material[] materials = ObjMaterial.Instance.LoadFormMtl(mtlFilePath, texturePath); }