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átRozšírenieČítaťZapisovaťTrieda OptionsPoznámky
Wavefront OBJ.objÁnoÁnoObjLoadOptions.mtl načítanie materiálu podporované
STL (binárny).stlÁnoÁnoStlSaveOptionsBinárne a ASCII čítanie; ukladanie predvolene do binárneho
STL (ASCII).stlÁnoÁnoStlSaveOptionsCesta tam a späť overená
glTF 2.0.gltfÁnoÁnoGltfSaveOptionsÚplný graf scény, materiály a animácie zachované
GLB (binary glTF).glbÁnoÁnoGltfSaveOptionsJednofajlový binárny kontajner
COLLADA.daeÁnoÁnoColladaLoadOptions / ColladaSaveOptionsHierarchia scény a materiály
3MF.3mfÁnoÁnoThreeMfSaveOptionsFormát aditívnej výroby
FBX.fbxČiastočnýNieN/ATokenizer 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ťTypPredvolenéPopis
enable_materialsboolTrueAnalyzovať .mtl súbor odkazovaný hlavičkou OBJ
flip_coordinate_systemboolFalsePreviesť z Y-up pravotočivého na Z-up pravotočivý
normalize_normalboolTrueNormalizovať všetky importované normály povrchu na jednotkovú dĺžku
scalefloat1.0Jednotný š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 binary

Podpora 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 3MF

3MF 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 .gltf príponu, keď chcete binárny GLB; použite .glb explicitne. 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.
 Slovenčina