C# 在游戏模式下加载对象

C# 在游戏模式下加载对象,c#,unity3d,C#,Unity3d,我正在构建一个测量人体不同部位的应用程序。因为每次新的人体都会从外部磁盘上传到.obj文件中,所以问题是我无法创建一个预置,因为对象没有修复,我必须在运行时加载一个对象 我试过使用OBJLoader扩展,但OBJLoader使用的是UnityEdit,所以在构建之后它就不工作了 是否有任何解决方案可以在构建之后从外部磁盘加载.obj文件 我正在为Windows(.exe)构建应用程序。要在运行时以obj格式加载三维静态模型,请执行以下步骤: 将obj文件重命名为*.bytes/*.txt或 将文

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

我试过使用OBJLoader扩展,但OBJLoader使用的是UnityEdit,所以在构建之后它就不工作了

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


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

要在运行时以obj格式加载三维静态模型,请执行以下步骤:

  • 将obj文件重命名为
    *.bytes
    /
    *.txt

  • 将文件加载到

  • 解析字符串()并从中提取网格数据(顶点位置、索引、uv0、uv1等)。obj格式非常容易解析,还有许多插件和开源项目可用

  • 创建一个
    网格
    并用网格数据填充它,并将其分配给
    游戏对象的
    网格过滤器

    Mesh mesh = new Mesh();
    GetComponent<MeshFilter>().mesh = mesh;
    mesh.vertices = newVertices;
    mesh.uv = newUV;
    mesh.triangles = newTriangles;
    
    Mesh-Mesh=新网格();
    GetComponent().mesh=mesh;
    mesh.vertices=新顶点;
    mesh.uv=newUV;
    网格三角形=新三角形;
    

  • 还可以从
    *.mtl
    文件中提取物料信息。只需遵循类似的步骤:使用适当的着色器创建
    材质
    ,为材质指定纹理,并将材质指定给
    游戏对象
    网格渲染器
    共享材质
    ?是的,那个OBJLoader类正在使用UnityEdit,它在构建后不起作用。生成网格时,请注意~60k个顶点的单位限制。您能详细说明第三点吗?因为根据我的说法,您试图说手动读取对象文件
    Mesh mesh = new Mesh();
    GetComponent<MeshFilter>().mesh = mesh;
    mesh.vertices = newVertices;
    mesh.uv = newUV;
    mesh.triangles = newTriangles;