Formátumtámogatás
Aspose.3D FOSS for Python képes olvasni és írni hét 3D formátumot egyetlen memóriában lévő jelenetábrázolás használatával. A könyvtár minden formátumot egy közös Scene objektummá betöltéskor, és sorosítja azt az objektumot vissza a célformátumba mentéskor. Ez azt jelenti, hogy egy OBJ-ből betöltött jelenet közvetlenül menthető glTF-be anélkül, hogy köztes konverziós lépésekre lenne szükség.
Támogatott formátumok
| Formátum | Kiterjesztés | Olvasás | Írás | Beállítások osztály | Megjegyzések |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Igen | Igen | ObjLoadOptions | .mtl anyagbetöltés támogatott |
| STL (bináris) | .stl | Igen | Igen | StlSaveOptions | Bináris és ASCII olvasás; mentés alapértelmezés szerint bináris |
| STL (ASCII) | .stl | Igen | Igen | StlSaveOptions | Körutazás ellenőrizve |
| glTF 2.0 | .gltf | Igen | Igen | GltfSaveOptions | Teljes jelenetgrafikon, anyagok és animációk megőrzve |
| GLB (binary glTF) | .glb | Igen | Igen | GltfSaveOptions | Egyfájlos bináris konténer |
| COLLADA | .dae | Igen | Igen | ColladaLoadOptions / ColladaSaveOptions | Jelenet hierarchia és anyagok |
| 3MF | .3mf | Igen | Igen | ThreeMfSaveOptions | Additív gyártási formátum |
| FBX | .fbx | Részleges | Nem | N/A | Tokenizáló működik; a teljes elemző fejlesztés alatt állnem kész a termeléshez) |
OBJ formátum
A Wavefront OBJ a legszélesebb körben támogatott csereformátum a statikus hálókhoz. Aspose.3D FOSS betölti a geometriát (csúcsok, normálok, UV koordináták és poligonális felületek), és opcionálisan a kísérő .mtl anyagfájl.
ObjLoadOptions
| Tulajdonság | Típus | Alapértelmezett | Leírás |
|---|---|---|---|
enable_materials | bool | True | Elemezze a .mtl a OBJ fejléc által hivatkozott fájlt |
flip_coordinate_system | bool | False | Átalakítás Y-felfelé jobbkezes koordinátarendszerről Z-felfelé jobbkezesre |
normalize_normal | bool | True | Az összes importált felületi normálvektort egység hosszúra normalizálja |
scale | float | 1.0 | Egységes méretezési tényező, amely minden csúcspont pozícióra alkalmazásra kerül |
OBJ fájl betöltése
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)}")OBJ-be mentés
scene.save("output.obj")Az OBJ exportálás a csúcspontok pozícióit és a sokszög felületeket írja ki. Ha a jelenet tartalmaz LambertMaterial vagy PhongMaterial objektumokat, a könyvtár automatikusan egy kísérő .mtl fájlt ír.
STL formátum
Az STL (STereoLithography) háromszög hálókat tárol egy index nélküli felületek listájaként. A beolvasáshoz mind a bináris, mind az ASCII változat támogatott; a könyvtár mentéskor alapértelmezés szerint a binárist használja.
StlSaveOptions
StlSaveOptions Nem tartalmaz kötelező mezőket. Hozd létre, hogy átadd a scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Körkörös példa
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")Az STL csak háromszög geometriát tárol, a felületnormálon kívül nincs más normál, nincsenek UV koordináták, anyagok vagy hierarchia. Ha a jelenet négyszögeket vagy magasabb rendű poligonokat tartalmaz, azok mentéskor automatikusan háromszögekké lesznek alakítva.
glTF / GLB formátum
glTF 2.0 a modern 3D csere ajánlott formátuma. Megőrzi a teljes jelenet gráfot (csomópont hierarchia, elnevezett csomópontok, transzformációk), anyagokat (LambertMaterial, PhongMaterial → PBR konverzió), és animációs klipeket. A GLB az egyfájlos bináris konténer változat.
GltfSaveOptions
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
scene.save("output.gltf", opts) # JSON + external .bin
scene.save("output.glb", opts) # Self-contained binaryAnyagtámogatás
Aspose.3D FOSS anyagok a glTF-re vannak leképezve pbrMetallicRoughness exportáláskor:
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")A glTF kimenet ellenőrzése
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 formátum
COLLADA (.dae) egy XML-alapú formátum, amely támogatja a jelenet hierarchiákat, anyagokat, több UV csatornát és csontvázanimációt. Aspose.3D FOSS olvassa és írja a teljes csomópontfát és anyagdefiníciókat.
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")A COLLADA jó választás, ha névvel ellátott csomópontok és anyagok hierarchiáit kell round‑trip módon kezelni adatvesztés nélkül.
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 formátum
Állapot: folyamatban (még nem kész a termeléshez).
FBX (.fbx) támogatás a Aspose.3D FOSS-ban jelenleg a tokenizáló szakaszban van. A bináris FBX tokenizáló képes feldolgozni a fájlstruktúrát, de a teljes csomópont, háló és anyag elemző ismert hibákkal rendelkezik, és nem teljes. Az FBX olvasási eredményeket kísérleti jellegűnek kell tekinteni.
Ne használja az FBX-et a gyártási folyamatokban ezzel a kiadással. Ha a forrásadatai FBX formátumban vannak, először konvertálja őket glTF vagy OBJ formátumba a Blender vagy az FBX Review segítségével, mielőtt betöltené őket a Aspose.3D FOSS-szal.
Az FBX írása nem támogatott.
Formátum automatikus felismerése
Scene.from_file() és scene.open() automatikusan felismeri a formátumot a fájlkiterjesztés és, ahol elérhető, a fájlfejlécben található varázsbájtok (magic bytes) alapján:
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")Ha a kiterjesztés hiányzik vagy nem egyértelmű, a könyvtár a fejléc ellenőrzésére (varázsbájtok) támaszkodik. Nem támogatott vagy ismeretlen fájlok egy IOError kivételt dob egy leíró üzenettel.
Tippek és bevált gyakorlatok
- Használjon glTF-et vagy GLB-t a modern adatcsatornákhoz. A glTF megőrzi a teljes jelenetgrafot, anyagokat és animációs adatokat. Ez a legteljesebb formátum a játékmotorokkal és webes megjelenítőkkel való adatcseréhez.
- Használjon OBJ-t a maximális kompatibilitás érdekében. Az OBJ-t gyakorlatilag minden 3D eszköz támogatja. Statikus hálókra korlátozódik, de rendkívül hordozható.
- Használja a 3MF-et nyomtatáshoz. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Kerülje az FBX-et, amíg nem kész a termelésre. Ellenőrizze a kiadási megjegyzéseket a verzióra vonatkozóan, amelyben a teljes FBX-elemzés befejeződött.
- A mentési kiterjesztést egyeztesse a formátummal. Ne adjon át egy
.gltfkiterjesztést, ha bináris GLB-t szeretne; használja a.glbexplicit módon. A kiterjesztés határozza meg, hogy melyik sorosítót használja. - Ellenőrizze a poligon kompatibilitását. Az STL és a 3MF háromszögeket igényel. A négyszögeket és N-gonokat a mentéskor automatikusan háromszögekké alakítja, de a csúcspontok száma növekedni fog. Ha a triangulation-t kell szabályoznia, hívja meg
mesh.triangulate()a mentés előtt.