我是一位相当有经验的 iOS 开发人员,但完全是 SceneKit 新手,试图在基本应用程序中模拟一些行星。
为此,我使用火星、金星等的高分辨率法线和漫反射贴图,应用于基本球体。他们工作了!它们看起来棒极了,正是我想要的。
问题是,我得到了killed通过质量/内存权衡。
我可以缩小纹理的尺寸以减少内存占用,但低于一定的分辨率,结果(尤其是法线贴图)开始看起来非常糊状和糟糕。该应用程序需要能够至少缩放到地球屏幕宽度的位置,但为了保持山脉和山谷的清晰度,我需要使用大约 6000 x 3000 的 PNG 法线贴图(上图)。我可以缩放漫反射贴图降至约 1000 x 500,但即便如此,我从一个轻轻旋转的球体中得到周期性的内存崩溃,只有一个灯光,没有背景,没有物理,也没有其他几何形状。
Now, I know这是一张超高分辨率的法线贴图。我得到它。但与此同时,它只是一个领域,什么也不做。这甚至与我所见过的其他应用程序完美执行的复杂性相去甚远,即使它们自己有一些非常详细的纹理。似乎必须有某种方法来获取单个对象的高细节表面纹理,而不会使应用程序崩溃。
所以,作为一个 SceneKit 新手,我想知道:有没有什么技巧可以在不使用世界上所有内存的情况下获得良好的 SceneKit 纹理质量?也许是一种处理图像纹理、重新编码文件、更改场景/节点设置等的方法?有什么办法可以用较小的图像获得清晰的质量,或者用相同的图像降低内存使用量?
我很乐意引用一些代码,但现在没有太多可展示的。我以标准方式将纹理应用到 SceneKit 节点,并且它有效。我只是因为缺乏记忆或缺乏图像质量而死去。
谁能帮我吗?
我认为这个想法是明智地分割球体纹理,这样它在任何时候都只显示大约 60 度的纹理,类似于缩放时以高分辨率显示图片的方式。我不知道如何去做,但这是我的猜测。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)