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
| Format | Ekstenzija | Čitanje | Pisanje | Klasa Options | Beleške |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Da | Da | ObjLoadOptions | .mtl Učitavanje materijala je podržano |
| STL (binarni) | .stl | Da | Da | StlSaveOptions | Binarno i ASCII čitanje; podrazumevano čuvanje je binarno |
| STL (ASCII) | .stl | Da | Da | StlSaveOptions | Верификовано повратно путовање |
| glTF 2.0 | .gltf | Да | Да | GltfSaveOptions | Потпуни граф сцене, материјали и анимације су сачувани |
| GLB (binary glTF) | .glb | Da | Da | GltfSaveOptions | Binarni kontejner u jednoj datoteci |
| COLLADA | .dae | Da | Da | ColladaLoadOptions / ColladaSaveOptions | Hijerarhija scene i materijali |
| 3MF | .3mf | Da | Da | ThreeMfSaveOptions | Format aditivne proizvodnje |
| FBX | .fbx | Delimično | Ne | N/A | Tokenizator 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
| Svojstvo | Tip | Podrazumevano | Opis |
|---|---|---|---|
enable_materials | bool | True | Parsiraj .mtl datoteku na koju se odnosi OBJ zaglavlje |
flip_coordinate_system | bool | False | Pretvori iz Y‑gore desnorukog u Z‑gore desnoruki |
normalize_normal | bool | True | Normalizuj sve uvezene površinske normale na jedinicnu dužinu |
scale | float | 1.0 | Jedinstveni 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 binaryPodrš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 3MF3MF 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
.gltfekstenziju kada želite binarni GLB; koristite.glbeksplicitno. 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.