【发布时间】:2018-03-25 19:08:21
【问题描述】:
我正在寻找一种在运行时将网格导出为 stl/obj/fbx 格式并将其保存在 Android 手机的本地文件中的方法。
我该怎么做?如果有插件,我愿意使用(免费/付费)。
【问题讨论】:
标签: c# android unity3d mesh fbx
我正在寻找一种在运行时将网格导出为 stl/obj/fbx 格式并将其保存在 Android 手机的本地文件中的方法。
我该怎么做?如果有插件,我愿意使用(免费/付费)。
【问题讨论】:
标签: c# android unity3d mesh fbx
这真的很复杂,因为您必须阅读每种格式(stl/obj/fbx)的规范并理解它们才能自己制作。幸运的是,已经有很多插件可用于将 Unity 网格导出到 stl、obj 和 fbx。
FBX:
UnityFBXExporter 用于在运行时将 Unity 网格导出到 fbx。
public GameObject objMeshToExport;
void Start()
{
string path = Path.Combine(Application.persistentDataPath, "data");
path = Path.Combine(path, "carmodel"+ ".fbx");
//Create Directory if it does not exist
if (!Directory.Exists(Path.GetDirectoryName(path)))
{
Directory.CreateDirectory(Path.GetDirectoryName(path));
}
FBXExporter.ExportGameObjToFBX(objMeshToExport, path, true, true);
}
OBJ:
对于 obj,使用ObjExporter。
public GameObject objMeshToExport;
void Start()
{
string path = Path.Combine(Application.persistentDataPath, "data");
path = Path.Combine(path, "carmodel" + ".obj");
//Create Directory if it does not exist
if (!Directory.Exists(Path.GetDirectoryName(path)))
{
Directory.CreateDirectory(Path.GetDirectoryName(path));
}
MeshFilter meshFilter = objMeshToExport.GetComponent<MeshFilter>();
ObjExporter.MeshToFile(meshFilter, path);
}
STL:
您可以使用pb_Stl 插件进行 STL 格式。
public GameObject objMeshToExport;
void Start()
{
string path = Path.Combine(Application.persistentDataPath, "data");
path = Path.Combine(path, "carmodel" + ".stl");
Mesh mesh = objMeshToExport.GetComponent<MeshFilter>().mesh;
//Create Directory if it does not exist
if (!Directory.Exists(Path.GetDirectoryName(path)))
{
Directory.CreateDirectory(Path.GetDirectoryName(path));
}
pb_Stl.WriteFile(path, mesh, FileType.Ascii);
//OR
pb_Stl_Exporter.Export(path, new GameObject[] { objMeshToExport }, FileType.Ascii);
}
【讨论】:
Start 函数中,则可以随时使用或调用它们。在保存模型之前,您可能需要调用Directory.Exists 和Directory.CreateDirectory,否则会遇到this 问题。还通过将“.fbx”作为所有它们的扩展名进行了错字。现在,修好了。见编辑。您可以检查保存是否使用File.Exists 或使用File.ReadAllBytes 读取文件