首页 文章

使用 high-res 纹理优化 SceneKit 性能

提问于
浏览
5

我是一个相当有经验的 iOS 开发人员,但是一个完整的 SceneKit 新手,试图在一个基本的应用程序中模拟一些行星。

为此,我正在使用适用于基本球体的 high-res 普通和漫射火星,金星等地图。他们工作!它们看起来很棒,正是我想要的。

在此输入图像描述

在此输入图像描述

问题是,我被 quality/memory 权交所杀。

我可以缩小纹理的尺寸以减少内存占用,但是在某个分辨率以下,结果(特别是法线贴图)开始变得非常糊涂和可怕。应用程序需要能够至少缩放到行星所在的位置,但为了保持山脉和山谷中的任何清晰度,我需要使用大约 6000 x 3000 的 PNG 法线贴图(上图)。我可以缩放漫反射贴图直到大约 1000 x 500,但即便如此,我正在从单个球体轻轻旋转周期性记忆崩溃,只有一个光,没有背景,没有物理,没有其他几何.

现在,我知道这是一张 super-high-res 普通地图。我知道了。但与此同时,它只是一个领域,什么都不做。这甚至没有接近我见过的其他应用程序执行完美的复杂性,即使有一些非常详细的纹理。似乎必须有一些方法可以为单个对象获取 high-detail 表面纹理,而不会使应用程序崩溃。

所以,作为一个完整的 SceneKit 新手,我想知道:**是否有任何技巧可以获得良好的 SceneKit 纹理质量而不使用世界上所有的内存?**也许是一种处理图像纹理的方法,re-encoding 文件,改变 scene/node 设置等?任何方式都可以通过较小的图像获得清晰的质量,或者使用相同的图像降低内存使用量?

我很乐意引用一些代码,但现在没有太多要显示的。我以标准方式将纹理应用于 SceneKit 节点,并且它可以工作。我只是因缺乏记忆或缺乏图像质量而死亡。

谁能帮我吗?

1 回答

  • 0

    我认为这个想法是明智地划分球体纹理,所以它在任何时候都只显示 60 度的纹理,类似于在缩放时以高分辨率显示图像的方式。我不知道该怎么做,但这是我的猜测。

相关问题