Вступ

Ми випускаємо 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 включені як легкі типи значень для геометричних обчислень.

Анімація

The 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.

Немає рівнів використання, обмежень токенів та телеметрії. Бібліотека виконує всю обробку локально.

Залежності: none. Пакет встановлюється як чистий Python wheel без C‑розширень і без сторонніх вимог під час виконання.


Початок роботи


Висновок

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