在游戏模式下加载对象

时间:2016-12-08 11:43:11

标签: c# unity3d

我正在构建一个测量人体不同部位的应用程序。因为每次新的人体将从外部磁盘上传到.obj文件中,所以问题是我无法创建预制件,因为对象没有修复,我必须在运行时加载一个对象。

我尝试使用OBJLoader扩展,但是OBJLoader正在使用UnityEditor,所以它在构建后无效。

是否有任何解决方案可以在构建之后从外部磁盘加载.obj文件。

我正在为Windows(.exe)构建应用程序。

1 个答案:

答案 0 :(得分:1)

要在运行时以obj格式加载3D静态模型,请按照下列步骤操作:

  1. 将obj文件重命名为*.bytes / *.txtother supported formats

  2. 将文件加载到TextAsset

    TextAsset data = Resources.Load("model.bytes") as TextAsset;
    
  3. 解析字符串(data.text)并从中提取网格数据(顶点位置,索引,uv0,uv1等)。 obj格式很容易解析,还有很多插件和开源项目可供使用。

  4. 创建Mesh并将其填入网格数据并将其分配给MeshFilter的{​​{1}}。

    GameObject
  5. 还可以从Mesh mesh = new Mesh(); GetComponent<MeshFilter>().mesh = mesh; mesh.vertices = newVertices; mesh.uv = newUV; mesh.triangles = newTriangles; 文件中提取材料信息。只需按照类似的步骤操作:使用正确的着色器创建*.mtl,为材质指定纹理,并将材质指定给Material sharedMaterial的{​​{1}}。