Podrška za formate

Aspose.3D FOSS za Python može da čita i piše sedam 3D formata koristeći jedinstvenu reprezentaciju scene u memoriji. Biblioteka prevodi svaki format u zajednički Scene objekat pri učitavanju i serijalizuje taj objekat nazad u ciljani format pri čuvanju. To znači da se scena učitana iz OBJ-a može direktno sačuvati u glTF bez ikakvih međukoraka konverzije.


Podržani formati

FormatEkstenzijaČitanjePisanjeKlasa OptionsBeleške
Wavefront OBJ.objDaDaObjLoadOptions.mtl Učitavanje materijala je podržano
STL (binarni).stlDaDaStlSaveOptionsBinarno i ASCII čitanje; podrazumevano čuvanje je binarno
STL (ASCII).stlDaDaStlSaveOptionsВерификовано повратно путовање
glTF 2.0.gltfДаДаGltfSaveOptionsПотпуни граф сцене, материјали и анимације су сачувани
GLB (binary glTF).glbDaDaGltfSaveOptionsBinarni kontejner u jednoj datoteci
COLLADA.daeDaDaColladaLoadOptions / ColladaSaveOptionsHijerarhija scene i materijali
3MF.3mfDaDaThreeMfSaveOptionsFormat aditivne proizvodnje
FBX.fbxDelimičnoNeN/ATokenizator radi; kompletan parser je u toku (nije spremno za proizvodnju)

OBJ format

Wavefront OBJ je najšire podržan format za razmenu statičkih mreža. Aspose.3D FOSS učitava geometriju (vrhove, normale, UV koordinate i poligonalna lica) i po želji prateći .mtl datoteku materijala.

ObjLoadOptions

SvojstvoTipPodrazumevanoOpis
enable_materialsboolTrueParsiraj .mtl datoteku na koju se odnosi OBJ zaglavlje
flip_coordinate_systemboolFalsePretvori iz Y‑gore desnorukog u Z‑gore desnoruki
normalize_normalboolTrueNormalizuj sve uvezene površinske normale na jedinicnu dužinu
scalefloat1.0Jedinstveni faktor skaliranja primenjen na sve položaje vrhova

Učitavanje OBJ datoteke

from aspose.threed import Scene
from aspose.threed.formats import ObjLoadOptions

options = ObjLoadOptions()
options.enable_materials = True
options.flip_coordinate_system = False
options.scale = 1.0

scene = Scene()
scene.open("model.obj", options)

print(f"Top-level nodes: {len(scene.root_node.child_nodes)}")

Čuvanje u OBJ

scene.save("output.obj")

OBJ izvoz zapisuje položaje vrhova i poligonalne površine. Ako scena sadrži LambertMaterial ili PhongMaterial objekte, biblioteka zapisuje prateći .mtl datoteka automatski.


STL format

STL (STereoLithography) čuva trouglaste mreže kao neindeksiranu listu faseta. Podržane su i binarne i ASCII varijante za čitanje; biblioteka podrazumevano koristi binarni format pri čuvanju.

StlSaveOptions

StlSaveOptions nema obaveznih polja. Instancirajte ga da biste ga prosledili scene.save():

from aspose.threed.formats import StlSaveOptions

opts = StlSaveOptions()
scene.save("output.stl", opts)

Primer round‑trip

from aspose.threed import Scene

##Load
scene = Scene.from_file("model.stl")

##Inspect
for node in scene.root_node.child_nodes:
    if node.entity:
        print(f"{node.name}: {len(node.entity.control_points)} vertices")

##Save
scene.save("roundtrip.stl")

STL čuva samo trouglastu geometriju, bez normala osim normale fasete, bez UV koordinata, bez materijala i bez hijerarhije. Ako vaša scena sadrži kvadrate ili višestruke poligone, oni se automatski triangulišu pri čuvanju.


glTF / GLB format

glTF 2.0 je preporučeni format za modernu 3D razmenu. On čuva kompletan graf scene (hijerarhija čvorova, imenovani čvorovi, transformacije), materijale (LambertMaterial, PhongMaterial → PBR konverzija), i animacioni klipovi. GLB je varijanta jednofajlovog binarnog kontejnera.

GltfSaveOptions

from aspose.threed.formats import GltfSaveOptions

opts = GltfSaveOptions()
scene.save("output.gltf", opts)   # JSON + external .bin
scene.save("output.glb",  opts)   # Self-contained binary

Podrška za materijale

Aspose.3D FOSS materijali su mapirani na glTF pbrMetallicRoughness prilikom izvoza:

from aspose.threed import Scene
from aspose.threed.shading import PhongMaterial
from aspose.threed.utilities import Vector3

