Uvod u članak
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.
Python je prirodan za ovaj posao: skripti shella su previše krhki, a integracije DCC (digitalno stvaranje sadržaja) alata su preteže za procesiranje batša. Ono što vam treba jest knjižnica koja može učitati bilo koji od ovih formata, dati vas dosljedan grafikon scene i napisati natrag u bilo kojem ciljnom formatu bez potrebe za grafičkim korisničkim interfejsom ili upravljačem grafike.
3D FOSS za Python (aspose-3d-foss,Ovaj vodič pokazuje najčešće staze konverzije s potpunim, pokretnim primjerima koda.
Koje formate podržava Aspose.3D FOSS?
| Format: | Extension(s) | Uređaj za prevoz: | Sačuvati | Uobičajeni slučajevi upotrebe |
|---|---|---|---|---|
| OBJ | .obj | - Da, u redu. | - Da, u redu. | U tom smislu, u skladu s člankom 21. stavkom 1. točka (a) Uredbe (EU) br. 1303/2013:; .mtl Podržane materijalne datoteke |
| STL | .stl | - Da, u redu. | - Da, u redu. | 3D printing, CAD export; binary and ASCII variants |
| GTF-a | .gltf, .glb | - Da, u redu. | - Da, u redu. | Web gledalaci, motori za igre; .glb je samostalna binarna varijanta |
| COLLADA | .dae | - Da, u redu. | - Da, u redu. | Uvoz iz alata za animaciju; ColladaSaveOptions podržava izvoz |
| 3MF | .3mf | - Da, u redu. | - Da, u redu. | Aditivna proizvodnja, bogatiji metapodatci od STL-a |
Detekcija formata je automatska iz proširenja datoteke.ObjLoadOptions, StlSaveOptions, GltfSaveOptions) dostupne su kada je potrebna kontrola u finim zrncima.
Napomena o FBX-u: U knjižnici je uključen djelomični FBX tokenizer za uvoz. FBx se ne preporučuje za radne protoke prilikom proizvodnje u ovom izdanju; umjesto toga koristite OBJ ili glTF kao intermediarne formate.
OBJ-STL: Priprema modela za 3D tisak
OBJ je najčešći format izdanja od alata za modeliranje i skulpturiranje. STL je lingua franca 3D štampača. Konverzija između njih je jedan poziv.
from aspose.threed import Scene
from aspose.threed.formats import StlSaveOptions
scene = Scene.from_file("model.obj")
opts = StlSaveOptions()
scene.save("model.stl", opts)
STL kodira samo trokutne lica. Ako OBJ datoteka sadrži četvorokove ili n-gon lice, izvoznik ih automatski triangulacije prije pisanja. mesh.triangulate() na svakoj mreži u sceni:
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 za glTF: izvoz za web i igračke motore
glTF 2.0 je omiljeni format za razmjenu za renderere u realnom vremenu, WebGL gledalace i motore igara kao što su Babylon.js, Three. js i Unity. GLB (binarna varijanta) pakira geometriju, teksture i materijale u jednu samostalnu datoteku koja se lakše služi preko HTTP-a.
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())
Format je izveden iz proširenja datoteke: .gltf U ovom slučaju, u skladu s člankom 15. stavkom 1. točkom (a) i podstavkom 7.; .glb Objavljuje se u jednom datoteku.LambertMaterial, PhongMaterial(Stoga, u slučaju da se ne može utvrditi odgovarajuća metoda za izračunavanje vrijednosti) preuzima se na prikaz glTF PBR materijala ako postoji ekvivalent.
STL na glTF: Od skenera ili CAD izdanja do web-a
STL datoteke iz 3D skenera i CAD sustava su uobičajeni ulazi koji se moraju učiniti vidljivim na webu. ST L nosi samo geometriju trokutova i nema materijalnih podataka, tako da je pretvaranje jednostavno.
from aspose.threed import Scene
from aspose.threed.formats import GltfSaveOptions
scene = Scene.from_file("scan.stl")
scene.save("scan.glb", GltfSaveOptions())
Ako je STL proizveden CAD alatom s neobičnim koordinatnim sustavom (Z-up vs. Y- up), možete pregledati i ispraviti transformiranje korijenog čvorka prije pohranjivanja:
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())
U slučaju da se proizvodnja ne provodi u skladu s člankom 7. stavkom 1. točkom (a) ovog članka, podnositelj zahtjeva može zatražiti od strane proizvođača:
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")
3MF format se automatski otkriva iz .3mf Za izričitu kontrolu, prođite s SaveOptions U slučaju da je to moguće, mora se koristiti:.
Uzorak pretvaranja serije
U praksi, zadaci konverzije rade na direktorijima datoteka umjesto pojedinačnih datotek. Sljedeći uzorak rukovodi fasciklom OBJ datotanaka i pretvara svaku u GLB, s obradom grešaka po datoteci tako da jedna loša datotna ne prekida cijeli pokretanje.
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}")
Ovaj obrazac se prirodno proširuje i na druge parove izvor/ciljni format: promijenite filter za proširenje i prikažite datoteke koje su u pitanju. SaveOptions U ovom slučaju, u skladu s člankom 77. stavkom 1. točka (a) Uredbe (EU) br. 575/2013, mora se primjenjivati sljedeća pravila:.
Izvješće
Aspose.3D FOSS za Python čini konverziju formata jednostavnom: učitavanje s Scene.from_file, opcionalno pregledati ili modificirati grafikon scene, a zatim sačuvati s odgovarajućim SaveOptions.Biblioteka se bavi triangulacijom, normalizacijom koordinata i specifičnim posebnostima formata.
Za potpuni popis klasa i metoda, pogledajte članak 1. Odgovor na API.Za dublje istraživanje grafičkog modela scene (začepi, mrežice, transformira) pogledajte:
- Scenarij u razredu:U ovom slučaju, u skladu s člankom 7. stavkom 1. točkom (a) Uredbe (EU) br. 1071/2013:
- Klasa čvorova: hijerarhija, transformacije, veza entiteta
- Klasa mreža:U ovom slučaju, u skladu s člankom 21. stavkom 1. točkom (a) Uredbe (EU) br. 1071/2013:
- Kako učitati 3D modele u Python-u?
- PIP: aspose-3d-foss