Файл obj загружен как объект Scene вместо объекта Trimesh

Я пытаюсь загрузить сетку из файла.obj (из набора данных ShapeNet) с помощью Trimesh, а затем использовать repair.fix_winding(mesh) функция.

Но когда я загружаю сетку, через

trimesh.load('/path/to/file.obj') или же trimesh.load_mesh('/path/to/file.obj'),

класс объекта возвращается Scene, который несовместим с repair.fix_winding(mesh), принимаются только объекты Trimesh.

Как я могу заставить его загрузить и вернуть объект Trimesh или разобрать объект Scene в объект Trimesh? Или каким-либо другим способом исправить намотку треугольников?

С помощью:

Python 3.6.5

Тримеш 3.0.14

MacOS 10.14.5

3 ответа

С текущей версией тримеша (3.9.42) вам нужно использовать trimesh.loadс force='mesh':

      trimesh.load('/path/to/file.obj', force='mesh')

https://trimsh.org/trimesh.html?highlight=load#trimesh.load

У меня точно такая же проблема. Вы можете получить доступ к "геометрии" члена сцены, но я понятия не имею, как исходная сетка делится на несколько. Следующий.

У load_mesh есть опция, которая будет передана как конструктор Trimesh, как объяснено в документации.

https://trimsh.org/trimesh.html?highlight=load_mesh

вот пример кода

mesh= t.load_mesh('./test.stl',process=False) mesh.is_watertight

вторая строка ".is_watertight" является атрибутом Trimesh, поэтому вы получите True, если он успешно импортирован как Trimesh.

Другие вопросы по тегам