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

FormatSambunganBacaTulisKelas PilihanCatatan
Wavefront OBJ.objYaYaObjLoadOptions.mtl pemuat bahan disokong
STL (binari).stlYaYaStlSaveOptionsBaca binari dan ASCII; simpan secara lalai ke binari
STL (ASCII).stlYaYaStlSaveOptionsPengesahan perjalanan pusingan
glTF 2.0.gltfYaYaGltfSaveOptionsGraf adegan penuh, bahan, dan animasi dipelihara
GLB (binary glTF).glbYaYaGltfSaveOptionsKontena binari satu fail
COLLADA.daeYaYaColladaLoadOptions / ColladaSaveOptionsHierarki adegan dan bahan
3MF.3mfYaYaThreeMfSaveOptionsFormat pembuatan tambahan
FBX.fbxSebahagianTidakN/ATokenizer 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

SifatJenisLalaiKeterangan
enable_materialsboolTrueHuraikan .mtl fail yang dirujuk oleh pengepala OBJ
flip_coordinate_systemboolFalseTukar dari Y-up kanan-tangan ke Z-up kanan-tangan
normalize_normalboolTrueNormalisasikan semua normal permukaan yang diimport kepada panjang unit
scalefloat1.0Faktor 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 binary

Sokongan 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 3MF

3MF 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 .gltf sambungan apabila anda mahu GLB binari; gunakan .glb secara 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.
 Bahasa Melayu