我是一名经验丰富的iOS开发者,但在SceneKit方面完全是新手,尝试在基本应用程序中模拟一些行星。
为此,我使用了火星、金星等高分辨率法线和漫反射贴图,应用于基本球体。它们起作用了!它们看起来很棒,完全符合我的预期。 问题是,我正在受到质量/内存权衡的困扰。
我可以缩小纹理的尺寸以减少内存占用,但是在低于一定分辨率时,结果(特别是法线贴图)开始变得非常模糊和可怕。应用程序需要能够缩放至少到行星屏幕宽度,但为了保持山脉和山谷的任何清晰度,我需要使用大约为6000 x 3000的PNG法线贴图(如上所示)。我可以将漫反射贴图缩小到大约1000 x 500,但即使这样,单个球体轻轻旋转,带有单个光源,没有背景,没有物理学和其他几何形状,仍然会出现周期性内存崩溃。
现在,我知道那是一个超高分辨率的法线贴图。我懂的。但同时,这只是一个球体,什么也没做。这甚至都不接近其他应用程序无缝执行的某些复杂性,即使具有一些相当详细的自己的纹理。似乎必须有某种方法可以获得单个对象的高详细度表面纹理,而不会使应用程序崩溃。
作为一个完全不懂SceneKit的新手,我想知道:在不占用所有内存的情况下获得良好的SceneKit纹理质量有什么技巧吗?也许有一种处理图像纹理的方法,重新编码文件,更改场景/节点设置等等?是否有任何方法可以使用较小的图像或相同图像的较低内存使用量来获得清晰的质量? 我很乐意引用一些代码,但现在没有太多可展示的。我按照标准方式将纹理应用于SceneKit节点,并且它有效。我只是因为缺乏内存或图像质量而感到痛苦。 有人能帮帮我吗?
为此,我使用了火星、金星等高分辨率法线和漫反射贴图,应用于基本球体。它们起作用了!它们看起来很棒,完全符合我的预期。 问题是,我正在受到质量/内存权衡的困扰。
我可以缩小纹理的尺寸以减少内存占用,但是在低于一定分辨率时,结果(特别是法线贴图)开始变得非常模糊和可怕。应用程序需要能够缩放至少到行星屏幕宽度,但为了保持山脉和山谷的任何清晰度,我需要使用大约为6000 x 3000的PNG法线贴图(如上所示)。我可以将漫反射贴图缩小到大约1000 x 500,但即使这样,单个球体轻轻旋转,带有单个光源,没有背景,没有物理学和其他几何形状,仍然会出现周期性内存崩溃。
现在,我知道那是一个超高分辨率的法线贴图。我懂的。但同时,这只是一个球体,什么也没做。这甚至都不接近其他应用程序无缝执行的某些复杂性,即使具有一些相当详细的自己的纹理。似乎必须有某种方法可以获得单个对象的高详细度表面纹理,而不会使应用程序崩溃。
作为一个完全不懂SceneKit的新手,我想知道:在不占用所有内存的情况下获得良好的SceneKit纹理质量有什么技巧吗?也许有一种处理图像纹理的方法,重新编码文件,更改场景/节点设置等等?是否有任何方法可以使用较小的图像或相同图像的较低内存使用量来获得清晰的质量? 我很乐意引用一些代码,但现在没有太多可展示的。我按照标准方式将纹理应用于SceneKit节点,并且它有效。我只是因为缺乏内存或图像质量而感到痛苦。 有人能帮帮我吗?