Podpora formátu
Aspose.3D FOSS pro Python může číst a psát sedm 3D formátů pomocí jediné reprezentace scény v paměti. Knihovna překládá každý format do běžného systému, který je k dispozici na všech platformách. Scene Objekt je načten a tento objekt se sériálně přenese zpět do cílového formátu při ukládání. To znamená, že scéna načtena z OBJ může být uložena přímo v glTF bez jakýchkoli mezičasových kroků konverze.
Podporované formáty
| Formát | Rozšíření | Čtěte. | Píšeš. | Klasifikace opcí | Poznámky |
|---|---|---|---|---|---|
| OBJ | .obj | Ano , ano . | Ano , ano . | ObjLoadOptions | Objekt pro ovládání vlnové fronty; .mtl podporované zatížení materiálu |
| STL | .stl | Ano , ano . | Ano , ano . | StlSaveOptions | Binární a ASCII čtení; uložení výchozího nastavení na binární |
| glTF | .gltf / .glb | Ano , ano . | Ano , ano . | GltfSaveOptions | binární kontejner JSON a GLB v rámci systému glTF 2.0 |
| COLLADA | .dae | Ano , ano . | Ano , ano . | ColladaLoadOptions / ColladaSaveOptions | Hierarchie scén a materiály |
| 3MF | .3mf | Ano , ano . | Ano , ano . | ThreeMfSaveOptions | Formát výrobního doplňku |
| FBX | .fbx | Částečná část | Ne, ne. | N/A | Tokenizer funguje; plné analýzy probíhají (není připraven k výrobě) |
Formát OBJ
Wavefront OBJ je nejvíce podporovaný formát výměny pro statické sítě. Aspose.3D FOSS načte geometrii (skřety, normály, UV souřadnice a polygonální tváře) a volitelně doprovodní .mtl materiální soubor.
ObjLoadOptions
| Vlastnictví | Typ: | Předvoleně | Popis: |
|---|---|---|---|
enable_materials | bool | True | Prozkoumejte to. .mtl soubor, na který odkazuje hlavička OBJ |
flip_coordinate_system | bool | False | Konverze z Y-up pravá ruka na Z-u pravou ruku |
normalize_normal | bool | True | Normalizace všech dovezených normálních povrchových hodnot na jednotku délky |
scale | float | 1.0 | Jednotný stupňový faktor použitý na všechny pozice vrcholu. |
Naložení souboru OBJ
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)}")Ušetření na OBJ
scene.save("output.obj")Obj export píše pozice vrcholu a polygonové tváře. Pokud scéna obsahuje LambertMaterial nebo: PhongMaterial Objekty, knihovna píše společníka .mtl automaticky.
Formát STL
STL (STereolithografia) ukládá trojúhelníkové sítě jako neindexovaný seznam aspektů. Obě binární a ASCII varianty jsou podporovány pro čtení; knihovna je v nastavení na binářské při uložení .
StlSaveOptions
StlSaveOptions nemá žádné povinné pole. Instantiate to pro přechod na scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Příklad z cesty zpět a zpět
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 ukládá pouze geometrii trojúhelníku, bez normálů za normální stránkou, žádné UV souřadnice, žádný materiál a žádná hierarchie. Pokud vaše scéna obsahuje čtyřkolky nebo vyšší řád polygony, jsou automaticky triangulace při uložení .
Formát GTF / GLB
glTF 2.0 je doporučený formát pro moderní 3D výměnu. Zachovává plný grafický scénář (hierarchie uzlů, jmenované uzly, transformy), materiály (LambertMaterial, PhongMaterial GLB je variantem binárního kontejneru s jedním souborem.
GltfSaveOptions
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
scene.save("output.gltf", opts) # JSON + external .bin
scene.save("output.glb", opts) # Self-contained binaryMateriální podpora
Materiály 3D FOSS jsou mapovány na glTF. pbrMetallicRoughness při vývozu:
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")Ověřování 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', []))}")COLLADA Formát
COLLADA (.dae) je XML-základní formát, který podporuje hierarchii scén, materiály, více UV kanálů a skeletální animaci. Aspose.3D FOSS čte a píše plný strom uzlů i definice materiálů.
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á volba, když potřebujete hierarchii s jmenovanými uzly a materiály bez jakýchkoli ztrát dat.
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: v provozu (není připraven k výrobě).
FBX (.fbxPodpora Aspose.3D FOSS je v současné době ve fázi tokenizace. Binární FBX tokenizer může analyzovat složku souboru, ale plný uzel, síť a materiálový parser má známé chyby a není kompletní. Výsledky čtení FBx by měly být považovány za experimentální.
FBX se tímto úniku nepoužívejte v výrobních potrubích. Pokud jsou vaše zdrojové údaje v FBX, přepněte je do GLTF nebo OBJ nejprve pomocí Blenderu nebo FBx Review před načtením Aspose.3D FOSS.
FBX psaní není podporováno.
Formát automatického detekce
Scene.from_file() a) scene.open() automaticky detekovat formát pomocí rozšíření souboru a, je-li k dispozici, magických bajtů v hlavišti souboru:
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")Pokud je rozšíření chybí nebo nejasné, knižnice se vrací k inspekci hlaviček (magické bajty). Nepodporované nebo nerozpoznané soubory vyvolají zcela novou funkci. IOError s popisným poselstvím.
Tipy a nejlepší postupy
- U moderních potrubí použijte glTF nebo GLB. glTF zachovává plný graf scény, materiály a animační data. Je to nejkompletnější formát pro výměnu s herními motory a webovými diváky.
- Použijte OBJ pro maximální kompatibilitu. OBJ je podporován prakticky všemi 3D nástroji. Je omezen na statické mší, ale je extrémně přenosný.
- Pro tisk použijte 3MF. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Vyhněte se FBX, dokud nebude připraven k výrobě. Zkontrolujte poznámky k vydání pro verzi, ve které je plné analýza FBX dokončena.
- Srovnávejte rozšíření uložení s formátem. Neprocházejte
.gltfrozšíření, když chcete binární GLB; používat.glbRozšíření určuje, který serialiser se použije. - Zkontrolujte kompatibilitu polygonů. STL a 3MF vyžadují trojúhelníky. Quads a N-gons jsou automaticky triangulace na uložení, ale počet vrchů se zvýší. Pokud potřebujete ovládat triangulaci, zavolejte
mesh.triangulate()než zachráníte.