Podrška formata

Aspose.3D FOSS za Python može čitati i pisati sedam 3D formata koristeći jedinstvenu internu reprezentaciju scene. Biblioteka prevodi svaki format u zajednički Scene objekt pri učitavanju i serijalizira taj objekt natrag u odredišni format pri spremanju. To znači da se scena učitana iz OBJ-a može izravno spremiti u glTF bez ikakvih međukoraka konverzije.


Podržani formati

FormatEkstenzijaČitanjePisanjeOptions classNapomene
Wavefront OBJ.objDaDaObjLoadOptions.mtl učitavanje materijala podržano
STL (binarno).stlDaDaStlSaveOptionsBinarno i ASCII čitanje; spremanje po zadanom je binarno
STL (ASCII).stlDaDaStlSaveOptionsProvjeren povratni put
glTF 2.0.gltfDaDaGltfSaveOptionsCijeli graf scena, materijali i animacije su sačuvani
GLB (binarni glTF).glbDaDaGltfSaveOptionsJednostruki binarni kontejner u jednoj datoteci
COLLADA.daeDaDaColladaLoadOptions / ColladaSaveOptionsHijerarhija scene i materijali
3MF.3mfDaDaThreeMfSaveOptionsFormat aditivne proizvodnje
FBX.fbxDjelomičnoNeN/ATokenizator radi; puni parser je u izradi (nije spremno za proizvodnju)

OBJ format

Wavefront OBJ je najšire podržani format za razmjenu statičkih mreža. Aspose.3D FOSS učitava geometriju (vrhove, normale, UV koordinate i poligonalna lica) i po želji prateći .mtl datoteku materijala.

ObjLoadOptions

SvojstvoTipZadanoOpis
enable_materialsboolTrueParsiraj .mtl datoteku na koju se referira OBJ zaglavlje
flip_coordinate_systemboolFalsePretvori iz Y‑gore desnorukog u Z‑gore desnorukog
normalize_normalboolTrueNormaliziraj sve uvezene površinske normale na jediničnu duljinu
scalefloat1.0Jedinstveni faktor skaliranja primijenjen na sve položaje vrhova

Učitavanje OBJ datoteke

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)}")

Spremanje u OBJ

scene.save("output.obj")

OBJ izvoz zapisuje položaje vrhova i poligonalna lica. Ako scena sadrži LambertMaterial ili PhongMaterial objekte, biblioteka zapisuje prateću .mtl datoteku automatski.


STL format

STL (STereoLithography) pohranjuje trokutne mreže kao neindeksirani popis faceta. Podržane su i binarne i ASCII varijante za čitanje; biblioteka po defaultu koristi binarni format pri spremanju.

StlSaveOptions

StlSaveOptions nema obavezna polja. Instancirajte ga kako biste ga proslijedili scene.save():

from aspose.threed.formats import StlSaveOptions

opts = StlSaveOptions()
scene.save("output.stl", opts)

Primjer kružnog toka

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 pohranjuje samo trokutnu geometriju, bez normala osim normalne facete, bez UV koordinata, bez materijala i bez hijerarhije. Ako vaša scena sadrži kvadrate ili višestruke poligone, oni se automatski trianguliraju pri spremanju.


glTF / GLB format

glTF 2.0 je preporučeni format za modernu 3D razmjenu. On očuva cijeli graf scene (hijerarhiju čvorova, imenovane čvorove, transformacije), materijale (LambertMaterial, PhongMaterial → PBR konverzija), i animacijske isječke. GLB je varijanta jednofajlovog binarnog kontejnera.

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

Podrška za materijale

Aspose.3D FOSS materijali su mapirani na glTF pbrMetallicRoughness prilikom izvoza:

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")

Provjera glTF izlaza

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 format

COLLADA (.dae) je XML‑bazirani format koji podržava hijerarhije scena, materijale, više UV kanala i skeletnu animaciju. Aspose.3D FOSS čita i zapisuje cijelo stablo čvorova i definicije materijala.

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 dobar izbor kada trebate ciklički prenijeti hijerarhije s imenovanim čvorovima i materijalima bez ikakvog gubitka podataka.


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.).


FBX format

Status: u tijeku (nije spremno za proizvodnju).

FBX (.fbx) podrška u Aspose.3D FOSS trenutno je u fazi tokenizatora. Binarni FBX tokenizator može parsirati strukturu datoteke, ali potpuni parser čvorova, mreža i materijala ima poznate greške i nije dovršen. Rezultati čitanja FBX‑a trebaju se smatrati eksperimentalnim.

Nemojte koristiti FBX u proizvodnim pipeline‑ima s ovom verzijom. Ako su vaši izvorni podaci u FBX formatu, najprije ih pretvorite u glTF ili OBJ koristeći Blender ili FBX Review prije učitavanja s Aspose.3D FOSS.

Pisanje u FBX nije podržano.


Automatsko otkrivanje formata

Scene.from_file() i scene.open() automatski otkriva format koristeći ekstenziju datoteke i, gdje je dostupno, magične bajtove u zaglavlju datoteke:

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")

Ako ekstenzija nedostaje ili je dvosmislena, biblioteka se vraća na provjeru zaglavlja (magični bajtovi). Nepodržane ili neprepoznate datoteke izazivaju IOError opisnu poruku.


Savjeti i najbolje prakse

  • Koristite glTF ili GLB za moderne cjevovode. glTF čuva cijeli graf scena, materijale i podatke o animaciji. To je najpotpuniji format za razmjenu s game engine-ima i web preglednicima.
  • Koristite OBJ za maksimalnu kompatibilnost. OBJ podržavaju praktički svi 3D alati. Ograničen je na statičke mreže, ali je izuzetno prenosiv.
  • Koristite 3MF za ispis. 3MF carries colour, orientation hints, and print settings that STL cannot express.
  • Izbjegavajte FBX dok ne bude spreman za proizvodnju. Provjerite bilješke o izdanju za verziju u kojoj je potpuna FBX obrada dovršena.
  • Uskladite ekstenziju spremanja s formatom. Nemojte proslijediti a .gltf ekstenziju kada želite binarni GLB; koristite .glb izričito. Ekstenzija određuje koji se serijalizator koristi.
  • Provjerite kompatibilnost poligona. STL i 3MF zahtijevaju trokute. Kvadrati i N-goni se automatski trianguliraju pri spremanju, ali će se broj vrhova povećati. Ako trebate kontrolirati triangulaciju, pozovite mesh.triangulate() prije spremanja.
 Hrvatski