Indledning

Vi frigiver 3D FOSS til Python, et rent Python-bibliotek til læsning, skrivning og konvertering af almindelige 3D filformater. Biblioteket er udgivet på PyPI som aspose-3d-foss, har en MIT-licens og ingen eksterne afhængigheder.

Hvis du nogensinde har haft brug for at inspicere eller konvertere 3D-filer programmatisk (udtrække mesh vertex tæller, pipe OBJ geometri til et bearbejdningsskripts, eller batch-konvertere STL filer til glTF for en web-viewer), er dette bibliotek bygget til den brugssituation. Det kræver ikke en grafikdriver, en nativ udvidelsesmodul, og ingen cloudforbindelse.


Hvad der indgår i den

Grafik af kernen

Hver fil er indlæst i en Scene objekt, der afspejler den oprindelige fils knudehierarki. Knuder bærer Transform (oversættelse, rotation, skala) og en eller flere tilknyttede enheder såsom: Mesh, Camera,eller Light.Scenegrafen er den samme uanset kildeformat, så kode skrevet til at gå og behandle geometri fungerer på tværs af alle understøttede formater uden ændring.

Geometriindgang

Mesh genstande udsætter:

  • control_points: liste over toppositioner som: Vector4 (x, y, z, w)
  • polygons: liste over ansigtsindekslister (vælgerlig polygonart, ikke kun trekant)
  • get_element(VertexElementType): henter navngivne topdatalag for normale, UV-værdier, toppfarver og glattende grupper

Materialer

LambertMaterial og: PhongMaterial bære de materialeegenskaber, der læses fra OBJ .mtl Materiale kan overleve belastningen, men kun tilbage til de formater, der understøtter dem.

Matematiske værktøjer

Vector2, Vector3, Vector4, FVector3, Quaternion, Matrix4, og BoundingBox er inkluderet som lette værdiformer til geometrisk beregning.

Animation

Den Europæiske Union AnimationClip, AnimationNode, KeyframeSequence, og KeyFrame klasser giver adgang til keyframe-animationsdata fra formater, der bærer den, såsom glTF og COLLADA.


Hurtig start

pip install aspose-3d-foss

Indtast en 3D-fil og printer højdepunkterne for hvert mesh:

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)

Konvertere samme fil til glTF:

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

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

Ingen konfigurationsfiler, ingen API-nøgler.


Støttede formater

Format:Extension(s)LastIndsætNoter til dette direktiv:
OBJ.obj- Ja, jeg gør.- Ja, jeg gør..mtl understøttet materialebelastning
STL.stl- Ja, jeg gør.- Ja, jeg gør.Binær og ASCII; koordinatsystem-flip mulighed
GFT-værdi.gltf, .glb- Ja, jeg gør.- Ja, jeg gør..glb (selvstændig binær) understøttet
COLLADA.dae- Ja, jeg gør.- Ja, jeg gør.ColladaSaveOptions Tilgængelig med: flip_coordinate_system, enable_materials, indented
3MF.3mf- Ja, jeg gør.- Ja, jeg gør.Tilpasset til 3D-printing arbejdsprocesser
FBX.fbxDelvistN/AKun tokenizer; fuld analyse i gang

Formatdetektering sker automatisk fra filudvidelsen.ObjLoadOptions, StlSaveOptions, GltfSaveOptions, ThreeMfSaveOptions) kan anvendes til finkornkontrol.


Open Source og gratis

Biblioteket er MIT-licenseret. Du kan bruge det i kommercielle applikationer, ændre det og distribuere det uden begrænsning. Kilden er tilgængelig på GitHub under organisationen Aspose .

Biblioteket udfører al behandling lokalt.

Afhængighed:Pakken installeres som et rent Python-hjul uden C-udvidelser og ingen krav til tredjepartens køretid.


Hvordan man begynder


Konklusion:

3D FOSS for Python 26.1.0 dækker de mest almindelige 3d-filformater, der anvendes i værktøj, pipelines og webapplikationer (OBJ, STL, glTF, COLLADA og 3MF) med et konsekvent Python API og ingen installasjonsfriction. Hvis du støder på en fejl, et uunderstøttet kanttilfælde eller et format, du skal tilføje, så åbn et problem på GitHub. Vi vedligeholder aktivt biblioteket og byder velkommen til bidrag.