scene = Scene()
node = scene.root_node.create_child_node("object")

mat = PhongMaterial()
mat.diffuse_color  = Vector3(0.8, 0.2, 0.2)   # red
mat.specular_color = Vector3(1.0, 1.0, 1.0)
mat.shininess = 50.0
node.material = mat

scene.save("colored.gltf")

Provera glTF izlaza

import json

with open("output.gltf") as f:
    data = json.load(f)

print(f"Asset version : {data['asset']['version']}")
print(f"Nodes         : {len(data.get('nodes', []))}")
print(f"Meshes        : {len(data.get('meshes', []))}")

COLLADA format

COLLADA (.dae) je XML‑bazirani format koji podržava hijerarhije scena, materijale, više UV kanala i skeletnu animaciju. Aspose.3D FOSS čita i piše kompletno stablo čvorova i definicije materijala.

from aspose.threed import Scene

##Load a COLLADA file
scene = Scene.from_file("model.dae")

##Inspect top-level nodes
for node in scene.root_node.child_nodes:
    print(f"  {node.name}")

##Save back to COLLADA
scene.save("output.dae")

COLLADA je dobar izbor kada vam je potrebno da izvoz‑uvoz hijerarhija sa imenovanim čvorovima i materijalima bez ikakvog gubitka podataka.


3MF Format

3MF (3D Manufacturing Format) targets additive manufacturing (3D printing) workflows. It stores triangle geometry, colour, and print-specific metadata in a ZIP-based container.

from aspose.threed import Scene
from aspose.threed.formats import ThreeMfSaveOptions

scene = Scene.from_file("part.stl")   # Load from STL
opts  = ThreeMfSaveOptions()
scene.save("part.3mf", opts)          # Write as 3MF

3MF is the recommended export format when targeting slicer software (Cura, PrusaSlicer, Bambu Studio, etc.).


FBX format

Status: u toku (nije spreman za produkciju).

FBX (.fbx) podrška u Aspose.3D FOSS je trenutno u fazi tokenizatora. Binarnog FBX tokenizatora može da parsira strukturu fajla, ali kompletni parser čvorova, mreža i materijala ima poznate greške i nije potpun. Rezultati čitanja FBX‑a treba da se tretiraju kao eksperimentalni.

Nemojte koristiti FBX u proizvodnim pipeline‑ima sa ovim izdanjem. Ako su vaši izvorni podaci u FBX formatu, prvo ih konvertujte u glTF ili OBJ koristeći Blender ili FBX Review pre učitavanja sa Aspose.3D FOSS.

Pisanje u FBX formatu nije podržano.


Automatsko otkrivanje formata

Scene.from_file() i scene.open() automatski otkriva format koristeći ekstenziju fajla i, gde je dostupno, magične bajtove u zaglavlju fajla:

from aspose.threed import Scene

##The library detects each format without being told explicitly
scene_obj  = Scene.from_file("model.obj")
scene_glb  = Scene.from_file("model.glb")
scene_stl  = Scene.from_file("model.stl")
scene_dae  = Scene.from_file("model.dae")
scene_3mf  = Scene.from_file("model.3mf")

Ako ekstenzija nedostaje ili je dvosmislena, biblioteka se vraća na inspekciju zaglavlja (magični bajtovi). Nepodržani ili neprepoznati fajlovi izazivaju IOError sa opisnom porukom.


Saveti i najbolje prakse

  • Koristite glTF ili GLB za moderne pipeline‑ove. glTF čuva kompletnu graf strukturu scene, materijale i podatke o animaciji. To je najkompletniji format za razmenu sa game engine-ovima i web preglednicima.
  • Koristite OBJ za maksimalnu kompatibilnost. OBJ podržavaju praktično svi 3D alati. Ograničen je na statičke mreže, ali je izuzetno prenosiv.
  • Koristite 3MF za 3D štampu. 3MF carries colour, orientation hints, and print settings that STL cannot express.
  • Izbegavajte FBX dok ne bude spreman za produkciju. Proverite beleške o izdanju za verziju u kojoj je kompletno parsiranje FBX-a završeno.
  • Uskladite ekstenziju pri čuvanju sa formatom. Ne prosleđujte a .gltf ekstenziju kada želite binarni GLB; koristite .glb eksplicitno. Ekstenzija određuje koji serijalizator se koristi.
  • Proverite kompatibilnost poligona. STL i 3MF zahtevaju trouglove. Kvadrati i N-goni se automatski triangulišu prilikom čuvanja, ali će se broj temena povećati. Ako treba da kontrolišete triangulaciju, pozovite mesh.triangulate() pre nego što sačuvate.
 Српски