SceneKit на OS X с тысячами объектов

Я следую этому уроку:http://blog.bignerdranch.com/754-scenekit-in-mountain-lion/

Я заинтересован в использовании Scene Kit, но мои сцены потенциально могут иметь тысячи сфер. Для стресс-теста Scene Kit я попробовал это:

SCNSphere *sphere = [SCNSphere sphereWithRadius:0.5];
for (int i=0; i<10; i++) {
    for(int j=0; j<10; j++){
        for(int k=0; k<10; k++){
            SCNNode *myNode = [SCNNode nodeWithGeometry:sphere];
            myNode.position = SCNVector3Make(i,j,k);
            [root addChildNode:myNode];
        }
    }
}

Это прекрасно работает, скажем, для 1000 сфер (10 ^ 3), но терпит неудачу (возможно, неудивительно) для 1 000 000 сфер (100 ^ 3). Я не против того, чтобы не использовать миллион сфер, но я бы хотел выяснить, что такое разумная верхняя граница (5000? 15 000?) И как ее увеличить.

Что я могу сделать, чтобы смягчить это? например Я попытался сферу

Кроме того, кажется, нет класса SCNPoint. Я думал о том, чтобы переключиться на отображение точки, когда число сфер слишком велико, но я не вижу в документации SceneKit, как отобразить простую точку - самый простой, который я вижу, - это треугольник.

Буду признателен за любую оказанную помощь.

Редактировать: @toyos предположил, что объекты SCNSphere объединяются в один объект SCNGeometry (при условии, что они не нуждаются в независимой анимации, а они этого не делают), но я не могу найти простой способ сделать это.

SCNGeometry создается с помощью[SCNGeometry geometryWithSources:(* NSArray)sources geometryWithElements:(* NSArray) elements] как задокументированоВот, но я не ясно, как создатьSCNGeometry объект из моих сфер.

например для одной сферы, я мог видеть, используяsphere.geometryElementCount чтобы получить количество элементов, а затем использовать его для заполнения массива с помощью[sphere geometryElementAtIndex:(NSInteger)elementIndex] что дало бы мне элементы, но я не уверен, как получить «источники» (или какие они вообще есть). Метод получения источников геометрии[sphere geometrySourcesForSemantic:(NSString*) semantic], но что это за семантическая строка? (подразумевается ли это как "нормали" или "вершины", или это что-то еще? документация весьма усложняет, что семантика - это "семантическая ценность источника геометрии.", не говоря, каковы возможные значения семантики)

Это только для одной сферы, которая была бы довольно бессмысленной (так какSCNSphere это просто подклассSCNGeometry во всяком случае), так что теперь я должен добавить несколько сфер. Так что мне придется вручную переводить вершины сферы при добавлении их в мойSCNGeometry объект?

Я просто пытаюсь найти самый разумный способ сделать это.

Ответы на вопрос(2)

Ваш ответ на вопрос