如何解决ARKit – 使用大于 300 MB 的 SCN 文件时出现“意外发现为零”
我正在加载一个 300mb 的 .dae 扩展 3d 模型,转换为 .scn,有 440 万个顶点,150 万个多边形,这是一个建筑的 3d 模型,由一位艺术家在 3DS MAX 中创建,如下所示:
let sceneToLoad = SCNScene(named: "art.scnassets/building1.scn")!
(它被加载到应用程序的 SCNView 默认查看器中,以便用户可以查看、旋转它等,通过 SCNView.allowsCameraControl = true)
Xcode 在读取该行时会立即崩溃,只有编译器信息“在解开可选值时意外发现 nil”。
当它运行到该行时,内存根本没有增加 - 表明它拒绝读取它,而是崩溃了。 3d 模型在 XCODE Scenekit 编辑器图形查看器中完美加载、可查看、可旋转等。当我将其替换为指向较小 3d 模型的另一个文件名时,它工作正常,即使我删除同一文件中的模型 SCNNode(在同一个“building1.scn”文件中)并替换为另一个较小的 SCNNode随机对象,然后奇迹般地它也可以正常工作并且加载良好。
我在 SO 上没有发现任何类似的东西 - 在其他类似的答案中,即使模型很大,iOS 也会尝试加载模型,但在任何一个模型中,它都会立即崩溃,找到一个 nil 值。
已经尝试了所有解决方法,删除/删除文件并再次添加,以原始形式将其加载为 .dae,加载场景而不展开并稍后在搜索节点时展开 - 没有任何效果,总是以相同的方式崩溃。当我尝试在 ARKIT 场景中加载它时会发生同样的事情 - 它在上面试图加载文件的行崩溃。
有没有人遇到过这个问题,或者知道任何解决方法?
非常感谢
解决方法
将带有 1.5M
多边形的 3D 模型加载到 SceneKit/ARKit、RealityKit 或 AR Quick Look 时,您总是会失败。这是因为每个 3D 模型的强大多边形数量不得大于 10K
(UV 纹理的最大分辨率为 2Kx2K,或常规纹理为 1Kx1K),并且 maximum number of polygons per 3D scene 不得大于那个100K
。您已超过 15 次超出“未说出口”的 AR 限制。
游戏引擎和 AR 框架,如 SceneKit、RealityKit 和 AR Quick Look,无法在 iOS 设备上使用 60 fps 帧率渲染如此大量的多边形(即使大多数台式计算机也无法做到这一点)。 ARKit
/RealityKit
应用程序的最佳解决方案是使用优化的低多边形模型。在移动平台上使用 AR 的首选格式是 Pixar USDZ
。 USDZ 文件是 USD
文件的无压缩、未加密的 zip 存档。
看看这个来自 Turbosquid 的低多边形模型。它只有 5K 个多边形,看起来不错,不是吗?
附言
您可以使用命令行工具在 obj
中转换 fbx
、abc
或 usdz
。阅读它HERE。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。