Uvod

Objavljujemo Aspose.3D FOSS za Python, čista-Python biblioteka za čitanje, pisanje i konvertovanje uobičajenih 3D formata fajlova. Biblioteka je objavljena na PyPI kao aspose-3d-foss, nosi MIT licencu i nema spoljašnjih zavisnosti.

Ako ste ikada morali da pregledate ili konvertujete 3D fajlove programatski (izvucite broj vrhova mreže, prosledite OBJ geometriju u skriptu za obradu, ili grupno konvertujete STL fajlove u glTF za web preglednik), ova biblioteka je napravljena za takav slučaj upotrebe. Ne zahteva grafički drajver, nativni ekstenzijski modul niti bilo kakvu cloud vezu.


Šta je uključeno

Osnovni graf scene

Svaki fajl se učitava u Scene objekat koji preslikava hijerarhiju čvorova originalnog fajla. Čvorovi nose Transform (prevod, rotacija, skala) i jednu ili više prikačenih entiteta kao što su Mesh, Camera, ili Light. Graf scena je isti bez obzira na izvorni format, pa kod napisan za prolazak i obradu geometrije radi na svim podržanim formatima bez izmene.

Pristup geometriji

Mesh objekti izlažu:

  • control_points: lista položaja vrhova kao Vector4 (x, y, z, w)
  • polygons: lista listi indeksa lica (arbitrarna arnost poligona, ne samo trouglova)
  • get_element(VertexElementType): dohvaća imenovane slojeve podataka vrhova za normale, UV‑ove, boje vrhova i grupe zaglađivanja

Materijali

LambertMaterial i PhongMaterial nose svojstva materijala pročitana iz OBJ .mtl datoteke (ambient, diffuse, specular, emissive, transparency, shininess). Materijali preživljavaju ciklus učitavanja–čuvanja za formate koji ih podržavaju.

Matematički alati

Vector2, Vector3, Vector4, FVector3, Quaternion, Matrix4, i BoundingBox su uključeni kao lagani tipovi vrednosti za geometrijske proračune.

Animacija

The AnimationClip, AnimationNode, KeyframeSequence, i KeyFrame Klase pružaju pristup podacima o animaciji ključnih frejmova iz formata koji ih sadrže, kao što su glTF i COLLADA.


Brzi početak

pip install aspose-3d-foss

Učitajte 3D fajl i ispišite broj vrhova svakog mesh-a:

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)

Konvertujte isti fajl u glTF:

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

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

To je kompletan program. Nema konfiguracionih fajlova, nema API ključeva, nema mrežnih poziva.


Podržani formati

FormatExtension(s)UčitajSačuvajBeleške
Wavefront OBJ.objDaDa.mtl učitavanje materijala podržano
STL.stlDaDaBinarni i ASCII; opcija za preokret koordinatnog sistema
glTF 2.0.gltf, .glbDaDaGLB (samostalni binarni) podržan
COLLADA.daeDaDaColladaSaveOptions dostupan uz flip_coordinate_system, enable_materials, indented
3MF.3mfDaDaPogodno za radne tokove 3D štampe
FBX.fbxDelimičnoN/ASamo tokenizator; kompletan parser u razvoju

Detekcija formata je automatska na osnovu ekstenzije fajla. Opcije učitavanja i čuvanja specifične za format (ObjLoadOptions, StlSaveOptions, GltfSaveOptions, ThreeMfSaveOptions) su dostupne za finu kontrolu.


Open source i besplatan

Biblioteka je licencirana pod MIT licencom. Možete je koristiti u komercijalnim aplikacijama, menjati je i redistribuirati bez ograničenja. Izvor je dostupan na GitHub-u pod organizacijom Aspose.

Nema nivoa korišćenja, nema ograničenja tokena i nema telemetrije. Biblioteka obavlja svu obradu lokalno.

Zavisnosti: none. Paket se instalira kao čist-Python wheel bez C ekstenzija i bez zahteva za treće strane u vreme izvršavanja.


Početak


Zaključak

Aspose.3D FOSS za Python 26.1.0 pokriva najčešće 3D formate fajlova koji se koriste u alatima, pipeline-ovima i web aplikacijama (OBJ, STL, glTF, COLLADA i 3MF) uz dosledan Python API i bez problema pri instalaciji. Ako naiđete na grešku, nepodržani slučaj ili format koji treba da se doda, molimo otvorite problem na GitHub. Aktivno održavamo biblioteku i rado prihvatamo doprinose.