Aspose.3D FOSS for Java támogatja az öt 3D fájlformátumot: OBJ, STL, GTTF, GLB,és FBX Ez a bejegyzés egy praktikus, formátum-formátum útmutató, amely bemutatja, hogyan kell feltölteni és menteni mindegyikét, milyen lehetőségek állnak rendelkezésre, és hogyan lehet átváltani közöttük.
Minden példát használunk a com.aspose.threed.* A csomag:
import com.aspose.threed.*;
A Maven függőség:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Fénykép formázása
Mielőtt elaludnánk, itt egy gyors áttekintés a négy támogatott formátumról és azok tipikus használati eseteiről.
| formátum | kiterjesztés | Importálva | export | Anyagi támogatás | Színház hierarchia |
|---|---|---|---|---|---|
| OBJ | .obj | Igen | Igen | Alapfájlok (MTL fájl) | Flat |
| STL | .stl | Igen | Igen | Nincs | Flat |
| GTTF 2.0 | .gltf | Igen | Igen | PBR | Teljes |
| GLB | .glb | Igen | Igen | PBR | Teljes |
| FBX | .fbx | Igen | Nem nem | gazdagok | Teljes |
Az OBJ, a STL, az GLTF és a GLB támogatja mind az importot, mind a exportot. Csak importálva.A GLB (bináris glTF) a gyártáson keresztül történik. GltfSaveOptions A setContentType(FileContentType.BINARY).
OBJ: A hullámfront objektum
Az OBJ az egyik legszélesebb körben támogatott 3D mesh formátum. A geometria egyenes szövegként tárolódik, opcionális .mtl társaságok a dokumentumokat.
OBJ fájlok feltöltése
A legegyszerűbb módszer az, hogy közvetlenül át a fájlút:
Scene scene = Scene.fromFile("model.obj");
Több ellenőrzés, használata ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
Ha az OBJ fájl egy MTL füzetet mutat (a mtllib a könyvtár automatikusan megpróbálja feltölteni az anyag definícióit.A MTL fájlnak ugyanazon a címkében kell lennie, mint az OBJ fázis vagy az irányelvben meghatározott útvonalon.
Megtakarítások OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
Az OBJ használja az esetek
- A mesh adatok cseréje a különböző 3D eszközök között.
- Az eszközökből származó modellek importálása az OBJ formátumban forgalmazott könyvtárakból.
- A geometria gyors ellenőrzése komplex jeleneti hierarchia nélkül.
STL: Stereolithográfia
STL a 3D nyomtatás szabványos formátumát képviseli, amely nyers háromszögű geometria anyagok, színek vagy jelenet hierarchiák nélkül. STl fájlok két változatban jelennek meg: ASCII (ember-olvasható) és bináris (kompakt).
STL fájlok letöltése
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
Megtakarítás STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
A termelés ellenőrzése, használata StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
STL vélemények
- A STL csak háromszög geometria tárol. anyagok, textúrák és jelenet hierarchiája nem támogatott, és exportra kerülnek.
- Az STL exportja Nem A bináris STL csak az első 3 vertikumot írja fel minden poligon arcában; a négy és n-gon arcok csendesen törnek. Az ASCII ST L írásban minden vertekes indexet arconként, ami rossz formátú kimenetelű nem háromszög arcokra. Mindig használjon előtömeges mesét (mindenháromszöge arc) exportálva az STl-re.
- A bináris STL jelentősen kisebb, mint az ASCII STl a nagy modellek esetében.
- STL a választás formátum, amikor a cél egy 3D nyomtató vagy szeletelő szoftver.
GLTF: transzmissziós formátum
A glTF egy modern formátum, amely a 3D tartalom hatékony továbbítására és feltöltésére szolgál, különösen az interneten és valós idejű alkalmazásokban. támogatja a PBR anyagokat, jeleneti hierarchiákat és animációkat.
Fájlok letöltése GLTF
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Megtakarítás mint glTF
Az alapmegtakarítás a fájl kiterjesztését használja, hogy meghatározzák a formátumot:
scene.save("output.gltf");
Részletes ellenőrzés, használata GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
GltfSaveOptions részletek
| módszerek | célt |
|---|---|
setFlipCoordinateSystem(boolean) | A koordináták rendszer axis exportálása során. hasznos az Y-up és Z-Up átalakításakor vagy fordítva. |
setPrettyPrint(boolean) | A JSON kimenetel formázása az olvashatóság indentációjával. false A gyártásban kisebb méretű fájl. |
GTTF használati esetek
- Webes 3D nézők (three.js, Babylon.js).
- Valós idejű alkalmazások és játékmotorok.
- A PBR anyag definícióinak megőrzése az eszközökön keresztül.
FBX: Filmbox (csak import)
Az FBX az Autodesk tulajdonos formátum, amelyet széles körben használnak a játékfejlesztés és a digitális tartalomteremtés terén. Aspose.3D FOSS for Java támogatja az FBx-t a Csak importálva - az export a FBX nem elérhető.
Bináris FBX csak. Az FBX importőr csak bináris FBx fájlokat olvashat. az ASCII FB X füzet átadása
ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). A csomópontok hierarchiája és az anyag kivonata a FBX-ről nem teljesen ellenőrizhető; összetett FB X jelenetek nem töltenek teljes mértékben.
FBX fájlok letöltése
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
FBX más formátumokba történő átalakítása
Mivel az FBX export nem támogatott, a behozott FBx jelenetek átalakítása glTF, GLB, OBJ vagy STL:
Scene scene = Scene.fromFile("character.fbx");
// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);
FBX használata ügyek
- Statikus mész eszközök importálása az Autodesk eszközöktől (Maya, 3ds Max) és más formátumokba történő konvertálás.
- Bővítse a bináris FBX geometria és újra exportálva glTF/GLB, OBJ vagy STL.
Batch átalakítás
Egy közös munkafolyamat az, hogy egy teljes fájl-direktorát egyik formátumból a másikba alakít. Itt van egy mintája a batch konverzióhoz:
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");
}
}
}
Ez mindenkinek terheli a .obj fájl egy címkében, konvertálja mindegyik a glTF-re gyönyörű nyomtatott kimenetelű, és megmentette az eredményeket.
Cross-Format konverziós referenciák
Az alábbi táblázat megmutatja, mit kell várni a formátumok közötti konverzió során.
| A | A | Geometria | anyagok | Hierarchia | jegyzetek |
|---|---|---|---|---|---|
| OBJ | STL | megőrzött | Elveszett | N/A | A STL-nek nincs anyagi támogatása |
| OBJ | GTT / GLB | megőrzött | PBR-re átalakították | Flat | MTL anyagok mappázva, ahol lehetséges |
| STL | OBJ | megőrzött | Nincs | N/A | Nincs forrásban anyag |
| STL | GTT / GLB | megőrzött | Default | Flat | Alkalmazott anyagok |
| GTTF | OBJ | megőrzött | Egyszerűsített | Flattened | PBR alapanyagokhoz |
| GTTF | STL | megőrzött | Elveszett | Flattened | Csak a geometria |
| FBX | OBJ | megőrzött | Egyszerűsített | Flattened | Anyagszelídítés |
| FBX | STL | megőrzött | Elveszett | Flattened | Csak a geometria |
| FBX | GTT / GLB | megőrzött | PBR-re átalakították | megőrzött | Jó hűség |
Általános konverziós iránymutatások
- Geometria Általában megőrzött formátum párok, egy fontos kivétel: amikor exportál STL, a mesheket kell állni teljesen háromszög arc. Bináris ST L csendben truncates négy és n-gon arcokat az első 3 vertikum; ASCII STl termel rosszul alakult kimenetel nem háromszoros arcok.
- anyagok Legjobb túlélni a glTF és FBX importált jelenetek között, amelyek anyagadatokat tartalmaznak. STL-re való átalakítás mindig az anyagot dobja. OBJ-ra történő áthelyezés egyszerűsíti az alapvető MTL modellt.
- Színházi hierarchia megőrzött között glTF formátumú fájlok. OBJ és STL termel egyenes struktúrák. FBX hierarchia és anyag kivonata nem teljesen ellenőrizte ebben a verzióban.
Összefogjuk az összeset
Íme egy teljes példa, amely feltölti az OBJ fájlt, ellenőrzi a csomópontjait és exportálja mind a glTF-t, mind pedig a GLB-et:
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.");
}
}
Összefoglaló
Aspose.3D FOSS for Java egy következetes API-t ad több formátumon keresztül.:
- OBJ - egyszerű mező cseréje alapanyagokkal.
- STL - geometriai formátum csak 3D nyomtatási csövekhez.
- GLT / GLB - modern PBR-kapcsolható formátum webes és valós idejű használathoz. használja
GltfSaveOptionsAsetContentType(FileContentType.BINARY)A GLB termeléséhez. - FBX - csak import; gazdag formátum a játékmotorokból és DCC eszközökből származó tételekhez.
A programok és a programokat használja (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionsha a behozatali vagy kiviteli folyamatot finom ellenőrzésnek kell lennie.
További részletekért látogasson el a 3D dokumentáció vagy a forráson keresztül keresse meg GitHub.