Formātu atbalsts
Aspose.3D FOSS priekš Python var nolasīt un rakstīt septiņus 3D formātus, izmantojot vienu atmiņā esošu ainas attēlojumu. Bibliotēka pārvērš katru formātu par kopīgu Scene objektu ielādēšanas laikā un serializē šo objektu atpakaļ uz mērķa formātu saglabāšanas laikā. Tas nozīmē, ka aina, kas ielādēta no OBJ, var tikt saglabāta tieši glTF formātā bez jebkādiem starpposma konvertēšanas soļiem.
Atbalstītie formāti
| Formāts | Paplašinājums | Lasīt | Rakstīt | Opciju klase | Piezīmes |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Jā | Jā | ObjLoadOptions | .mtl materiālu ielāde atbalstīta |
| STL (binārs) | .stl | Jā | Jā | StlSaveOptions | Binārais un ASCII lasīšana; saglabāšana pēc noklusējuma ir bināra |
| STL (ASCII) | .stl | Jā | Jā | StlSaveOptions | Apgrieztais ceļš pārbaudīts |
| glTF 2.0 | .gltf | Jā | Jā | GltfSaveOptions | Pilns ainas grafiks, materiāli un animācijas saglabātas |
| GLB (binary glTF) | .glb | Jā | Jā | GltfSaveOptions | Vienas faila binārais konteineris |
| COLLADA | .dae | Jā | Jā | ColladaLoadOptions / ColladaSaveOptions | Ainas hierarhija un materiāli |
| 3MF | .3mf | Jā | Jā | ThreeMfSaveOptions | Pievienotās ražošanas formāts |
| FBX | .fbx | Daļējs | Nē | N/A | Tokenizators darbojas; pilns parsētājs ir izstrādē (nav gatavs ražošanai) |
OBJ formāts
Wavefront OBJ ir visplašāk atbalstītais apmaiņas formāts statiskām režģēm. Aspose.3D FOSS ielādē ģeometriju (virsotnes, normāles, UV koordinātas un daudzstūru sejas) un, ja nepieciešams, pavadīto .mtl materiāla failu.
ObjLoadOptions
| Īpašība | Tips | Noklusējums | Apraksts |
|---|---|---|---|
enable_materials | bool | True | Parsēt .mtl fails, uz ko norāda OBJ galvene |
flip_coordinate_system | bool | False | Pārveidot no Y‑augšas labroķērtas uz Z‑augšas labroķērtu |
normalize_normal | bool | True | Normalizēt visus importētos virsmas normālus uz vienības garumu |
scale | float | 1.0 | Vienots mēroga koeficients, kas piemērots visām virsotņu pozīcijām |
OBJ faila ielāde
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)}")Saglabāšana OBJ
scene.save("output.obj")OBJ eksports ieraksta virsotņu pozīcijas un daudzstūru sejas. Ja skenā ir LambertMaterial vai PhongMaterial objektus, bibliotēka ieraksta pavadīšanas .mtl failu automātiski.
STL formāts
STL (STereoLithography) saglabā trīsstūra režģus kā neindeksētu sektoru sarakstu. Gan binārā, gan ASCII varianti tiek atbalstīti lasīšanai; bibliotēka saglabāšanas laikā pēc noklusējuma izmanto bināro formātu.
StlSaveOptions
StlSaveOptions nav obligātu lauku. Izveidojiet to, lai nodotu scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Pilna ceļa piemērs
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 saglabā tikai trīsstūra ģeometriju, bez normālām, izņemot sekta normāli, bez UV koordinātām, materiāliem un hierarhijas. Ja jūsu aina satur kvadrātus vai augstākas kārtas daudzstūrus, tie tiek automātiski trīsstūrveidoti saglabāšanas laikā.
glTF / GLB formāts
glTF 2.0 ir ieteicamais formāts mūsdienīgai 3D apmaiņai. Tas saglabā pilnu skenes grafu (mezglu hierarhija, nosauktie mezgli, transformācijas), materiālus (LambertMaterial, PhongMaterial → PBR konversija), un animācijas klipi. GLB ir vienfaila binārais konteineris variants.
GltfSaveOptions
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
scene.save("output.gltf", opts) # JSON + external .bin
scene.save("output.glb", opts) # Self-contained binaryMateriālu atbalsts
Aspose.3D FOSS materiāli tiek kartēti uz glTF pbrMetallicRoughness eksportējot:
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 izvades pārbaude
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 formāts
COLLADA (.dae) ir XML balstīts formāts, kas atbalsta ainas hierarhijas, materiālus, vairākus UV kanālus un skeleta animāciju. Aspose.3D FOSS lasa un raksta pilnu mezglu koku un materiālu definīcijas.
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 ir laba izvēle, ja jums ir jāveic hierarhiju apmaiņa ar nosauktiem mezgliem un materiāliem, nezaudējot datus.
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 formāts
Statuss: procesā (nav gatavs ražošanai).
FBX (.fbx) atbalsts Aspose.3D FOSS pašlaik ir tokenizatora posmā. Binārais FBX tokenizators spēj parsēt faila struktūru, bet pilns mezglu, režģa un materiālu parsētājs ir zināmu kļūdu dēļ nepilnīgs. FBX lasīšanas rezultātus vajadzētu uzskatīt par eksperimentāliem.
Nelietojiet FBX ražošanas cauruļvados ar šo izlaidumu. Ja jūsu avota dati ir FBX formātā, vispirms pārvērtiet tos uz glTF vai OBJ, izmantojot Blender vai FBX Review, pirms ielādēt ar Aspose.3D FOSS.
FBX rakstīšana nav atbalstīta.
Formāta automātiskā noteikšana
Scene.from_file() un scene.open() automātiski noteikt formātu, izmantojot faila paplašinājumu un, ja pieejami, maģiskos baitus faila galvenē:
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")Ja paplašinājums trūkst vai ir neskaidrs, bibliotēka pāriet uz galvenes pārbaudi (maģiskie baiti). Neatbalstīti vai neatpazīti faili izraisa IOError ar aprakstošu ziņojumu.
Padomi un labākā prakse
- Izmantojiet glTF vai GLB modernām cauruļvadiem. glTF saglabā pilnu ainas grafu, materiālus un animācijas datus. Tas ir vispilnīgākais formāts apmaiņai ar spēļu dzinējiem un tīmekļa skatītājiem.
- Izmantojiet OBJ maksimālai saderībai. OBJ tiek atbalstīts praktiski katrā 3D rīkā. Tas ir ierobežots līdz statiskām režģēm, bet ir ārkārtīgi pārnēsājams.
- Izmantojiet 3MF drukāšanai. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Izvairieties no FBX, līdz tas būs gatavs ražošanai. Pārbaudiet laidiena piezīmes versijai, kurā pilna FBX parsēšana ir pabeigta.
- Saskaņojiet saglabāšanas paplašinājumu ar formātu. Nesniedziet a
.gltfpaplašinājumu, kad vēlaties bināro GLB; izmantojiet.glbskaidri. Paplašinājums nosaka, kurš serializētājs tiek izmantots. - Pārbaudiet daudzstūru saderību. STL un 3MF pieprasa trīsstūrus. Kvadrāti un N-goni tiek automātiski trīsstūrveidoti saglabājot, bet virsotņu skaits pieaugs. Ja jums ir jākontrolē trīsstūrveidošana, izsauciet
mesh.triangulate()pirms saglabāšanas.