SceneKit——一个应用程序中 SCN 资产的最大尺寸

SceneKit – Maximum size for SCN assets in one app

我想知道我的 SCNKit 应用程序中应该有多少 .scn 数据?除了一般 iOS 应用程序大小限制(在 this post 中找到)外,是否有任何限制?

我希望它与设备 RAM 相比应该是一个合理的大小。因此,为了确保应用程序不会在特定设备上崩溃,它应该避免接近 this post 中提到的限制,例如,如果 RAM 为 1GB,我应该远离 400MB 左右的任何东西以确保安全?

我一次可以加载多大的 .scn 文件?所以例如如果有 6 个场景,每个场景 40MB,一次将它们全部加载到内存中 (240MB) 可能不是一个好主意,但可以在需要时交换它们吗?但是考虑到无线传输限制,这仍然是一个很大的数据量。

我对使用 SCNKit 场景的应用程序有什么期望缺乏经验,并且找不到太多可以坚持的东西。

在这样的背景下谈论 Apple 的游戏引擎(如 SceneKit 或 RealityKit)似乎是不正确的。如您所知,游戏引擎以 60 fps 的速度实时渲染 3D 内容。如果出现丢帧,应用会断断续续地显示内容。一旦越过“红线”,就会出现臭名昭著的丢帧问题。

是什么让你跨越了这条“红线”?这是个好问题。通常,场景总共包含超过 100K 个多边形(尤其是 iOS)、heavy-contact 物理、大量粒子发射、Hi-res 4K 纹理、实时阴影和大量 PBR材料可以使您的应用程序保证开始跳帧。

如何处理?没有灵丹妙药。一旦您注意到您的应用程序“卡顿”,首先,您需要控制多边形的数量(保持在 100K 以下)和纹理的大小(保持在 2K 以下)。物理和粒子比较难控制,但也需要控制。例如,单个粒子发射器即使每秒发射大约 20K 个粒子(寿命适中)也能很好地工作,而不是数百万个。


此 table 可帮助您了解某些实体的影响(macOS 版本)。

SceneKit entity What does it affect?
Hi-rez textures (4K or 8K) Consume considerably more RAM
Higher number of polygons Increases CPU processing and consumes more RAM
Higher number of particles Increases GPU / CPU processing, consumes more RAM
Higher number of PBR materials Increases GPU processing and consumes more RAM
Hi-rez poly-models with forward shadows Considerably increase GPU processing