适用于iOS的大型SCNGeometry SceneKit

时间:2016-12-02 18:08:46

标签: scenekit

我正在研究cocoa / iOS projet。 我有一个常见的swift类来管理Scenekit场景。

我想绘制一个大的地形(大约5000x5000点)。 我每4个点有2个三角形。我为整个地形创建了一个scngeometry对象(这是一件好事吗?)

我决定将这些点存储在6-Float结构中(x,y,z和r,g,b)。我尝试创建一个空数组或在开始时分配一个大数组:我遇到了同样的问题。 我使用Int数据类型的索引数组。 该项目在Cocoa上工作正常但我在iOS上遇到了内存错误。我认为这是因为需要为顶点设置一个大且连续的数组。

我试图创建几个几何对象块,但是如果我们擦除先前的缓冲区,则场景工具包不喜欢。

在这种情况下,最佳做法是什么?

有没有办法在大容量存储器上存储顶点而不是存储器阵列/缓冲区?

由于

1 个答案:

答案 0 :(得分:1)

那么......地形点的数量是闪亮的新5K显示器上的像素的两倍?这是iOS上一次使用的大量内存。而且你无法在iOS设备上看到该分辨率。

那怎么样:

  • 将您的2500万像素地形分成更小的图块,每个图块都在自己的SCNNode中。循环遍历切片,创建一个SCNNode,丢弃该切片的6-Float数组并移动到下一个。
  • 使用SCNLevelOfDetail生成这些节点的更简单版本,以便在它们离得很远时显示。
  • 在OS X上进行构建工作。存档场景(NSSecureCoding)。将该场景捆绑到iOS应用程序中。
  • 考虑在主SCNScene中使用参考节点,并将每个磁贴存档为单独的SCNScene文件。
  • 希望您已经使用三角形条而不是三角形来构建几何体。