通过服务器在运行时导入3D对象和纹理



我正在尝试以最有效的方式通过运行时以最有效的方式加载模型和纹理,到目前为止,我已经阅读了有关GLTF格式,Draco API和目前,我已经实施了一个简单的过程,该过程非常缓慢。我正在使用BestHTTP,并且正在使用纹理:

var texFoundPath = Directory.GetFiles(outFolder, texFileName, SearchOption.AllDirectories).Single();
                            Debug.Log("Loading texture from " + texFoundPath);
                            var texBytes = File.ReadAllBytes(texFoundPath);
                            Texture2D tex = new Texture2D(2,2);
                            tex.LoadImage(texBytes);

并使用objimporter导入对象。

var gameObject = ObjImporter.Import(objStr, mtlStr, textureHashtable);

因此,在运行时,3-5MB的型号最多需要3-5秒即可加载。这很慢,不适合任何事物。如果我有大约100个型号,在本地进行此操作将导致200-300MB APK。

因此,目前我正在寻找一种有效地做到这一点的方法,并会喜欢您的帮助。我认为最好将模型加载到Draco API中。但是我不确定如何创建将与该API通信的插件。

每秒1 MB并不是一个不好的下载速度。实际上,不使用预测的唯一选择是降低纹理的分辨率并使它们变小,将纹理文件压缩到"块"中,并根据需要下载每个"块",取消压缩并应用于模型,但这可能仍会采用很多时间。

我认为您真正想要的是具有一些预测逻辑,这些逻辑在实际需要之前加载了资产的"捆绑",并将它们存储在内存中以备后用。

例如,如果玩家距离需要在观看之前需要下载的房屋距离200米,并且玩家查看距离为100米,请开始下载房屋。当房子在观看距离距离距离距离之内时,它将被下载并准备使用。

最新更新