我正在开发一个需要在运行时读取hololens中的.obj格式文件的应用程序。
准确地说,我要做的是将.obj文件保存在hololens中,当应用程序运行时,它应该通过hololens文件系统访问该文件。我不想要将文件放在资产文件夹中并由Unity编辑器加载。
我已经搜索了多个论坛和主题线程,许多都提供了非常相似的解决方案。我遵循一些示例代码,并编写自己的代码来读取hololens中的文件。但是,它不起作用。
我程序的相关部分如下:
在脚本文件的开头,导入名称空间
#if WINDOWS_UWP
using Windows.Storage;
using Windows.Storage.Pickers;
using System.Threading.Tasks;
#endif
加载obj文件的脚本接收Stream类型参数。因此,我实现了此功能“ OpenFileForRead”,该功能接收文件夹路径和文件名作为参数,并返回文件流。
private static Stream OpenFileForRead(string folderName, string fileName)
{
Stream stream = null;
#if WINDOWS_UWP
Task task = new Task(
async () => {
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(folderName);
StorageFile file = await folder.GetFileAsync(fileName);
stream = await file.OpenStreamForReadAsync();
});
task.Start();
task.Wait();
#endif
return stream;
}
而且我将此函数称为如下:
#if WINDOWS_UWP
string objname = "Model.obj";
Stream stream = OpenFileForRead(ApplicationData.Current.RoamingFolder.Path, objname);
loadedObj = new OBJLoader().Load(stream);
#endif
“ ApplicationData.Current.RoamingFolder.Path”映射到hololens中的“ LocalAppData \ SOMEAPP \ RoamingState”。
因此,当我在hololens中部署此应用程序时,我会将设备门户中的“ Model.obj”文件上传到此应用程序的RoamingState文件夹中。然后我运行此应用程序,在理想情况下,它应该可以运行,不幸的是,它不能运行。
当前情况是,该应用程序可以成功部署到hololens并运行。其他游戏对象可以在hololens中正常运行,尽管它无法将.obj文件加载到场景中。
顺便说一下,“ new OBJLoader()。Load(stream);”已在Unity编辑器中进行了测试,该编辑器可以成功读取并加载PC上本地文件夹中的.obj文件。因此,问题很可能出在我读取hololens文件的方式上。但是我肯定会遵循其他类似主题给出的解决方案。我很困惑,不知道到底出了什么问题?
这里有一些我引用并复制了以下代码的网站:
https://longqian.me/2017/02/08/hololens-file-transfer/
https://forums.hololens.com/discussion/1862/how-to-deploy-and-read-data-file-with-app
https://github.com/Maximilian-Winter/ObjHololensViewer
https://github.com/jmher019/Hololens-OBJRenderer
几乎所有上述方法都使用类似的代码来读取hololens中的文件,尽管我无法在设备上通过它,但它是如此令人沮丧!
Untiy编辑器:2018.4.0f1
Hololens:第一代
我正在开发一个需要在运行时读取hololens中的.obj格式文件的应用程序。准确地说,我想做的是将.obj文件保存在hololens中,当应用程序运行时,它应该访问...
在使用Hololens(v1)和Unity读取数据之前,我遇到了很多问题。我ages