Įvadas

Mes išleidžiame Aspose.3D FOSS for Python, gryna-Python biblioteka skaitymui, rašymui ir konvertavimui įprastų 3D failų formatų. Biblioteka publikuojama PyPI kaip aspose-3d-foss, turi MIT licenciją ir neturi išorinių priklausomybių.

Jei kada nors reikėjo programiškai peržiūrėti arba konvertuoti 3D failus (išgauti tinklo viršūnių skaičių, perduoti OBJ geometriją į apdorojimo skriptą arba masiškai konvertuoti STL failus į glTF, kad juos būtų galima peržiūrėti internete), ši biblioteka sukurta būtent tam atvejui. Ji nereikalauja grafikos tvarkyklės, natūralios plėtinių modulio ar jokio debesų ryšio.


Kas įtraukta

Pagrindinis scenos grafas

Kiekvienas failas įkeliamas į Scene objektą, kuris atspindi originalaus failo mazgų hierarchiją. Mazgai talpina Transform (vertimą, sukimą, mastelį) ir vieną ar kelias prijungtas elementus, pvz. Mesh, Camera, arba Light. Scenos grafikas yra tas pats nepriklausomai nuo šaltinio formato, todėl kodas, parašytas eiti ir apdoroti geometriją, veikia visų palaikomų formatų be modifikacijų.

Geometrijos prieiga

Mesh objektai atskleidžia:

  • control_points:viršūnių pozicijų sąrašas kaip Vector4 (x, y, z, w)
  • polygons:veidų indekso sąrašų sąrašas (bet kokio daugiakampio aritetas, ne tik trikampiai)
  • get_element(VertexElementType):gauna pavadintus viršūnių duomenų sluoksnius normalėms, UV, viršūnių spalvoms ir glotninimo grupėms

Medžiagos

LambertMaterial ir PhongMaterial neša medžiagos savybes, perskaitytas iš OBJ .mtl failus (ambient, diffuse, specular, emissive, transparency, shininess). Medžiagos išlieka per įkėlimo–išsaugojimo ciklą formatuose, kurie jas palaiko.

Matematinės priemonės

Vector2, Vector3, Vector4, FVector3, Quaternion, Matrix4, ir BoundingBox yra įtraukti kaip lengvi reikšmių tipai geometrijos skaičiavimams.

Animacija

Ši AnimationClip, AnimationNode, KeyframeSequence, ir KeyFrame klasės suteikia prieigą prie raktų kadro animacijos duomenų iš formatų, kurie juos talpina, pvz., glTF ir COLLADA.


Greitas pradžia

pip install aspose-3d-foss

Įkelkite 3D failą ir atspausdinkite kiekvieno tinklo viršūnių skaičių:

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)

Konvertuokite tą patį failą į glTF:

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

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

Tai yra pilna programa. Nėra konfigūracijos failų, API raktų, tinklo kvietimų.


Palaikomi formatai

FormatasExtension(s)ĮkeltiIšsaugotiPastabos
Wavefront OBJ.objTaipTaip.mtl medžiagų įkėlimas palaikomas
STL.stlTaipTaipDvejetainis ir ASCII; koordinatės sistemos apsukimo parinktis
glTF 2.0.gltf, .glbTaipTaipGLB (savarankiškas dvejetainis) palaikomas
COLLADA.daeTaipTaipColladaSaveOptions prieinama su flip_coordinate_system, enable_materials, indented
3MF.3mfTaipTaipTinka 3D spausdinimo darbo srautams
FBX.fbxDalinisN/ATik žodžių skaidytuvas; pilnas analizatorius kuriamas

Formato aptikimas yra automatinis pagal failo plėtinį. Formatui specifinės įkėlimo ir išsaugojimo parinktys (ObjLoadOptions, StlSaveOptions, GltfSaveOptions, ThreeMfSaveOptions).


Atviro kodo ir nemokama

Biblioteka licencijuota pagal MIT licenciją. Galite ją naudoti komercinėse programose, modifikuoti ir platinti be jokių apribojimų. Šaltinis prieinamas GitHub po Aspose organizacijos.

Nėra naudojimo lygių, tokenų limitų ir telemetrijos. Biblioteka atlieka visą apdorojimą lokaliai.

Priklausomybės: none. Paketas įdiegiama kaip grynas Python wheel be C plėtinių ir be trečiųjų šalių vykdymo reikalavimų.


Pradžia


Išvada

Aspose.3D FOSS for Python 26.1.0 apima dažniausiai naudojamus 3D failų formatus, naudojamus įrankiuose, duomenų srautuose ir interneto programose (OBJ, STL, glTF, COLLADA ir 3MF) su nuosekliu Python API ir be diegimo trinties. Jei susiduriate su klaida, nepalaikoma kraštine situacija arba formatu, kurį reikia pridėti, prašome atidaryti problemą (issue) GitHub. Biblioteką aktyviai prižiūrime ir laukiame indėlių.