Aspose.3D FOSS pentru Java susține cinci formate de fișier 3D: OBJ, STL, Glată, GLB, şi FBX Acest post este un ghid practic, format-pe-format care arată cum să încărcați și să salvați fiecare dintre ele, ce opțiuni sunt disponibile și cum de a converti între ele.
Toate exemplele folosesc com.aspose.threed.* pachetă :
import com.aspose.threed.*;
Dependența de Maven:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Formatul peisajului
Înainte de a se scufunda, aici este o imagine rapidă a celor patru formate susținute și cazurile lor tipice de utilizare.
| Formatul | extindere | Importul | Exportul | Suport material | Ierarhia scenelor |
|---|---|---|---|---|---|
| OBJ | .obj | Da | Da | Date de bază (file MTL) | Flată |
| STL | .stl | Da | Da | Niciun | Flată |
| GST 2.0 | .gltf | Da | Da | PBR | completă |
| GLB | .glb | Da | Da | PBR | completă |
| FBX | .fbx | Da | Nu | bogate | completă |
OBJ, STL, glTF și GLB susțin atât importurile cât și exporturile. FBX este susținut pentru Importul numai.GLB (GlTF binar) este produs prin intermediul GltfSaveOptions Cu setContentType(FileContentType.BINARY).
Obiectul Wavefront
OBJ este unul dintre cele mai susținute formate 3D de mesh. stocă geometria ca text pla, cu un format opțional .mtl Fișierul de companie pentru materiale.
Încărcare OBJ fișiere
Cea mai simplă abordare este să treci direct prin ruta de fișier:
Scene scene = Scene.fromFile("model.obj");
Pentru mai multă control, utilizarea ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
Când fișierul OBJ se referă la un fișiere MTL (prin intermediul unui mtllib Directiva), biblioteca va încerca să încărcească definițiile de material din ea automat. fișierul MTL ar trebui să fie în același directorat ca și fișa OBJ sau pe calea specificată în directivă.
Scăderea ca OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
OBJ utilizează cazuri
- Schimbarea datelor mesh între diferite instrumente 3D.
- Importarea de modele din bibliotecile de active care distribuie în format OBJ.
- Inspecția rapidă a geometriei fără ierarhie complexă.
Etichetă: stereolitografie
STL este formatul standard pentru imprimarea 3D. reprezintă geometria triangulară brută fără materiale, culori sau ierarhie scenă. fișierele STl vin în două variante: ASCII (numeroasă) și binare (compact).
Încărcare de fișiere STL
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
Scăderea ca STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
Pentru a controla productia, utilizati StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
Considerații STL
- STL stocă numai geometria triunghiului. materialele, texturile și ierarhia scenelor nu sunt susținute și se pun pe export.
- Exportul de la STL Nu STL binar scrie doar primele 3 verticale ale fiecărui poligon; fețele quad și n-gon sunt tăcut truncate. ASCII STl scrie toate indicele de vertice pe față, producând o ieșire malformată pentru fețe non-triangle. Folosiți întotdeauna mesele pre-trangulate (fete triangles) atunci când se exportă la ST L.
- STL binar este semnificativ mai mic decât ASCII STl pentru modele mari.
- STL este formatul de alegere atunci când ținta este un imprimant 3D sau software-ul slicer.
GLTF: Formatul de transmisie GL
GlTF este un format modern conceput pentru transmiterea și încărcarea eficientă a conținutului 3D, în special pe web și în aplicații în timp real. susține materiale PBR, ierarhie scenă și animații.
Încărcarea fișierelor glTF
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Scăderea ca gltf
Salvați de bază utilizează extinderea fișierului pentru a determina formatul:
scene.save("output.gltf");
Pentru control detaliat, utilizarea GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
GltfSaveOptions Detalii
| Metoda | Scopul |
|---|---|
setFlipCoordinateSystem(boolean) | Flip axul sistemului de coordonare în timpul exportului. Util atunci când se convertează din Y-up la Z-Up sau invers. |
setPrettyPrint(boolean) | Formatează ieșirea JSON cu indentație pentru citabilitate. false pentru dimensiunea mai mică a fișierului în producție. |
GST utilizează cazuri
- Vizualizări 3D pe web (three.js, Babylon.js).
- Aplicații în timp real și motoare de joc.
- Conservarea definițiilor de material PBR pe instrumente.
FBX: Filmbox (Să importăm doar)
FBX este un format proprietar de Autodesk care este utilizat pe scară largă în dezvoltarea jocurilor și crearea conținutului digital. Aspose.3D FOSS pentru Java susține FBx pentru Importul numai Exportul la FBX nu este disponibil.
Binare FBX numai. Importiorul FBX citește numai fișierele binare FB X. A trezit un fișiere ASCII FBx aruncă
ImportException("ASCII FBX format not yet supported - only binary FBX is supported").Ierarhia nodurilor și extracția materialelor din FBX nu sunt complet verificate; scenele complexe de FB X nu pot fi încărcate complet.
Încărcare FBX fișiere
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
Conversia FBX în alte formate
Deoarece exportul FBX nu este susținut, convertirea scenelor importate de FB X la glTF, GLB, OBJ sau STL:
Scene scene = Scene.fromFile("character.fbx");
// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);
FBX utilizează cazuri
- Importarea activelor statice de mesh din instrumentele Autodesk (Maya, 3ds Max) și conversia în alte formate.
- Încărcarea geometriei binare FBX și re-exportarea la glTF/GLB, OBJ sau STL.
Conversie batch
Un flux de lucru comun este convertirea unui directorie întreagă a fișierelor dintr-un format în altul.Aici este un model pentru conversia batch:
import com.aspose.threed.*;
import java.io.File;
public class BatchConvert {
public static void main(String[] args) throws Exception {
File inputDir = new File("models/obj");
File outputDir = new File("models/gltf");
outputDir.mkdirs();
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setPrettyPrint(true);
File[] objFiles = inputDir.listFiles(
(dir, name) -> name.toLowerCase().endsWith(".obj")
);
if (objFiles == null) return;
for (File objFile : objFiles) {
String baseName = objFile.getName()
.replaceFirst("\\.obj$", "");
Scene scene = Scene.fromFile(objFile.getAbsolutePath());
String outPath = new File(outputDir, baseName + ".gltf")
.getAbsolutePath();
scene.save(outPath, saveOpts);
System.out.println("Converted: " + objFile.getName()
+ " -> " + baseName + ".gltf");
}
}
}
Aceasta încărcă fiecare .obj fișier într-un director, convertează fiecare la glTF cu o ieșire bine imprimată și salvează rezultatele. puteți adapta acest model pentru orice combinație de formate sursa și țintă.
Conversie de referință cross-format
Tabela de mai jos arată ce să aștepți atunci când convertiți între formate.
| din | pentru | Geometrie | Materiale | Ierarhie | Notă |
|---|---|---|---|---|---|
| OBJ | STL | păstrate | pierderea | N/A | STL nu are niciun suport material |
| OBJ | GNL / GLB | păstrate | Convertită în PBR | Flată | Materialele MTL sunt hărțuite ori de câte ori este posibil |
| STL | OBJ | păstrate | Niciun | N/A | Nu există materiale în sursă |
| STL | GNL / GLB | păstrate | Definiţie | Flată | Materialul deficitar aplicat |
| Glată | OBJ | păstrate | simplificate | Flată | PBR la materialul de bază |
| Glată | STL | păstrate | pierderea | Flată | Geometria numai |
| FBX | OBJ | păstrate | simplificate | Flată | simplificarea materialelor |
| FBX | STL | păstrate | pierderea | Flată | Geometria numai |
| FBX | GNL / GLB | păstrate | Convertită în PBR | păstrate | Fidelitate bună |
Ghidul general de conversie
- Geometrie este în general păstrată pe parcursul cuplurilor de format, cu o excepție importantă: atunci când se exportă la STL, mesele trebuie să constată integral din fețe triunghiale. binare ST L liniștit truncate quad și n-gon fețele la primele 3 verticale; ASCII STl produce rezultatul malformat pentru feței non-triunghile.
- Materiale supraviețuiesc cel mai bine dintre glTF și fbx-importate scene care includ date materiale. conversia la STL întotdeauna scade materialele. convertirea la OBJ simplifică materialul în modelul MTL de bază.
- Ierarhia scenelor este păstrată între fișierele de format glTF. OBJ și STL produc structuri plat. ierarhia FBX și extracția materialului nu sunt complet verificate în această versiune.
Pune-l cu toții împreună
Iată un exemplu complet care încărcă un fișier OBJ, inspectează nodurile sale și exportă atât la glTF cât și la GLB:
import com.aspose.threed.*;
public class FormatWorkflow {
public static void main(String[] args) throws Exception {
// Load
Scene scene = Scene.fromFile("input.obj");
// Inspect
System.out.println("Nodes in scene:");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println(" " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: "
+ t.getTranslation());
}
// Export to glTF with options
GltfSaveOptions gltfOpts = new GltfSaveOptions();
gltfOpts.setPrettyPrint(true);
scene.save("output.gltf", gltfOpts);
// Export to GLB (binary glTF)
GltfSaveOptions glbOpts = new GltfSaveOptions();
glbOpts.setContentType(FileContentType.BINARY);
scene.save("output.glb", glbOpts);
System.out.println("Export complete.");
}
}
Rezumatul
Aspose.3D FOSS pentru Java vă oferă o API constantă în mai multe formate.:
OBJ - schimb de mesh simplu cu materialele de bază.
STL - format geometric numai pentru tuburile de imprimare 3D.
GNL / GLB - format PBR-capabil pentru utilizarea web și în timp real.
GltfSaveOptionsCusetContentType(FileContentType.BINARY)pentru producţia GLB.FBX - numai import; format bogat pentru încărcarea activelor din motoarele de joc și instrumentele DCC.
utilizarea unui format specific de încărcare și a unei clase de opțiuni (
ObjLoadOptions,StlLoadOptions,StlSaveOptions,GltfLoadOptions,GltfSaveOptions,FbxLoadOptionsatunci când aveți nevoie de un control fin-gran asupra procesului de import sau export.
Pentru mai multe detalii, vizitaţi Aspose.3D documentare sau să se descurce sursa de GitHub.