Введение

Мы выпускаем Aspose.3D FOSS для Python, чистая-Python библиотека для чтения, записи и конвертации общих 3D форматов файлов. Библиотека опубликована в PyPI как aspose-3d-foss, имеет лицензию MIT и не имеет внешних зависимостей.

Если вам когда‑нибудь нужно было программно исследовать или конвертировать 3D‑файлы (извлекать количество вершин меша, передавать геометрию OBJ в скрипт обработки или пакетно конвертировать STL в glTF для веб‑просмотрщика), эта библиотека создана именно для таких задач. Она не требует графического драйвера, нативного расширения или какого‑либо облачного соединения.


Что включено

Основной граф сцены

Каждый файл загружается в Scene объект, который отражает иерархию узлов оригинального файла. Узлы содержат Transform (перемещение, вращение, масштаб) и одну или несколько присоединённых сущностей, таких как Mesh, Camera, или Light. Граф сцены одинаков независимо от исходного формата, поэтому код, написанный для обхода и обработки геометрии, работает со всеми поддерживаемыми форматами без модификаций.

Доступ к геометрии

Mesh объекты предоставляют:

  • control_points: список позиций вершин в виде Vector4 (x, y, z, w)
  • polygons: список списков индексов граней (произвольная арность полигонов, не только треугольники)
  • get_element(VertexElementType): получает именованные слои данных вершин для нормалей, UV, цветов вершин и групп сглаживания

Материалы

LambertMaterial и PhongMaterial содержат свойства материалов, считанные из OBJ .mtl файлы (ambient, diffuse, specular, emissive, transparency, shininess). Материалы сохраняются при цикле загрузки‑сохранения для форматов, которые их поддерживают.

Математические утилиты

Vector2, Vector3, Vector4, FVector3, Quaternion, Matrix4, и BoundingBox включены как лёгкие типы значений для геометрических вычислений.

Анимация

Эта AnimationClip, AnimationNode, KeyframeSequence, и KeyFrame классы предоставляют доступ к данным анимации по ключевым кадрам из форматов, которые их содержат, таких как glTF и COLLADA.


Быстрый старт

pip install aspose-3d-foss

Загрузите 3D‑файл и выведите количество вершин в каждой сетке:

from aspose.threed import Scene
from aspose.threed.entities import Mesh

scene = Scene.from_file("model.obj")

def visit(node):
    for entity in node.entities:
        if isinstance(entity, Mesh):
            print(f"{node.name}: {len(entity.control_points)} vertices, "
                  f"{len(entity.polygons)} polygons")
    for child in node.child_nodes:
        visit(child)

visit(scene.root_node)

Конвертируйте тот же файл в glTF:

from aspose.threed import Scene
from aspose.threed.formats import GltfSaveOptions

scene = Scene.from_file("model.obj")
scene.save("model.gltf", GltfSaveOptions())

Это полная программа. Нет файлов конфигурации, нет API‑ключей, нет сетевых вызовов.


Поддерживаемые форматы

ФорматExtension(s)ЗагрузкаСохранитьЗаметки
Wavefront OBJ.objДаДа.mtl загрузка материалов поддерживается
STL.stlДаДаБинарный и ASCII; опция инверсии системы координат
glTF 2.0.gltf, .glbДаДаПоддерживается GLB (самодостатичный бинарный)
COLLADA.daeДаДаColladaSaveOptions доступно с flip_coordinate_system, enable_materials, indented
3MF.3mfДаДаПодходит для рабочих процессов 3D‑печати
FBX.fbxЧастичныйN/AТолько токенизатор; полный парсер в разработке

Определение формата происходит автоматически по расширению файла. Параметры загрузки и сохранения, специфичные для формата (ObjLoadOptions, StlSaveOptions, GltfSaveOptions, ThreeMfSaveOptions) доступны для тонкой настройки.


Открытый исходный код и бесплатно

Библиотека лицензирована по MIT. Вы можете использовать её в коммерческих приложениях, модифицировать и распространять без ограничений. Исходный код доступен на GitHub в организации Aspose.

Нет уровней использования, ограничений по токенам и телеметрии. Библиотека выполняет всю обработку локально.

Зависимости: нет. Пакет устанавливается как чистый Python wheel без C‑расширений и без сторонних требований к среде выполнения.


Начало работы


Заключение

Aspose.3D FOSS for Python 26.1.0 охватывает наиболее распространённые 3D‑форматы файлов, используемые в инструментах, конвейерах и веб‑приложениях (OBJ, STL, glTF, COLLADA и 3MF) с единообразным Python API и без проблем с установкой. Если вы столкнётесь с ошибкой, неподдерживаемым граничным случаем или форматом, который необходимо добавить, пожалуйста, откройте issue на GitHub. Мы активно поддерживаем библиотеку и приветствуем вклады.