Podrška formata
Aspose.3D FOSS za Python može čitati i pisati sedam 3D formata koristeći jedinstvenu internu reprezentaciju scene. Biblioteka prevodi svaki format u zajednički Scene objekt pri učitavanju i serijalizira taj objekt natrag u odredišni format pri spremanju. To znači da se scena učitana iz OBJ-a može izravno spremiti u glTF bez ikakvih međukoraka konverzije.
Podržani formati
| Format | Ekstenzija | Čitanje | Pisanje | Options class | Napomene |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Da | Da | ObjLoadOptions | .mtl učitavanje materijala podržano |
| STL (binarno) | .stl | Da | Da | StlSaveOptions | Binarno i ASCII čitanje; spremanje po zadanom je binarno |
| STL (ASCII) | .stl | Da | Da | StlSaveOptions | Provjeren povratni put |
| glTF 2.0 | .gltf | Da | Da | GltfSaveOptions | Cijeli graf scena, materijali i animacije su sačuvani |
| GLB (binarni glTF) | .glb | Da | Da | GltfSaveOptions | Jednostruki 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 | Djelomično | Ne | N/A | Tokenizator radi; puni parser je u izradi (nije spremno za proizvodnju) |
OBJ format
Wavefront OBJ je najšire podržani format za razmjenu 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 | Zadano | Opis |
|---|---|---|---|
enable_materials | bool | True | Parsiraj .mtl datoteku na koju se referira OBJ zaglavlje |
flip_coordinate_system | bool | False | Pretvori iz Y‑gore desnorukog u Z‑gore desnorukog |
normalize_normal | bool | True | Normaliziraj sve uvezene površinske normale na jediničnu duljinu |
scale | float | 1.0 | Jedinstveni faktor skaliranja primijenjen 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)}")Spremanje u OBJ
scene.save("output.obj")OBJ izvoz zapisuje položaje vrhova i poligonalna lica. Ako scena sadrži LambertMaterial ili PhongMaterial objekte, biblioteka zapisuje prateću .mtl datoteku automatski.
STL format
STL (STereoLithography) pohranjuje trokutne mreže kao neindeksirani popis faceta. Podržane su i binarne i ASCII varijante za čitanje; biblioteka po defaultu koristi binarni format pri spremanju.
StlSaveOptions
StlSaveOptions nema obavezna polja. Instancirajte ga kako biste ga proslijedili scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Primjer kružnog toka
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 pohranjuje samo trokutnu geometriju, bez normala osim normalne facete, bez UV koordinata, bez materijala i bez hijerarhije. Ako vaša scena sadrži kvadrate ili višestruke poligone, oni se automatski trianguliraju pri spremanju.
glTF / GLB format
glTF 2.0 je preporučeni format za modernu 3D razmjenu. On očuva cijeli graf scene (hijerarhiju čvorova, imenovane čvorove, transformacije), materijale (LambertMaterial, PhongMaterial → PBR konverzija), i animacijske isječke. 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")Provjera 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 zapisuje cijelo 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 trebate ciklički prenijeti hijerarhije s 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 tijeku (nije spremno za proizvodnju).
FBX (.fbx) podrška u Aspose.3D FOSS trenutno je u fazi tokenizatora. Binarni FBX tokenizator može parsirati strukturu datoteke, ali potpuni parser čvorova, mreža i materijala ima poznate greške i nije dovršen. Rezultati čitanja FBX‑a trebaju se smatrati eksperimentalnim.
Nemojte koristiti FBX u proizvodnim pipeline‑ima s ovom verzijom. Ako su vaši izvorni podaci u FBX formatu, najprije ih pretvorite u glTF ili OBJ koristeći Blender ili FBX Review prije učitavanja s Aspose.3D FOSS.
Pisanje u FBX nije podržano.
Automatsko otkrivanje formata
Scene.from_file() i scene.open() automatski otkriva format koristeći ekstenziju datoteke i, gdje je dostupno, magične bajtove u zaglavlju datoteke:
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 provjeru zaglavlja (magični bajtovi). Nepodržane ili neprepoznate datoteke izazivaju IOError opisnu poruku.
Savjeti i najbolje prakse
- Koristite glTF ili GLB za moderne cjevovode. glTF čuva cijeli graf scena, materijale i podatke o animaciji. To je najpotpuniji format za razmjenu s game engine-ima i web preglednicima.
- Koristite OBJ za maksimalnu kompatibilnost. OBJ podržavaju praktički svi 3D alati. Ograničen je na statičke mreže, ali je izuzetno prenosiv.
- Koristite 3MF za ispis. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Izbjegavajte FBX dok ne bude spreman za proizvodnju. Provjerite bilješke o izdanju za verziju u kojoj je potpuna FBX obrada dovršena.
- Uskladite ekstenziju spremanja s formatom. Nemojte proslijediti a
.gltfekstenziju kada želite binarni GLB; koristite.glbizričito. Ekstenzija određuje koji se serijalizator koristi. - Provjerite kompatibilnost poligona. STL i 3MF zahtijevaju trokute. Kvadrati i N-goni se automatski trianguliraju pri spremanju, ali će se broj vrhova povećati. Ako trebate kontrolirati triangulaciju, pozovite
mesh.triangulate()prije spremanja.