У меня есть скрипт, который пакетно обрабатывает fbx для меня, и у меня возникают проблемы, когда определенные сетки не импортируются при вызове bpy.ops.import_scene.fbx() (27 из 73). Скрипт внезапно рухнет без вывода какой-либо ошибки.
Я использую блендер, созданный как модуль Python в моем скрипте.
Вот небольшой воспроизводимый фрагмент кода, который падает на том же фрагменте.
import bpy
mesh_path = "my/path/here"
print("import started")
bpy.ops.import_scene.fbx(filepath=mesh_path)
print("import finished")
Запуск, который приводит к:
WARN (bgl): C:\blender-git\blender\source\blender\python\generic\bgl.c:2656 BPyInit_bgl: 'bgl' imported without an OpenGL backend. Please update your add-ons to use the 'gpu' module. In Blender 4.0 'bgl' will be removed.
importing started
FBX version: 7300
Затем процесс завершается без ошибок или вывода после этого.
Я пробовал запускать блендер как обычную программу и импортировать ту же часть, и это тоже сработало, пути между рабочими и сломанными частями также кажутся идентичными. Я не уверен, какие еще могут быть различия, кроме самих мешей, но каждый меш, с которым я работаю, является гигантским подразделением гигантского меша, поэтому настройки между ними должны быть идентичными.
Любая помощь или идеи будут очень признательны, спасибо.
Обновлять: Я смог обнаружить, что мой встроенный модуль bpy на самом деле использует новейшую альфа-версию блендера 3.6.0. Но тестирование в редакторе, которое я проводил, было в 3.5.0, поэтому я создал версию редактора 3.6.0 и столкнулся с той же проблемой, что и выше, но теперь в редакторе, так что это должно быть ошибка в этой новейшей сборке.
Я настроил эту сборку на использование 3.5.0, и импорт работает! Но у меня странная ошибка, из-за которой все полигоны сетки, которые я импортирую, возвращаются в виде списка из 0.
Я не уверен, следует ли мне продолжать поиск исправления здесь или мне следует создать новый вопрос.
Обновление 2: Я смог импортировать сетку в редакторе в моей ручной сборке 3.5.0, но она импортировалась только как вершины. Я просмотрел журнал сборки и нашел пару предупреждений, одно касалось импортера сетки. Поэтому я попробовал другую сборку, выполняющую «сделать импорт» и «сделать». В итоге это сработало, и сетка импортировалась правильно, я сделал то же самое для ветки bpy, и это тоже сработало.
Могу я также спросить, вы используете AMD или macOS (используя архитектуру M1/M2)?
@AnonyMous Нет, кажется, я видел всплывающую ошибку, но решил, что она нужна только в том случае, если я пытаюсь отобразить окно просмотра. Я постараюсь обновить это, когда я выйду на работу в понедельник. Также я не совсем уверен насчет ПК, так как это рабочая машина. Я могу вернуться к вам по этому поводу.
Ага, попробуй. Это может решить вашу проблему. Если вы работаете на Mac (M1/2) или используете графические процессоры AMD, ранее сообщалось об ошибке, связанной с ошибкой, связанной с OpenGL.
@AnonyMous У меня графический процессор Nvidia, но у меня процессор AMD. Я запускаю новое обновление make и пробую новую сборку с нуля, чтобы посмотреть, исправит ли это что-то.
@AnonyMous Сборка только что завершена, и она все еще падает прямо при импорте сетки. Я также все еще получаю вывод «WARN (bgl)», когда вызывается «import bpy».
'bgl', импортированный без бэкенда OpenGL, можно ли это изменить? Также старайтесь избегать графического процессора AMD, ранее сообщалось о некоторых связанных ошибках. Возможно, bgl не может получить доступ к API блендера.
похоже, что эта ошибка появляется только потому, что bpy автоматически импортирует bgl где-то в своих зависимостях, поэтому на самом деле это не проблема. Просто предупреждение, не относящееся к делу. @AnonyMous Я смог откатиться до 3.5.0 и обновить свои сборки, и теперь все работает нормально. Вот я и ответил на свой вопрос, спасибо за помощь!
Мне пришлось вернуться к версии 3.5 вместо альфа-версии 3.6.0 в моей ручной сборке bpy. И не забудьте сделать «обновление», чтобы получить последние версии этой сборки. Затем я смог добиться успеха, и все снова заработало.
Вы пробовали обновить модуль
bpy
? Похоже, чтоbgl
устарел и заменен более новым модулемgpu
. Может быть, обратитесь сюда github.com/IfcOpenShell/IfcOpenShell/issues/2897?