Sokongan Format
Aspose.3D FOSS untuk Python dapat membaca dan menulis tujuh format 3D menggunakan satu representasi adegan dalam memori. Pustaka ini menukar setiap format ke dalam objek umum Scene pada pemuatan dan menserialkan objek itu kembali ke format sasaran semasa disimpan. Ini bermakna adegan yang dimuatkan dari OBJ boleh disimpan terus ke glTF tanpa sebarang langkah penukaran antara.
Format yang Disokong
| Format | Sambungan | Baca | Tulis | Kelas Pilihan | Catatan |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Ya | Ya | ObjLoadOptions | .mtl pemuat bahan disokong |
| STL (binari) | .stl | Ya | Ya | StlSaveOptions | Baca binari dan ASCII; simpan secara lalai ke binari |
| STL (ASCII) | .stl | Ya | Ya | StlSaveOptions | Pengesahan perjalanan pusingan |
| glTF 2.0 | .gltf | Ya | Ya | GltfSaveOptions | Graf adegan penuh, bahan, dan animasi dipelihara |
| GLB (binary glTF) | .glb | Ya | Ya | GltfSaveOptions | Kontena binari satu fail |
| COLLADA | .dae | Ya | Ya | ColladaLoadOptions / ColladaSaveOptions | Hierarki adegan dan bahan |
| 3MF | .3mf | Ya | Ya | ThreeMfSaveOptions | Format pembuatan tambahan |
| FBX | .fbx | Sebahagian | Tidak | N/A | Tokenizer berfungsi; parser penuh sedang dalam prosestidak sedia untuk pengeluaran) |
Format OBJ
Wavefront OBJ ialah format pertukaran yang paling banyak disokong untuk mesh statik. Aspose.3D FOSS memuatkan geometri (titik puncak, normal, koordinat UV, dan muka poligon) dan secara pilihan fail rakan .mtl fail bahan.
ObjLoadOptions
| Sifat | Jenis | Lalai | Keterangan |
|---|---|---|---|
enable_materials | bool | True | Huraikan .mtl fail yang dirujuk oleh pengepala OBJ |
flip_coordinate_system | bool | False | Tukar dari Y-up kanan-tangan ke Z-up kanan-tangan |
normalize_normal | bool | True | Normalisasikan semua normal permukaan yang diimport kepada panjang unit |
scale | float | 1.0 | Faktor skala seragam yang diterapkan pada semua kedudukan vertex |
Memuatkan fail OBJ
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)}")Menyimpan ke OBJ
scene.save("output.obj")Eksport OBJ menulis kedudukan vertex dan muka poligon. Jika adegan mengandungi LambertMaterial atau PhongMaterial objek, perpustakaan menulis fail pendamping .mtl secara automatik.
Format STL
STL (STereoLithography) menyimpan jala segitiga sebagai senarai faset yang tidak berindeks. Kedua-dua varian binari dan ASCII disokong untuk pembacaan; perpustakaan secara lalai menggunakan binari semasa menyimpan.
StlSaveOptions
StlSaveOptions tidak mempunyai medan wajib. Cipta contoh untuk menghantarnya kepada scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)Contoh pusingan balik
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 hanya menyimpan geometri segitiga, tanpa normal selain normal faset, tanpa koordinat UV, tanpa bahan, dan tanpa hierarki. Jika adegan anda mengandungi kuad atau poligon berorder lebih tinggi, ia akan ditriangulasi secara automatik semasa menyimpan.
Format glTF / GLB
glTF 2.0 ialah format yang disyorkan untuk pertukaran 3D moden. Ia mengekalkan graf adegan penuh (hierarki nod, nod bernama, transformasi), bahan (LambertMaterial, PhongMaterial → penukaran PBR), dan klip animasi. GLB ialah varian kontena binari satu fail.
GltfSaveOptions
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
scene.save("output.gltf", opts) # JSON + external .bin
scene.save("output.glb", opts) # Self-contained binarySokongan Bahan
Aspose.3D bahan FOSS dipetakan ke glTF pbrMetallicRoughness semasa eksport:
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")Mengesahkan output glTF
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', []))}")Format COLLADA
COLLADA (.dae) ialah format berasaskan XML yang menyokong hierarki adegan, bahan, pelbagai saluran UV, dan animasi rangka. Aspose.3D FOSS membaca dan menulis keseluruhan pokok nod serta definisi bahan.
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 adalah pilihan yang baik apabila anda perlu melakukan round-trip hierarki dengan nod bernama dan bahan tanpa kehilangan data.
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.).
Format FBX
Status: dalam proses (belum sedia untuk produksi).
FBX (.fbx) sokongan dalam Aspose.3D FOSS kini berada pada peringkat tokenizer. Tokenizer FBX binari dapat menghurai struktur fail, tetapi penghurai nod, mesh, dan bahan penuh mempunyai pepijat yang diketahui dan belum lengkap. Keputusan bacaan FBX harus dianggap sebagai eksperimental.
Jangan gunakan FBX dalam aliran kerja produksi dengan keluaran ini. Jika data sumber anda berada dalam format FBX, tukar ia kepada glTF atau OBJ terlebih dahulu menggunakan Blender atau FBX Review sebelum dimuatkan dengan Aspose.3D FOSS.
Penulisan FBX tidak disokong.
Pengesanan Automatik Format
Scene.from_file() dan scene.open() mengesan format secara automatik menggunakan sambungan fail dan, jika ada, magic bytes dalam pengepala fail:
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")Jika sambungan tiada atau tidak jelas, perpustakaan kembali kepada pemeriksaan pengepala (magic bytes). Fail yang tidak disokong atau tidak dikenali akan menimbulkan satu IOError dengan mesej penerangan.
Petua dan Amalan Terbaik
- Gunakan glTF atau GLB untuk paip moden. glTF mengekalkan graf adegan penuh, bahan, dan data animasi. Ia adalah format paling lengkap untuk pertukaran dengan enjin permainan dan penonton web.
- Gunakan OBJ untuk keserasian maksimum. OBJ disokong oleh hampir semua alat 3D. Ia terhad kepada mesh statik tetapi sangat mudah alih.
- Gunakan 3MF untuk pencetakan. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- Elakkan FBX sehingga ia sedia untuk pengeluaran. Semak nota pelepasan untuk versi di mana penguraian FBX penuh telah selesai.
- Padankan sambungan simpanan dengan format. Jangan hantarkan a
.gltfsambungan apabila anda mahu GLB binari; gunakan.glbsecara eksplisit. Sambungan menentukan penseri mana yang digunakan. - Semak keserasian polygon. STL dan 3MF memerlukan segitiga. Kuad dan N-gon ditriangulasi secara automatik semasa menyimpan, tetapi bilangan vertex akan meningkat. Jika anda perlu mengawal triangulasi, panggil
mesh.triangulate()sebelum menyimpan.