Uvod

Objavljujemo Aspose.3D FOSS za Python, čista-Python biblioteka za čitanje, pisanje i pretvaranje uobičajenih 3D formata datoteka. Biblioteka je objavljena na PyPI-u kao aspose-3d-foss, ima MIT licencu i nema vanjskih ovisnosti.

Ako ste ikada trebali programatski pregledavati ili pretvarati 3D datoteke (izvlačiti broj vrhova mreže, prosljeđivati OBJ geometriju u skriptu za obradu ili masovno pretvarati STL datoteke u glTF za web preglednik), ova biblioteka je izgrađena za takav slučaj upotrebe. Ne zahtijeva grafički driver, izvorni prošireni modul niti ikakvu vezu s oblakom.


Što je uključeno

Osnovni graf scene

Svaka datoteka učitava se u Scene objekt koji preslikava hijerarhiju čvorova izvorne datoteke. Čvorovi sadrže Transform (translation, rotation, scale) i jedan ili više pridruženih entiteta poput Mesh, Camera, ili Light. Graf scena je isti neovisno o izvornom formatu, pa kod napisan za prolazak i obradu geometrije radi na svim podržanim formatima bez izmjena.

Pristup geometriji

Mesh objekti izlažu:

  • control_points: popis položaja vrhova kao Vector4 (x, y, z, w)
  • polygons: popis listi indeksa lica (arbitrarna arnost poligona, ne samo trokuti)
  • get_element(VertexElementType): dohvaća imenovane slojeve podataka vrhova za normals, UVs, vertex colours i smoothing groups

Materijali

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

Matematički alati

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

Animacija

The AnimationClip, AnimationNode, KeyframeSequence, i KeyFrame klase pružaju pristup podacima o ključnim okvirima animacije iz formata koji ih sadrže, poput glTF i COLLADA.


Brzi početak

pip install aspose-3d-foss

Učitaj 3D datoteku i ispiši broj vrhova svake mreže:

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)

Pretvori istu datoteku 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 cijeli program. Nema konfiguracijskih datoteka, nema API ključeva, nema mrežnih poziva.


Podržani formati

FormatExtension(s)UčitajSpremiNapomene
Wavefront OBJ.objDaDa.mtl Učitavanje materijala podržano
STL.stlDaDaBinarni i ASCII; opcija preokretanja koordinatnog sustava
glTF 2.0.gltf, .glbDaDaGLB (samostalni binarni) podržan
COLLADA.daeDaDaColladaSaveOptions dostupan s flip_coordinate_system, enable_materials, indented
3MF.3mfDaDaPogodno za radne tokove 3D ispisa
FBX.fbxDjelomičnoN/ASamo tokenizator; potpuni parser u izradi

Detekcija formata je automatska na temelju ekstenzije datoteke. Opcije učitavanja i spremanja specifične za format (ObjLoadOptions, StlSaveOptions, GltfSaveOptions, ThreeMfSaveOptions) su dostupne za detaljnu kontrolu.


Otvoreni kod i besplatan

Biblioteka je licencirana pod MIT licencom. Možete je koristiti u komercijalnim aplikacijama, mijenjati je i redistribuirati bez ograničenja. Izvorni kod je dostupan na GitHubu pod organizacijom Aspose.

Nema razina korištenja, nema ograničenja tokena i nema telemetrije. Biblioteka sve obradu obavlja lokalno.

Ovisnosti: nijedna. Paket se instalira kao čist-Python wheel bez C ekstenzija i bez zahtjeva trećih strana za vrijeme izvođenja.


Početak rada


Zaključak

Aspose.3D FOSS za Python 26.1.0 pokriva najčešće 3D formate datoteka koji se koriste u alatima, cjevovodima i web aplikacijama (OBJ, STL, glTF, COLLADA i 3MF) s dosljednim Python API-jem i bez problema s instalacijom. Ako naiđete na grešku, nepodržani rubni slučaj ili format koji trebate dodati, otvorite problem na GitHubu. Aktivno održavamo biblioteku i dobrodošli su doprinosi.