Formato palaikymas

Aspose.3D FOSS for Python gali skaityti ir rašyti septynis 3D formatus naudojant vieną atmintyje esančią scenos reprezentaciją. Biblioteka kiekvieną formatą verčia į bendrą Scene objektą įkėlimo metu ir serializuoja tą objektą atgal į tikslinį formatą išsaugojant. Tai reiškia, kad scena, įkelta iš OBJ, gali būti išsaugota tiesiogiai į glTF be jokių tarpinių konversijos žingsnių.


Palaikomi formatai

FormatasPlėtinysSkaitytiRašytiParinkčių klasėPastabos
Wavefront OBJ.objTaipTaipObjLoadOptions.mtl medžiagos įkėlimas palaikomas
STL (binary).stlTaipTaipStlSaveOptionsBinarinis ir ASCII skaitymas; išsaugojimas pagal numatytuosius – binarinis
STL (ASCII).stlTaipTaipStlSaveOptionsGrįžtamasis kelias patikrintas
glTF 2.0.gltfTaipTaipGltfSaveOptionsPilnas scenos grafas, medžiagos ir animacijos išsaugomi
GLB (binary glTF).glbTaipTaipGltfSaveOptionsVieno failo binarinis konteineris
COLLADA.daeTaipTaipColladaLoadOptions / ColladaSaveOptionsScenos hierarchija ir medžiagos
3MF.3mfTaipTaipThreeMfSaveOptionsPridėtinės gamybos formatas
FBX.fbxDalinisNeN/ATokenizer veikia; pilnas parseris yra kuriamas (neparuošta gamybai)

OBJ formatas

Wavefront OBJ yra plačiausiai palaikomas keitimosi formatas statiniams tinklams. Aspose.3D FOSS įkelia geometriją (viršūnes, normalės, UV koordinatės ir poligono veidus) ir, jei reikia, papildomą .mtl medžiagos failas.

ObjLoadOptions

SavybėTipasNumatytaAprašymas
enable_materialsboolTrueIšanalizuokite .mtl failas, į kurį nuoroda OBJ antraštė
flip_coordinate_systemboolFalseKonvertuoti iš Y‑aukštyje dešiniosios rankos į Z‑aukštyje dešiniosios rankos
normalize_normalboolTrueNormalizuokite visus importuotus paviršiaus normalus iki vieneto ilgio
scalefloat1.0Vienodas mastelio koeficientas taikomas visoms viršūnių pozicijoms

OBJ failo įkėlimas

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

Išsaugoma į OBJ

scene.save("output.obj")

OBJ eksportas įrašo viršūnių pozicijas ir daugiakampių veidus. Jei scena turi LambertMaterial ar PhongMaterial objektus, biblioteka įrašo papildomą .mtl failą automatiškai.


STL formatas

STL (STereoLithography) saugo trikampių tinklus kaip nenužymėtą veidų sąrašą. Skaitant palaikomos tiek binarinės, tiek ASCII versijos; biblioteka įrašant numatytai naudoja binarinę.

StlSaveOptions

StlSaveOptions neturi privalomų laukų. Sukurkite jo egzempliorių, kad perduotumėte scene.save():

from aspose.threed.formats import StlSaveOptions

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

Apvalaus kelio pavyzdys

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 saugo tik trikampinę geometriją, be normalių, išskyrus veido normą, be UV koordinatų, be medžiagų ir be hierarchijos. Jei jūsų scenoje yra keturkampiai arba sudėtingesni daugiakampiai, jie įrašant automatiškai trianguliuojami.


glTF / GLB formatas

glTF 2.0 yra rekomenduojamas formatas šiuolaikiniam 3D keitimui. Jis išsaugo visą scenos grafiką (mazgų hierarchiją, pavadintus mazgus, transformacijas), medžiagas (LambertMaterial, PhongMaterial → PBR konvertavimas), ir animacijos klipai. GLB yra vieno failo dvejetainis konteinerio variantas.

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

Medžiagų palaikymas

Aspose.3D FOSS medžiagos susiejamos su glTF pbrMetallicRoughness eksportuojant:

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

glTF išvesties tikrinimas

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 formatas

COLLADA (.dae) yra XML pagrindu sukurtas formatas, palaikantis scenų hierarchijas, medžiagas, kelis UV kanalus ir skeletinę animaciją. Aspose.3D FOSS skaito ir rašo visą mazgo medį ir medžiagų apibrėžimus.

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 yra geras pasirinkimas, kai reikia atlikti round‑trip hierarchijas su pavadintais mazgais ir medžiagomis be jokio duomenų praradimo.


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 formatas

Būsena: vykdoma (dar neparuošta gamybai).

FBX (.fbx) palaikymas Aspose.3D FOSS šiuo metu yra tokenizatoriaus etape. Dvejetainis FBX tokenizatorius gali išanalizuoti failo struktūrą, tačiau pilnas mazgo, tinklelio ir medžiagų analizatorius turi žinomų klaidų ir nėra baigtas. FBX skaitymo rezultatai turėtų būti laikomi eksperimentiniais.

Nenaudokite FBX gamybos konvejeriuose su šiuo leidimu. Jei jūsų šaltinio duomenys yra FBX formatu, pirmiausia konvertuokite juos į glTF arba OBJ naudodami Blender arba FBX Review prieš įkeliant su Aspose.3D FOSS.

FBX rašymas nepalaikomas.


Formato automatinis aptikimas

Scene.from_file() ir scene.open() automatiškai aptikti formatą naudojant failo plėtinį ir, kai įmanoma, magiškus baitus failo antraštėje:

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

Jei plėtinys yra trūkstamas arba neaiškus, biblioteka grįžta prie antraštės patikrinimo (magiški baitai). Nepalaikomi arba neatpažinti failai sukelia IOError su aprašomu pranešimu.


Patarlės ir geriausios praktikos

  • Naudokite glTF arba GLB modernioms duomenų srautams. glTF išsaugo visą scenos grafiką, medžiagas ir animacijos duomenis. Tai yra pats išsamiausias formatas keitimui su žaidimų varikliais ir interneto peržiūros programomis.
  • Naudokite OBJ, kad pasiektumėte maksimalų suderinamumą. OBJ palaikomas praktiškai visų 3D įrankių. Jis ribotas iki statinių tinklų, tačiau yra itin nešiojamas.
  • Naudokite 3MF spausdinimui. 3MF carries colour, orientation hints, and print settings that STL cannot express.
  • Venkite FBX, kol jis nebus pasiruošęs gamybai. Patikrinkite išleidimo pastabas dėl versijos, kurioje pilnas FBX analizavimas baigtas.
  • Suderinkite išsaugojimo plėtinį su formatu. Nepadarykite perduoti a. .gltf plėtinys, kai norite binarinio GLB; naudokite .glb aiškiai. Plėtinys nustato, kuris serialiser yra naudojamas.
  • Patikrinkite daugiakampių suderinamumą. STL ir 3MF reikalauja trikampių. Keturkampiai ir N-gonai automatiškai trianguliuojami išsaugojant, tačiau viršūnių skaičius padidės. Jei reikia valdyti trianguliavimą, iškvieskite mesh.triangulate() prieš išsaugojant.
 Lietuvių