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
| Formatas | Plėtinys | Skaityti | Rašyti | Parinkčių klasė | Pastabos |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Taip | Taip | ObjLoadOptions | .mtl medžiagos įkėlimas palaikomas |
| STL (binary) | .stl | Taip | Taip | StlSaveOptions | Binarinis ir ASCII skaitymas; išsaugojimas pagal numatytuosius – binarinis |
| STL (ASCII) | .stl | Taip | Taip | StlSaveOptions | Grįžtamasis kelias patikrintas |
| glTF 2.0 | .gltf | Taip | Taip | GltfSaveOptions | Pilnas scenos grafas, medžiagos ir animacijos išsaugomi |
| GLB (binary glTF) | .glb | Taip | Taip | GltfSaveOptions | Vieno failo binarinis konteineris |
| COLLADA | .dae | Taip | Taip | ColladaLoadOptions / ColladaSaveOptions | Scenos hierarchija ir medžiagos |
| 3MF | .3mf | Taip | Taip | ThreeMfSaveOptions | Pridėtinės gamybos formatas |
| FBX | .fbx | Dalinis | Ne | N/A | Tokenizer 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ė | Tipas | Numatyta | Aprašymas |
|---|---|---|---|
enable_materials | bool | True | Išanalizuokite .mtl failas, į kurį nuoroda OBJ antraštė |
flip_coordinate_system | bool | False | Konvertuoti iš Y‑aukštyje dešiniosios rankos į Z‑aukštyje dešiniosios rankos |
normalize_normal | bool | True | Normalizuokite visus importuotus paviršiaus normalus iki vieneto ilgio |
scale | float | 1.0 | Vienodas 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 binaryMedž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 3MF3MF 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.
.gltfplėtinys, kai norite binarinio GLB; naudokite.glbaiš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.