Formaattituki
Aspose.3D FOSS for Python voi lukea ja kirjoittaa seitsemän 3D-muotoa käyttäen yhtä muistissa olevaa kohtausrepresentaatiota. Kirjasto muuntaa jokaisen formaatin yhteiseksi Scene objektiksi latauksen yhteydessä ja sarjoittaa sen objektin takaisin kohdeformaattiin tallennuksen yhteydessä. Tämä tarkoittaa, että OBJ:sta ladattu kohtaus voidaan tallentaa suoraan glTF-muotoon ilman välivaiheita.
Tuetut formaatit
| Muoto | Tiedostopääte | Luku | Kirjoitus | Asetusluokka | Huomautuksia |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Kyllä | Kyllä | ObjLoadOptions | .mtl materiaalin lataus tuettu |
| STL (binary) | .stl | Kyllä | Kyllä | StlSaveOptions | Binäärinen ja ASCII-luku; tallennus oletuksena binäärinen |
| STL (ASCII) | .stl | Kyllä | Kyllä | StlSaveOptions | Kierrosmatka vahvistettu |
| glTF 2.0 | .gltf | Kyllä | Kyllä | GltfSaveOptions | Koko kohtausgrafiikka, materiaalit ja animaatiot säilytetään |
| GLB (binary glTF) | .glb | Kyllä | Kyllä | GltfSaveOptions | Yksittäinen binäärikontti |
| COLLADA | .dae | Kyllä | Kyllä | ColladaLoadOptions / ColladaSaveOptions | Skenaarion hierarkia ja materiaalit |
| 3MF | .3mf | Kyllä | Kyllä | ThreeMfSaveOptions | Additiivisen valmistuksen formaatti |
| FBX | .fbx | Osittainen | Ei | N/A | Tokenisoija toimii; täysi jäsentäjä on työn allaei tuotantokelpoinen) |
OBJ-formaatti
Wavefront OBJ on laajimmin tuettu vaihtomuoto staattisille verkkoille. Aspose.3D FOSS lataa geometrian (solmut, normaalit, UV-koordinaatit ja polygonipinnat) ja valinnaisesti siihen liittyvän .mtl materiaalitiedoston.
ObjLoadOptions
| Ominaisuus | Tyyppi | Oletus | Kuvaus |
|---|---|---|---|
enable_materials | bool | True | Jäsennä .mtl OBJ-otsakkeen viittaama tiedosto |
flip_coordinate_system | bool | False | Muunna Y-ylöspäin oikeakätisestä Z-ylöspäin oikeakätiseksi |
normalize_normal | bool | True | Normalisoi kaikki tuodut pintanormaalit yksikköpituuteen |
scale | float | 1.0 | Yhtenäinen skaalauskerroin, joka sovelletaan kaikkiin vertex-sijainteihin |
OBJ-tiedoston lataaminen
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)}")Tallennetaan OBJ:ksi
scene.save("output.obj")OBJ-vienti kirjoittaa kärkipisteet ja monikulmioiden kasvot. Jos kohtaus sisältää LambertMaterial tai PhongMaterial objekteja, kirjasto kirjoittaa kumppani .mtl tiedoston automaattisesti.
STL-muoto
STL (STereoLithography) tallentaa kolmioverkot indeksoimattomana listana faseteista. Sekä binaari- että ASCII-muodot ovat tuettuja luettavaksi; kirjasto käyttää oletuksena binaaria tallennettaessa.
StlSaveOptions
StlSaveOptions ei sisällä pakollisia kenttiä. Instansoi se välittääksesi scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Kierrosesimerkki
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 tallentaa vain kolmio-geometrian, eikä sisällä normaalivektoreita facetin normaalin lisäksi, UV-koordinaatteja, materiaaleja tai hierarkiaa. Jos kohtauksessasi on nelikulmioita tai korkeamman asteen polygonia, ne trianguloidaan automaattisesti tallennettaessa.
glTF / GLB -formaatti
glTF 2.0 on suositeltu formaatti nykyaikaiselle 3D-vaihdolle. Se säilyttää koko kohtausgraafin (soluhierarkian, nimetyt solmut, muunnokset), materiaalit (LambertMaterial, PhongMaterial → PBR-muunnos), ja animaatioleikkeet. GLB on yhden tiedoston binäärinen säiliövariantti.
GltfSaveOptions
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
scene.save("output.gltf", opts) # JSON + external .bin
scene.save("output.glb", opts) # Self-contained binaryMateriaalituki
Aspose.3D FOSS -materiaalit on kartoitettu glTF:iin pbrMetallicRoughness viedessä:
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-tulosteen tarkistaminen
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 -formaatti
COLLADA (.dae) on XML-pohjainen formaatti, joka tukee kohtaushierarkioita, materiaaleja, useita UV-kanavia ja luurankoanimaatiota. Aspose.3D FOSS lukee ja kirjoittaa koko solmutason puun ja materiaalimäärittelyt.
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 on hyvä valinta, kun tarvitset hierarkioiden pyöräytyksen nimetyillä solmuilla ja materiaaleilla ilman tietojen menetyksiä.
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-muoto
Tila: käynnissä (ei tuotantokelpoinen).
FBX (.fbx) tuki Aspose.3D FOSS:ssa on tällä hetkellä tokenisoijavaiheessa. Binäärinen FBX-tokenisoija pystyy jäsentämään tiedoston rakenteen, mutta täysi solmu-, verkko- ja materiaalijäsennin sisältää tunnettuja virheitä eikä ole valmis. FBX-lukutuloksia tulisi pitää kokeellisina.
Älä käytä FBX:ää tuotantoputkissa tämän julkaisun kanssa. Jos lähdetietosi ovat FBX-muodossa, muunna ne ensin glTF- tai OBJ-muotoon käyttäen Blenderiä tai FBX Review -ohjelmaa ennen lataamista Aspose.3D FOSS:lla.
FBX-tallennusta ei tueta.
Formaatin automaattinen tunnistus
Scene.from_file() ja scene.open() tunnistaa formaatin automaattisesti tiedostopäätteen ja, jos saatavilla, tiedoston otsakkeen taikabittien avulla:
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")Jos tiedostopääte puuttuu tai on epäselvä, kirjasto käyttää varalla otsakkeen tarkistusta (taikabittejä). Tukemattomat tai tunnistamattomat tiedostot aiheuttavat IOError kuvaavan viestin.
Vinkkejä ja parhaat käytännöt
- Käytä glTF- tai GLB-muotoa moderneissa putkistoissa. glTF säilyttää koko kohtausgraafin, materiaalit ja animaatiotiedot. Se on kaikkein täydellisin formaatti vaihdettavaksi pelimoottoreiden ja verkkokatselijoiden kanssa.
- Käytä OBJ-muotoa maksimaalisen yhteensopivuuden saavuttamiseksi. OBJ on tuettu käytännössä kaikissa 3D-työkaluissa. Se on rajoitettu staattisiin verkkoihin, mutta on erittäin siirrettävä.
- Käytä 3MF:tä tulostukseen. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Vältä FBX:ää, kunnes se on tuotantokelpoinen. Tarkista julkaisumuistiinpanot siitä versiosta, jossa täysi FBX-jäsennys on valmis.
- Varmista, että tallennustiedostopääte vastaa formaattia. Älä anna
.gltftiedostopäätettä, kun haluat binäärisen GLB:n; käytä.glberikseen. Tiedostopääte määrää, mitä sarjoittajaa käytetään. - Tarkista monikulmioiden yhteensopivuus. STL- ja 3MF-tiedostot vaativat kolmioita. Nelikulmiot ja N-gonit trianguloidaan automaattisesti tallennettaessa, mutta kärkipisteiden määrä kasvaa. Jos sinun täytyy hallita triangulaatiota, kutsu
mesh.triangulate()ennen tallentamista.