我正在构建一个测量人体不同部位的应用程序。为此,每次新的人体都将从外部磁盘上传到.obj文件中,所以问题是我无法创建预制件,因为对象没有固定,我必须在运行时加载对象。在游戏模式下加载对象
我已经尝试过使用OBJLoader扩展,但OBJLoader使用UnityEditor,因此它在构建后不工作。
是否有任何解决方案可以在构建之后从外部磁盘加载.obj文件。
我正在为Windows(.exe)构建应用程序。
我正在构建一个测量人体不同部位的应用程序。为此,每次新的人体都将从外部磁盘上传到.obj文件中,所以问题是我无法创建预制件,因为对象没有固定,我必须在运行时加载对象。在游戏模式下加载对象
我已经尝试过使用OBJLoader扩展,但OBJLoader使用UnityEditor,因此它在构建后不工作。
是否有任何解决方案可以在构建之后从外部磁盘加载.obj文件。
我正在为Windows(.exe)构建应用程序。
要在运行时加载的obj格式的3D静态模型,请按照下列步骤操作:
obj的文件重命名为*.bytes
/*.txt
或other supported formats。
将文件加载到TextAsset
TextAsset data = Resources.Load("model.bytes") as TextAsset;
分析字符串(data.text
),并从中提取出的网格数据(顶点位置,指数,UV0,UV1等等)。 obj格式很容易解析,也有很多插件和开源项目可用。
创建一个Mesh
并填充网格数据并将其分配给GameObject
的MeshFilter
。
Mesh mesh = new Mesh();
GetComponent<MeshFilter>().mesh = mesh;
mesh.vertices = newVertices;
mesh.uv = newUV;
mesh.triangles = newTriangles;
的材料信息也可以从*.mtl
文件中提取。只需按照以下步骤操作:使用适当的着色器创建Material
,为材质分配纹理并将材质分配到GameObject
的MeshRenderer
的sharedMaterial
。
你试过这个吗? https://www.assetstore.unity3d.com/en/#!/content/49547 – FCin
是的,那OBJLoader类正在使用UnityEditor,它不会在生成之后工作 – Nishit