Swift 阿基特&x2013;获得;意外发现“无”;使用SCN文件时>;300 MB

Swift 阿基特&x2013;获得;意外发现“无”;使用SCN文件时>;300 MB,swift,augmented-reality,scenekit,arkit,realitykit,Swift,Augmented Reality,Scenekit,Arkit,Realitykit,我正在加载扩展名为.dae的300mb 3d模型,转换为.scn,包含440万个顶点、150万个多边形,这是一个由艺术家在3DS MAX中创建的建筑3d模型,如下所示: let sceneToLoad = SCNScene(named: "art.scnassets/building1.scn")! (它被加载到应用程序中的SCNView默认查看器中,以便用户可以通过SCNView.allowsCameraControl=true查看、旋转它等) Xcode在读取该行时将立

我正在加载扩展名为.dae的300mb 3d模型,转换为.scn,包含440万个顶点、150万个多边形,这是一个由艺术家在3DS MAX中创建的建筑3d模型,如下所示:

let sceneToLoad = SCNScene(named: "art.scnassets/building1.scn")!
(它被加载到应用程序中的SCNView默认查看器中,以便用户可以通过SCNView.allowsCameraControl=true查看、旋转它等)

Xcode在读取该行时将立即崩溃,只有编译器信息“在展开可选值时意外发现nil”

当它运行到那一行时,内存根本不会上升——这表明它拒绝读取它,反而崩溃了。在XCODE Scenekit编辑器图形查看器中,3d模型可以完全加载、查看、旋转等。当我将其替换为指向一个较小三维模型的另一个文件名时,它工作正常,甚至当我删除同一文件(在同一个“building1.scn”文件中)中的模型SCNNode并替换为另一个随机对象的较小SCNNode时,奇迹般地,它也工作正常并加载

我还没有在SO上发现任何类似的东西——在其他类似的回答中,iOS尝试加载模型,即使它很大,但在任何情况下,它都不会立即崩溃,并找到一个nil值

已尝试了所有解决方法,删除/删除文件并再次添加,以原始形式加载为.dae,加载场景而不展开,然后在搜索节点时展开-没有任何效果,总是以相同的方式崩溃。当我尝试在ARKIT场景中加载它时,也会发生同样的情况——它在上面一行尝试加载文件时崩溃

有没有人遇到过这个问题,或者知道任何解决方法


非常感谢

当将带有
1.5M
多边形的3D模型加载到SceneKit/ARKit、RealityKit或AR Quick Look中时,您总是会失败。这是因为每个3D模型的多边形数量不得大于
10K
(UV纹理的最大分辨率为2Kx2K,或常规纹理的分辨率为1Kx1K),且a不得大于
100K
。您在15次内超过了“未说出的”应收账款限额

游戏引擎和AR框架,如SceneKit、RealityKit和AR Quick Look,无法在iOS设备上以60 fps的帧速率渲染如此大量的多边形(即使大多数桌面计算机也无法做到这一点)。
ARKit
/
RealityKit
应用程序的最佳解决方案是使用优化的低多边形模型。在移动平台上使用AR的最首选格式是Pixar
USDZ
。USDZ文件是
USD
文件的无压缩、未加密的zip存档

看看Turbosquid的这个低多边形模型。它只有5K个多边形,看起来不错,不是吗

附言


您可以使用命令行工具在
usdz
中转换
obj
fbx
abc
。阅读相关内容。

谢谢安迪-这真的帮了大忙!这个模型看起来确实很棒。我们的原始文件是在3DS MAX中制作的(并导出到DAE中),根据我们的文件类型,是否有方法将其转换为具有低多边形的USDZ,或者有其他方法减少其多边形数?非常感谢您只能转换为USDZ的明确格式,请阅读更新答案中的相关内容。遗憾的是,在不损坏模型曲面的情况下,无法减少任何模型中的多边形数。