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átRozšířeníČtěte.Píšeš.Klasifikace opcíPoznámky
OBJ.objAno , ano .Ano , ano .ObjLoadOptionsObjekt pro ovládání vlnové fronty; .mtl podporované zatížení materiálu
STL.stlAno , ano .Ano , ano .StlSaveOptionsBinární a ASCII čtení; uložení výchozího nastavení na binární
glTF.gltf / .glbAno , ano .Ano , ano .GltfSaveOptionsbinární kontejner JSON a GLB v rámci systému glTF 2.0
COLLADA.daeAno , ano .Ano , ano .ColladaLoadOptions / ColladaSaveOptionsHierarchie scén a materiály
3MF.3mfAno , ano .Ano , ano .ThreeMfSaveOptionsFormát výrobního doplňku
FBX.fbxČástečná částNe, ne.N/ATokenizer 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_materialsboolTrueProzkoumejte to. .mtl soubor, na který odkazuje hlavička OBJ
flip_coordinate_systemboolFalseKonverze z Y-up pravá ruka na Z-u pravou ruku
normalize_normalboolTrueNormalizace všech dovezených normálních povrchových hodnot na jednotku délky
scalefloat1.0Jednotný 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 binary

Materiá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 3MF

3MF 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 .gltf rozšíření, když chcete binární GLB; používat .glb Rozšíř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.
 Čeština