2016-12-02 3 views
1

Я работаю над проектом какао/iOS. У меня есть обычный быстрый класс, который управляет сценой Scenekit.Big SCNGeometry SceneKit for iOS

Я хочу нарисовать большую местность (около 5000x5000 точек). У меня есть 2 треугольника на 4 очка. Я создал объект scngeometry для всей местности (хорошо ли это?)

Я решил сохранить эти точки в структуре с 6 поплавками (x, y, z и r, g, b). Я попытался создать пустой массив или выделить большой массив в начале: у меня такая же проблема. Я работаю с типом данных Int для массива индексов. Проект отлично работает на Cocoa, но я получаю ошибки памяти в iOS. Я думаю, это связано с необходимостью иметь большой и смежный массив для вершины.

Я попытался создать несколько кусков объектов геометрии, но набор сцен не нравится, если мы удалим предыдущий буфер.

Какова наилучшая практика в этом случае?

Есть ли способ хранения вершин на массовом хранилище вместо массивов/буферов памяти?

Благодаря

+0

Показать код. –

ответ

1

Так ... в два раза больше точек местности, как есть пиксели на новенькой дисплее 5K? Это огромный объем памяти, который будет использоваться сразу на iOS. И вы не сможете увидеть это разрешение на устройстве iOS.

Так как насчет:

  • Разделите 25 миллионов пикселей местности на более мелкие плитки, каждый в своем собственном SCNNode. Прокрутите плитки, создайте один SCNNode, выбросьте массив 6-Float для этой плитки и перейдите к следующему.
  • Используйте SCNLevelOfDetail для создания гораздо более простых версий этих узлов, для отображения, когда они находятся очень далеко.
  • Выполняйте строительные работы на OS X. Архивируйте свою сцену (NSSecureCoding). Свяжите эту сцену с приложением iOS.
  • Рассмотрите возможность использования опорных узлов в основной SCNScene и заархивируйте каждый фрагмент как отдельный файл SCNScene.
  • Надеюсь, вы уже используете треугольные полосы, а не треугольники, чтобы построить свою геометрию.
+0

Спасибо, на самом деле, я не хочу высокой сцены, я хочу, чтобы переместить камеру в этой местности, и мир большой – Bob5421

+0

На самом деле я не знаю, когда я могу освободить или повторно использовать буферы. Когда узел добавляется в сцену? Мои индексы всегда одинаковы, это треугольная полоса: есть ли способ работать без массивов индексов с объектами scngeometry, спасибо – Bob5421

+0

Это будет не просто показать мой код, потому что у меня есть несколько классов. Я попробовал то, что вы сказали, но у меня все еще есть ошибка памяти – Bob5421

Смежные вопросы