Aspose.3D FOSS for Java atbalsta piecus 3D failu formātus: OBJ, STL, glTF, GLB, un FBX (tikai importēšana).
Visi piemēri izmanto com.aspose.threed.* pakotne:
import com.aspose.threed.*;
Maven atkarība:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Formātu pārskats
Pirms iedziļināšanās, šeit ir īss pārskats par četriem atbalstītajiem formātiem un to tipiskajām lietošanas situācijām.
| Formāts | Paplašinājums | Importēt | Eksportēt | Materiālu atbalsts | Ainas hierarhija |
|---|---|---|---|---|---|
| OBJ | .obj | Jā | Jā | Pamata (MTL faili) | Plakans |
| STL | .stl | Jā | Jā | Nav | Plakans |
| glTF 2.0 | .gltf | Jā | Jā | PBR | Pilns |
| GLB | .glb | Jā | Jā | PBR | Pilns |
| FBX | .fbx | Jā | Nē | Bagāts | Pilns |
OBJ, STL, glTF, un GLB atbalsta gan importu, gan eksportu. FBX tiek atbalstīts priekš tikai importam. GLB (binārais glTF) tiek radīts caur GltfSaveOptions ar setContentType(FileContentType.BINARY).
OBJ: Wavefront Object
OBJ ir viens no visplašāk atbalstītajiem 3D režģa formātiem. Tas saglabā ģeometriju kā vienkāršu tekstu, ar izvēles iespēju .mtl piederošu failu materiāliem.
OBJ failu ielāde
Visvienkāršākais veids ir nodot faila ceļu tieši:
Scene scene = Scene.fromFile("model.obj");
Lai iegūtu lielāku kontroli, izmantojiet ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
Kad OBJ fails atsaucas uz MTL failu (caur mtllib norādījumu), bibliotēka mēģinās automātiski ielādēt materiālu definīcijas no tā. MTL failam jābūt tajā pašā direktorijā kā OBJ failam vai ceļā, kas norādīts norādījumā.
Saglabāšana kā OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
OBJ lietošanas gadījumi
- Tīklu datu apmaiņa starp dažādiem 3D rīkiem.
- Modeļu importēšana no aktīvu bibliotēkām, kas izplata OBJ formātā.
- Ātra ģeometrijas pārbaude bez sarežģītām ainas hierarhijām.
STL: Stereolitogrāfija
STL ir standarta formāts 3D drukāšanai. Tas attēlo neapstrādātu trīsstūru ģeometriju bez materiāliem, krāsām vai ainas hierarhijas. STL faili ir pieejami divās versijās: ASCII (cilvēkam lasāms) un bināri (kompakts).
STL failu ielāde
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
Saglabāšana kā STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
Lai kontrolētu izvadi, izmantojiet StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
STL apsvērumi
- STL faili satur tikai trīsstūra ģeometriju. Materiāli, tekstūras un ainas hierarhija tiek zaudēti eksportēšanas laikā.
- Binārais STL ir ievērojami mazāks nekā ASCII STL lieliem modeļiem.
- STL ir izvēlētais formāts, ja mērķis ir 3D printeris vai slicera programmatūra.
glTF: GL pārraides formāts
glTF ir mūsdienīgs formāts, kas izstrādāts, lai nodrošinātu efektīvu 3D satura pārraidi un ielādi, īpaši tīmeklī un reāllaika lietojumprogrammās. Tas atbalsta PBR materiālus, ainas hierarhijas un animācijas.
Ielādē glTF failus
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Saglabā kā glTF
Pamata saglabāšana izmanto faila paplašinājumu, lai noteiktu formātu:
scene.save("output.gltf");
Lai veiktu detalizētu kontroli, izmantojiet GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
GltfSaveOptions detaļas
| Metode | Mērķis |
|---|---|
setFlipCoordinateSystem(boolean) | Apgriezt koordinātu sistēmas asi eksportēšanas laikā. Noderīgi, pārvēršot no Y‑augšas uz Z‑augšu vai otrādi. |
setPrettyPrint(boolean) | Formatējiet izvades JSON ar atkāpēm, lai uzlabotu lasāmību. Iestatiet uz false lai ražošanas vidē būtu mazāks faila izmērs. |
glTF lietošanas gadījumi
- Tīmekļa balstīti 3D skatītāji (three.js, Babylon.js).
- Reāllaika lietojumprogrammas un spēļu dzinēji.
- PBR materiālu definīciju saglabāšana starp rīkiem.
FBX: Filmbox (tikai importēšana)
FBX ir Autodesk īpašnieka formāts, kas plaši tiek izmantots spēļu izstrādē un digitālā satura veidošanā. Tas atbalsta bagātīgas ainas hierarhijas, materiālus un animācijas. Aspose.3D FOSS for Java supports FBX for tikai importēt – eksportēšana uz FBX nav pieejama.
FBX failu ielāde
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
FBX konvertēšana uz citām formātām
Tā kā FBX eksportēšana nav atbalstīta, konvertējiet importētās FBX ainas uz glTF, GLB, OBJ vai STL:
Scene scene = Scene.fromFile("character.fbx");
// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);
FBX lietošanas gadījumi
- Aktīvu importēšana no Autodesk rīkiem (Maya, 3ds Max) un to konvertēšana uz citām formātām.
- Ielādē rigotas rakstzīmes un animētas ainas, lai tās atkārtoti eksportētu uz glTF/GLB.
Masveida konvertēšana
Bieži izmantota darbplūsma ir visu failu direktoriju konvertēšana no viena formāta uz citu. Šeit ir paraugs masveida konvertēšanai:
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");
}
}
}
Tas ielādē katru .obj fails direktorijā, pārvērš katru uz glTF ar skaisti formatētu izvadi un saglabā rezultātus. Jūs varat pielāgot šo modeli jebkurai avota un mērķa formāta kombinācijai.
Starpformātu konvertēšanas atsauce
Zemāk esošā tabula parāda, ko sagaidīt, konvertējot starp formātiem.
| No | Uz | Ģeometrija | Materiāli | Hierarhija | Piezīmes |
|---|---|---|---|---|---|
| OBJ | STL | Saglabāts | Zaudēts | N/A | STL nav materiālu atbalsta |
| OBJ | glTF/GLB | Saglabāts | Pārveidots uz PBR | Plakans | MTL materiāli kartēti, ja iespējams |
| STL | OBJ | Saglabāts | Nav | N/A | Avotā nav materiālu |
| STL | glTF/GLB | Saglabāts | Noklusējuma | Plakans | Pielietots noklusējuma materiāls |
| glTF | OBJ | Saglabāts | Vienkāršots | Plaknots | PBR uz pamata materiālu |
| glTF | STL | Saglabāts | Zaudēts | Saplacināts | Tikai ģeometrija |
| FBX | OBJ | Saglabāts | Vienkāršots | Izlīdzināts | Materiāla vienkāršošana |
| FBX | STL | Saglabāts | Zaudēts | Plakots | Ģeometrija tikai |
| FBX | glTF/GLB | Saglabāts | Pārveidots uz PBR | Saglabāts | Laba precizitāte |
Vispārīgi konvertēšanas vadlīnijas
- Ģeometrija vienmēr tiek saglabāts visos formātu pāros.
- Materiāli labāk saglabājas starp glTF un FBX, kuri abi atbalsta bagātus materiālu modeļus. Pārvēršana uz STL vienmēr izmet materiālus. Pārvēršana uz OBJ vienkāršo materiālus uz pamata MTL modeli.
- Ainas hierarhija tiek saglabāta starp glTF un FBX. OBJ un STL rada plakanu struktūru.
Apvienojot visu
Šeit ir pilns piemērs, kas ielādē OBJ failu, pārbauda tā mezglus un eksportē gan uz glTF, gan 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.");
}
}
Kopsavilkums
Aspose.3D FOSS for Java nodrošina jums konsekventu API vairākos formātos. Galvenie punkti:
- OBJ – vienkārša režģa apmaiņa ar pamata materiāliem.
- STL – tikai ģeometrijas formāts 3D drukāšanas cauruļvadiem.
- glTF / GLB – moderns PBR spējīgs formāts tīmekļa un reāllaika lietošanai. Izmantojiet
GltfSaveOptionsarsetContentType(FileContentType.BINARY)GLB izvadei. - FBX – tikai importēšana; bagāts formāts resursu ielādēšanai no spēļu dzinējiem un DCC rīkiem.
Izmantojiet formātam specifiskās ielādes un saglabāšanas opciju klases (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions) kad jums ir nepieciešama smalkā vadība pār importēšanas vai eksportēšanas procesu.
Lai iegūtu vairāk informācijas, apmeklējiet Aspose.3D dokumentācija vai pārlūkojiet avotu uz GitHub.