Ошибка на iOS14 при загрузке OBJ в MDLAsset

При загрузке OBJ в MDLAsset с помощью инициализатора MDLAsset(url:) (чтобы в конечном итоге получить модель в SceneKit) операция часто и непоследовательно завершается сбоем на iOS14. Эта операция отлично работает для тех же файлов в предыдущих версиях iOS. Я также наблюдал ошибку на iPadOS, хотя, может быть, и реже. Не уверен, что это актуально, но эти OBJ извлекаются с сервера и хранятся локально. Но эта ошибка возникает после того, как файлы уже загружены. Иногда один и тот же файл несколько раз дает сбой, прежде чем случайно заработает, и наоборот.

Вывод консоли, по-видимому, указывает на сбой связи со службой ModelIO XPC. Я попытался перезагрузить свое устройство, но ошибка продолжает возникать. Вывод консоли:

connection to com.apple.ModelIO.AssetLoader was interrupted
AssetLoader.loadURL errorHandler: Error Domain=NSCocoaErrorDomain Code=4097 "connection to service on pid 0 named com.apple.ModelIO.AssetLoader" UserInfo={NSDebugDescription=connection to service on pid 0 named com.apple.ModelIO.AssetLoader}
Couldn’t communicate with a helper application.
connection to com.apple.ModelIO.AssetLoader was interrupted

Кто-нибудь еще сталкивался с этой проблемой на iOS14? В качестве альтернативы, есть ли какие-либо обходные пути, которые кто-нибудь пробовал? Насколько мне известно, загрузка OBJ (загруженного с сервера) в SceneKit может быть выполнена только через ModelIO, без написания парсера OBJ самостоятельно.


person Michael    schedule 23.09.2020    source источник
comment
тоже занимаюсь этим вопросом :/   -  person Dave Lee    schedule 24.09.2020
comment
Видеть то же самое. Я использую URL-адрес пакета (не загружая по сети), поэтому я не думаю, что это имеет какое-либо отношение к вашему сетевому подключению.   -  person johnboiles    schedule 28.09.2020
comment
Кажется, это не работает лучше, если я использую основной поток или другие фоновые потоки с различными приоритетами. Мой текущий обходной путь состоит в том, чтобы: 1) свести к минимуму загрузку одного и того же ресурса путем кэширования в словаре [URL: SCNGeometry] при его загрузке и 2) повторить попытку до 5 раз, чтобы загрузить ресурс в случае сбоя.   -  person johnboiles    schedule 29.09.2020
comment
Да, я также тестировал локальные пакеты OBJ и STL в основных и базовых потоках, и они все еще терпят неудачу. По-видимому, только очень маленькие файлы (например, 100 вершин) работают стабильно. Когда вы постоянно выполняете принудительные повторные попытки, вы обычно видите успешную загрузку в течение 5 раз?   -  person Michael    schedule 30.09.2020
comment
Та же проблема, не работает на больших сетках.   -  person blueether    schedule 21.10.2020
comment
Чтобы продолжить здесь: я не вижу последовательные успешные загрузки в течение 5 попыток. Иногда модели не загружаются. Я отказался от использования MDLAsset для загрузки мешей.   -  person johnboiles    schedule 18.12.2020


Ответы (2)


Кажется, это исправлено в 14.3.

person Alexander Gaidukov    schedule 17.12.2020

2020-10-13 18:31:36.989282+0300 Studia3D Viewer[1452:348335] соединение с com.apple.ModelIO.AssetLoader было прервано

2020-10-13 18:31:36.989368+0300 Studia3D Viewer[1452:347676] AssetLoader.loadURL errorHandler: Error Domain=NSCocoaErrorDomain Code=4097 «подключение к сервису на pid 0 с именем com.apple.ModelIO.AssetLoader» UserInfo={ NSDebugDescription=подключение к сервису на pid 0 с именем com.apple.ModelIO.AssetLoader}

2020-10-13 18:31:36.989404+0300 Studia3D Viewer[1452:348332] соединение с com.apple.ModelIO.AssetLoader было прервано

13.10.2020 18:31:36.997352+0300 Studia3D Viewer[1452:347676] Не удалось установить связь с приложением-помощником.

То же самое происходит с локальными файлами

Пока нет решения

person Dengaev    schedule 13.10.2020