Bevezetés
3D content rarely stays in a single format for its entire lifetime. A model may originate as an OBJ file exported from a modelling application, travel through a 3D printing pipeline as STL, appear in a web application as glTF, and end up in an additive manufacturing tool as 3MF. Each format serves a different audience and a different downstream tool, and conversion between them is something most 3D pipelines need to handle reliably.
A Python természetes alkalmazkodás a munkára: a shell-szkriptek túl törékenyek, és az teljes DCC (digitális tartalomteremtés) eszköz integrációk túlságosan nehézséget jelentnek a tételfeldolgozáshoz. Amit szükség van egy olyan könyvtárra, amely bármelyik formátumot betölthet, következetes jeleneti grafikont adhat Önnek, valamint visszaírhatja bármilyen célformátumban anélkül, hogy GUI vagy grafikai driver lenne szükséges.
3D FOSS Pythonhoz (aspose-3d-foss,Ez a útmutató bemutatja a leggyakoribb konverziós ösvényeket teljes, futtatható kód példákkal.
Milyen formátumokat támogat a Aspose.3D FOSS?
| Formátum | Extension(s) | Töltési kapacitás: | Megőrzés | Közös felhasználási eset |
|---|---|---|---|---|
| OBJ | .obj | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | A modellezési eszközök közötti cserék; .mtl támogatott anyagi fájlok |
| STL | .stl | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | 3D printing, CAD export; binary and ASCII variants |
| glTF-t | .gltf, .glb | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | Web néző, játékmotor; .glb az önálló bináris változat; |
| COLLADA | .dae | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | Az animációs eszközökből történő import; ColladaSaveOptions export támogatása. |
| 3MF | .3mf | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | Aditív gyártás, a nyomtatott metaadatokban gazdagabb mint az STL-ben. |
A formátum felismerése automatikusan történik a fájl kiterjesztésénél. Formátumspecifikus opciós osztályok (ObjLoadOptions, StlSaveOptions, GltfSaveOptionsA szennyező anyagokat a vizsgálat során kell kezelni.
Megjegyzés a FBX-ről: A könyvtár tartalmaz egy részleges FBX tokenizer import. FBx nem ajánlott a termelés átalakítás munkafolyamatok ebben az kiadásban; használja OBJ vagy glTF, mint közbenső formátumok helyett.
OBJ és STL: 3D-nyomtatásra való modell elkészítése
Az OBJ a modellezés és szobrászat eszközeinek leggyakoribb kimeneti formátuma. A STL a 3D-s nyomtató szeletelők lingua francaja. Közöttük történő konverzió egyetlen hívás alatt történik.
from aspose.threed import Scene
from aspose.threed.formats import StlSaveOptions
scene = Scene.from_file("model.obj")
opts = StlSaveOptions()
scene.save("model.stl", opts)
Ha az OBJ fájlt tartalmaz négyes vagy n-gon arcot, a kivitel automatikusan triangulálja őket írás előtt. Ha szeretné irányítani a triangulació kifejezetten mentése előtt hívja meg: mesh.triangulate() a jelenet minden hálóján:
from aspose.threed import Scene
from aspose.threed.entities import Mesh
from aspose.threed.formats import StlSaveOptions
scene = Scene.from_file("model.obj")
def triangulate_all(node):
if isinstance(node.entity, Mesh):
# entity setter clears existing entities and sets the new one
node.entity = node.entity.triangulate()
for child in node.child_nodes:
triangulate_all(child)
triangulate_all(scene.root_node)
scene.save("model_triangulated.stl", StlSaveOptions())
OBJ a glTF-hez: Exportálás webes és játékmotorokhoz
A glTF 2.0 a legkedveltebb interchange formátum az valós idejű rendererek, WebGL nézők és játékmotorok számára, mint például Babylon.js, Three. js és Unity. A GLB (a bináris változat) egy önálló fájlba csomagolja a geometria, textúrák és anyagok adatait, ami könnyebben szolgálható HTTP-n keresztül.
from aspose.threed import Scene
from aspose.threed.formats import GltfSaveOptions
scene = Scene.from_file("model.obj")
##Save as JSON-based glTF (external buffer)
opts_gltf = GltfSaveOptions()
scene.save("model.gltf", opts_gltf)
##Save as self-contained GLB binary: preferred for web delivery
scene.save("model.glb", GltfSaveOptions())
A formátum a fájl kiterjesztéséből következik: .gltf a JSON+bináris-buffer párt generálja; .glb az egyes fájlokból álló bináris adatokat állítja elő.LambertMaterial, PhongMaterial) átadják a glTF PBR-anyagok reprezentációjába, ha van egy megfelelő.
STL-től glTF: a szkennertől vagy CAD kimenetelről a webre
A 3D-s szkennerek és CAD rendszerek STL fájljai olyan közös bemenetek, amelyeket webes megjelenítésre kell tenni. Az ST L csak háromszög geometria és nincs anyagi adatot tartalmaz, így a konvertáció egyszerű.
from aspose.threed import Scene
from aspose.threed.formats import GltfSaveOptions
scene = Scene.from_file("scan.stl")
scene.save("scan.glb", GltfSaveOptions())
Ha az STL-t egy szokatlan koordinátarendszerű CAD eszköz készítette (Z-up vs. Y- up), akkor a megőrzés előtt ellenőrizheti és kijavíthatja a gyökércsomó transformációját:
import math
from aspose.threed import Scene
from aspose.threed.formats import GltfSaveOptions
scene = Scene.from_file("cad_export.stl")
# Rotate -90 degrees around X to convert Z-up to Y-up
# set_euler_angles takes radians, not degrees
root = scene.root_node
root.transform.set_euler_angles(-math.pi / 2, 0.0, 0.0)
scene.save("cad_export_yup.glb", GltfSaveOptions())
glTF-tól 3MF: Adatanyaggyártásra való felkészítés
3MF is a modern 3D printing format backed by the 3MF Consortium. It supports richer metadata than STL (colour, material assignments, build instructions) and is accepted by slicer software such as PrusaSlicer and Bambu Studio. If you are delivering models from a web viewer into a printing workflow, converting GLB to 3MF is a useful step.
from aspose.threed import Scene
from aspose.threed import FileFormat
from aspose.threed.formats import SaveOptions
scene = Scene.from_file("model.glb")
scene.save("model.3mf")
A 3MF formátum automatikusan érzékelhető a .3mf A kifejezett ellenőrzéshez egy SaveOptions 3MF-re konfigurált példány.
Sorozatkonverziós minták
A konvertációs feladatok gyakorlatilag a fájlok, nem pedig az egyes fájlokat tartalmazó címkékben zajlanak. Az alábbi mintában egy mappát kezelnek OBJ-fájlákból és mindegyiket GLB-be alakítják át, adatbázisban hibás kezelés mellett, így egyetlen rossz fáji nem törli el az egész futtatást.
import os
from aspose.threed import Scene
from aspose.threed.formats import GltfSaveOptions
input_dir = "./obj_files"
output_dir = "./glb_files"
os.makedirs(output_dir, exist_ok=True)
opts = GltfSaveOptions()
results = {"ok": [], "failed": []}
for filename in os.listdir(input_dir):
if not filename.lower().endswith(".obj"):
continue
src = os.path.join(input_dir, filename)
stem = os.path.splitext(filename)[0]
dst = os.path.join(output_dir, stem + ".glb")
try:
scene = Scene.from_file(src)
scene.save(dst, opts)
results["ok"].append(filename)
print(f"OK {filename} -> {stem}.glb")
except Exception as exc:
results["failed"].append((filename, str(exc)))
print(f"ERR {filename}: {exc}")
print(f"\n{len(results['ok'])} converted, {len(results['failed'])} failed.")
if results["failed"]:
for name, reason in results["failed"]:
print(f" {name}: {reason}")
Ez a mintázat természetesen kiterjed más forrást/célformátum párokra is: változtassa meg az bővítési szűrőt és a SaveOptions az előző táblázatban szereplő bármely kombinációhoz tartozó osztály.
A Bizottság következtetései
Aspose.3D FOSS Python teszi a formátum átalakítás egyszerű: töltse be, hogy Scene.from_file, ha lehet, ellenőrizze vagy módosítsa a jelenet grafikont, majd mentse meg az adott képernyővel. SaveOptions.A könyvtár a háromszöglet, koordináták normalizálása és formátum-specifikus furcsaságok kezelését intézi.
A osztályok és módszerek teljes listája a következőkben található: API hivatkozás.A jelenet grafikon modelljére (csomók, hálózatok, transformációk) részletesebben nézzünk:
- Az osztály jelenete: betöltés, mentés és jelenetszintű metaadatok
- osztálycsomó: hierarchiák, átalakítások, entitások kötődése
- Rendszer- és hálózati osztályok: csúcsadatok, sokszögek, csúcskörök elemek
- Hogyan töltsünk be 3D modelleket Pythonban?
- PyPI: aspose-3d-foss