我正在构建一个测量人体不同部位的应用程序。因为每次新的人体将从外部磁盘上传到.obj文件中,所以问题是我无法创建预制件,因为对象没有修复,我必须在运行时加载一个对象。
我尝试使用OBJLoader扩展,但是OBJLoader正在使用UnityEditor,所以它在构建后无效。
是否有任何解决方案可以在构建之后从外部磁盘加载.obj文件。
我正在为Windows(.exe)构建应用程序。
答案 0 :(得分:1)
要在运行时以obj格式加载3D静态模型,请按照下列步骤操作:
将obj文件重命名为*.bytes
/ *.txt
或other supported formats。
将文件加载到TextAsset
TextAsset data = Resources.Load("model.bytes") as TextAsset;
解析字符串(data.text
)并从中提取网格数据(顶点位置,索引,uv0,uv1等)。 obj格式很容易解析,还有很多插件和开源项目可供使用。
创建Mesh
并将其填入网格数据并将其分配给MeshFilter
的{{1}}。
GameObject
还可以从Mesh mesh = new Mesh();
GetComponent<MeshFilter>().mesh = mesh;
mesh.vertices = newVertices;
mesh.uv = newUV;
mesh.triangles = newTriangles;
文件中提取材料信息。只需按照类似的步骤操作:使用正确的着色器创建*.mtl
,为材质指定纹理,并将材质指定给Material
sharedMaterial
的{{1}}。