Когда я показываю узел из файла COLLADA
, использование ЦП достигает 100% +.
Link to picВысокое использование ЦП SceneKit
Я не использую тренажер, я использую мой реального телефона. Модель состоит из примерно 80k вершин.
Вот как я загружаю модель:
// Add Character
func addModel(name:String)
{
// Load COLLADA Model
if let myScene = SCNScene(named: "Assets.scnassets/"+name+"/"+name+".dae")
{
// Recurse through all the child nodes in the model and add to modelNode
for node in myScene.rootNode.childNodes as [SCNNode]
{
modelNode.addChildNode(node)
}
// Add modelNode to scene
self.rootNode.addChildNode(modelNode)
}
else
{
print("Error loading model: "+name)
}
}
Модель 122MB и может быть найден здесь:
Link to zip
Я попытался с различными моделями, но CPU идет гайки на каждом из них. Все они около 122 МБ (что звучит много) и около 80 тыс. Вершин.
Обновление
Пытались снизить количество поли в SceneKit. В блендере i опускаются вершины от 20k до 5k (see here). Но когда я загружаю модель в SceneKit, количество полисов остается неизменным (68k). Я также попытался преобразовать модель и анимацию в .SCN. Это привело к тому, что намного более низкий размер файла, однако такой же поли счет и использование ЦП.
Pictures of showStatistics
Я думаю, что мне нужно сделать, это уменьшить количество полисов, не столько размер файла (не думайте, что это навредило бы).
Обновление 2 Теперь мне удалось снизить количество полисов до примерно 48 тыс. Все еще отстает. Если я удалю текстуру, процессор будет намного ниже.
Где вы имели в виду «Если по какой-то причине ваша модель DAE не имеет корневого узла, вы можете создать один здесь **»? У меня нет родительского узла для всех дочерних элементов dae-файла. – Fredrik
Я добавил к ответу выше. Если вы создали DAE самостоятельно, вы можете рассмотреть возможность пересмотра в своем программном обеспечении моделирования, как это предложено в последнем абзаце, и повторное сохранение файла. Я не уверен, как это работает в другом трехмерном программном обеспечении, но я так и делаю это в Cinema 4D. – bpedit
Но разве это не то, что я в основном делаю, добавляя все дети к родительскому (modelNode)? ** modelNode ** содержит только детей. – Fredrik