Я думаю, что вы превысили некоторые внутренние ограничения iOS с вашим OBJ-файлом. Отправьте отчет по адресу https://bugreport.apple.com.
Эта слегка измененная версия вашего кода отлично работает на игровой площадке macOS (Xcode 8.0). Но на игровой площадке iOS я вижу то же самое «Не могу открыть OBJ-файл» в консоли.
import SceneKit
import ModelIO
import SceneKit.ModelIO
if let url = URL.init(string: "https://cloud.box.com/shared/static/ock9d81kakj91dz1x4ea.obj") {
let asset = MDLAsset(url: url)
print(asset)
let object = asset.object(at: 0)
print(object)
let node = SCNNode.init(mdlObject: object)
print(node)
}
Я смог загрузить и открыть OBJ-файл с помощью Xcode. Затем в редакторе сцены я преобразовал его в формат SCN. Это дало мне файл .SCN, который можно было встроить в проект iOS и открыть с помощью SCNScene (например, знаменитый вращающийся космический корабль). Поэтому, если вы можете жить с вложением статического файла в приложение iOS, это способ получить вашу модель. Но если вам нужны динамически загруженные модели, это не сработает.
Спасибо, ваш ответ действительно вдохновил меня. Я сам создал файл OBJ и достиг –
, но если я хочу избежать этой ошибки, должен ли я использовать OpenGL или что-то еще для импорта OBJ-файла? –
OpenGL ничего не знает о файлах OBJ. Металл тоже. Вы IMO щекочут ошибку или лимит в ModelIO на iOS. Переход на металл или OpenGL не поможет. Нужно ли загружать модель по сети? Если нет, проще всего сделать OBJ для преобразования SCN на вашем Mac и вставить файл SCN вместо использования OBJ. –