Podpora formátov
Aspose.3D FOSS pre Python dokáže čítať a zapisovať sedem 3D formátov pomocou jednej pamäťovej reprezentácie scény. Knižnica prekladá každý formát do spoločného Scene objektu pri načítaní a serializuje tento objekt späť do cieľového formátu pri ukladaní. To znamená, že scéna načítaná z OBJ môže byť uložená priamo do glTF bez akýchkoľvek medziskúsených konverzných krokov.
Podporované formáty
| Formát | Rozšírenie | Čítať | Zapisovať | Trieda Options | Poznámky |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Áno | Áno | ObjLoadOptions | .mtl načítanie materiálu podporované |
| STL (binárny) | .stl | Áno | Áno | StlSaveOptions | Binárne a ASCII čítanie; ukladanie predvolene do binárneho |
| STL (ASCII) | .stl | Áno | Áno | StlSaveOptions | Cesta tam a späť overená |
| glTF 2.0 | .gltf | Áno | Áno | GltfSaveOptions | Úplný graf scény, materiály a animácie zachované |
| GLB (binary glTF) | .glb | Áno | Áno | GltfSaveOptions | Jednofajlový binárny kontajner |
| COLLADA | .dae | Áno | Áno | ColladaLoadOptions / ColladaSaveOptions | Hierarchia scény a materiály |
| 3MF | .3mf | Áno | Áno | ThreeMfSaveOptions | Formát aditívnej výroby |
| FBX | .fbx | Čiastočný | Nie | N/A | Tokenizer funguje; úplný parser je vo vývoji (nie je pripravený na produkciu) |
Formát OBJ
Wavefront OBJ je najrozšírenejší podporovaný výmenný formát pre statické siete. Aspose.3D FOSS načítava geometriu (vrcholy, normály, UV súradnice a polygonálne plochy) a voliteľne aj sprievodný .mtl súbor materiálu.
ObjLoadOptions
| Vlastnosť | Typ | Predvolené | Popis |
|---|---|---|---|
enable_materials | bool | True | Analyzovať .mtl súbor odkazovaný hlavičkou OBJ |
flip_coordinate_system | bool | False | Previesť z Y-up pravotočivého na Z-up pravotočivý |
normalize_normal | bool | True | Normalizovať všetky importované normály povrchu na jednotkovú dĺžku |
scale | float | 1.0 | Jednotný škálovací faktor aplikovaný na všetky pozície vrcholov |
Načítanie OBJ súboru
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)}")Ukladanie do OBJ
scene.save("output.obj")Export OBJ zapisuje pozície vrcholov a polygonálne tváre. Ak scéna obsahuje LambertMaterial alebo PhongMaterial objekty, knižnica zapíše doprovodný .mtl súbor automaticky.
Formát STL
STL (STereoLithography) ukladá trojuholníkové siete ako neindexovaný zoznam fasiet. Pre čítanie sú podporované binárne aj ASCII varianty; pri ukladaní knižnica predvolene používa binárny formát.
StlSaveOptions
StlSaveOptions nemá povinné polia. Vytvorte ho, aby ste ho odovzdali do scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Príklad 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 ukladá iba trojuholníkovú geometriu, bez normál okrem normály fasety, bez UV súradníc, bez materiálov a bez hierarchie. Ak vaša scéna obsahuje štvoruholníky alebo polygóny vyššieho rádu, pri ukladaní sa automaticky triangulujú.
Formát glTF / GLB
glTF 2.0 je odporúčaný formát pre modernú výmenu 3D. Zachováva kompletný graf scény (hierarchiu uzlov, pomenované uzly, transformácie), materiály (LambertMaterial, PhongMaterial → konverzia na PBR), a animačné klipy. GLB je jednosúborová binárna kontajnerová varianta.
GltfSaveOptions
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
scene.save("output.gltf", opts) # JSON + external .bin
scene.save("output.glb", opts) # Self-contained binaryPodpora materiálov
Aspose.3D FOSS materiály sú mapované na glTF pbrMetallicRoughness pri exporte:
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")Overovanie výstupu glTF
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', []))}")Formát COLLADA
COLLADA (.dae) je formát založený na XML, ktorý podporuje hierarchie scén, materiály, viacero UV kanálov a skeletálnu animáciu. Aspose.3D FOSS číta a zapisuje celý strom uzlov a definície materiálov.
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 dobrá voľba, keď potrebujete obojsmerne prenášať hierarchie s pomenovanými uzlami a materiálmi bez akýchkoľvek strát dát.
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.).
Formát FBX
Stav: prebieha (nie je pripravený na produkciu).
FBX (.fbx) podpora v Aspose.3D FOSS je momentálne v štádiu tokenizéra. Binárny FBX tokenizér dokáže analyzovať štruktúru súboru, ale kompletný parser uzlov, meshov a materiálov má známe chyby a nie je dokončený. Výsledky čítania FBX by sa mali považovať za experimentálne.
Nepožívajte FBX v produkčných pipeline-och s touto verziou. Ak sú vaše zdrojové dáta vo formáte FBX, najprv ich konvertujte na glTF alebo OBJ pomocou Blenderu alebo FBX Review pred načítaním s Aspose.3D FOSS.
Zápis FBX nie je podporovaný.
Automatické rozpoznávanie formátu
Scene.from_file() a scene.open() detekuje formát automaticky pomocou prípony súboru a, ak je k dispozícii, magických bajtov v hlavičke súboru:
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")Ak chýba prípona alebo je nejednoznačná, knižnica sa vráti k kontrole hlavičky (magické bajty). Nepodporované alebo neznáme súbory vyvolajú IOError s opisnou správou.
Tipy a osvedčené postupy
- Použite glTF alebo GLB pre moderné pipeline-y. glTF zachováva kompletný graf scény, materiály a animačné dáta. Je to najúplnejší formát pre výmenu s hernými enginami a webovými prehliadačmi.
- Použite OBJ pre maximálnu kompatibilitu. OBJ je podporovaný takmer každým 3D nástrojom. Je obmedzený na statické siete, ale je mimoriadne prenosný.
- Použite 3MF na tlač. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Vyhnite sa FBX, kým nebude pripravený na produkčné použitie. Skontrolujte poznámky k vydaniu pre verziu, v ktorej je úplné parsovanie FBX dokončené.
- Zodpovedajte príponu ukladania formátu. Neodovzdávajte
.gltfpríponu, keď chcete binárny GLB; použite.glbexplicitne. Prípona určuje, ktorý serializér sa použije. - Skontrolujte kompatibilitu polygonov. STL a 3MF vyžadujú trojuholníky. Štvoruholníky a N-góny sa pri ukladaní automaticky triangulujú, ale počet vrcholov sa zvýši. Ak potrebujete kontrolovať trianguláciu, call
mesh.triangulate()pred uložením.