Aspose.3D FOSS for Java tukee viittä 3D-tiedostomuotoa: OBJ, STL, glTF, GLB, ja FBX (vain tuonti).
Kaikki esimerkit käyttävät com.aspose.threed.* pakettia:
import com.aspose.threed.*;
Maven‑riippuvuus:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Formaattien maisema
Ennen kuin sukellamme asiaan, tässä on nopea yleiskatsaus neljään tuettuun formaattiin ja niiden tyypillisiin käyttötapauksiin.
| Muoto | Tiedostopääte | Tuonti | Vienti | Materiaalituki | Kohtauksen hierarkia |
|---|---|---|---|---|---|
| OBJ | .obj | Kyllä | Kyllä | Perus (MTL-tiedostot) | Tasainen |
| STL | .stl | Kyllä | Kyllä | Ei | Tasainen |
| glTF 2.0 | .gltf | Kyllä | Kyllä | PBR | Täysi |
| GLB | .glb | Kyllä | Kyllä | PBR | Täysi |
| FBX | .fbx | Kyllä | Ei | Rikas | Täysi |
OBJ, STL, glTF ja GLB tukevat sekä tuontia että vientiä. FBX on tuettu vain tuonti. GLB (binääri glTF) tuotetaan via GltfSaveOptions avulla setContentType(FileContentType.BINARY).
OBJ: Wavefront-objekti
OBJ on yksi laajimmin tuetuista 3D-verkkomuodoista. Se tallentaa geometrian tavallisena tekstinä, valinnaisena .mtl lisätiedosto materiaaleille.
OBJ‑tiedostojen lataaminen
Yksinkertaisin tapa on antaa tiedostopolku suoraan:
Scene scene = Scene.fromFile("model.obj");
Lisää hallintaa varten käytä ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
Kun OBJ-tiedosto viittaa MTL-tiedostoon (kautta mtllib direktiivin), kirjasto yrittää ladata materiaalimäärittelyt siitä automaattisesti. MTL-tiedoston tulisi olla samassa hakemistossa OBJ-tiedoston kanssa tai polussa, joka on määritelty direktiivissä.
Tallennus OBJ-muodossa
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
OBJ:n käyttötapaukset
- Mesh-datan vaihtaminen eri 3D-työkalujen välillä.
- Mallien tuominen omaisuuskirjastoista, jotka jakavat OBJ-muodossa.
- Nopea geometrian tarkastelu ilman monimutkaisia kohtaushierarkioita.
STL: Stereolitografia
STL on 3D-tulostuksen vakiomuoto. Se esittää raakaa kolmioituja geometriaa ilman materiaaleja, värejä tai kohtaushierarkiaa. STL-tiedostot ovat kahdessa variantissa: ASCII (luettavissa ihmiselle) ja binaari (tiivis).
STL-tiedostojen lataaminen
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
Tallennus STL-muodossa
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
Ohjaamaan tulostusta, käytä StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
STL-asiat
- STL-tiedostot sisältävät vain kolmioidun geometrian. Materiaalit, tekstuurit ja kohtauksen hierarkia menetetään viennin aikana.
- Binäärinen STL on merkittävästi pienempi kuin ASCII STL suurille malleille.
- STL on suositeltu formaatti, kun kohteena on 3D-tulostin tai viipalointiohjelmisto.
glTF: GL Transmission Format
glTF on moderni formaatti, joka on suunniteltu tehokkaaseen 3D-sisällön siirtoon ja lataamiseen, erityisesti verkossa ja reaaliaikaisissa sovelluksissa. Se tukee PBR-materiaaleja, kohtauksen hierarkioita ja animaatioita.
Ladataan glTF-tiedostoja
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Tallennetaan glTF-muodossa
Perustallennus käyttää tiedostopäätettä määrittääkseen formaatin:
scene.save("output.gltf");
Tarkempaan hallintaan, käytä GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
GltfSaveOptions‑tiedot
| Menetelmä | Tarkoitus |
|---|---|
setFlipCoordinateSystem(boolean) | Käännä koordinaatistojärjestelmän akseli viennin aikana. Hyödyllinen, kun muunnetaan Y-ylöspäin Z-ylöspäin tai päinvastoin. |
setPrettyPrint(boolean) | Muotoile tulosteen JSON sisennyksellä luettavuuden parantamiseksi. Aseta arvoon false pienemmän tiedostokoon saavuttamiseksi tuotannossa. |
glTF:n käyttötapaukset
- Verkossa toimivat 3D‑katseluohjelmat (three.js, Babylon.js).
- Reaaliaikaiset sovellukset ja pelimoottorit.
- PBR‑materiaalimääritelmien säilyttäminen eri työkalujen välillä.
FBX: Filmbox (vain tuonti)
FBX on Autodeskin omistama formaatti, jota käytetään laajasti pelikehityksessä ja digitaalisen sisällön luomisessa. Se tukee rikkaiden kohtaushierarkioiden, materiaalien ja animaatioiden käsittelyä. Aspose.3D FOSS for Java tukee FBX:ää vain tuonti – FBX-vienti ei ole saatavilla.
FBX-tiedostojen lataaminen
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
FBX:n muuntaminen muihin formaatteihin
Koska FBX-vientiä ei tueta, muunna tuodut FBX-kohtaukset glTF-, GLB-, OBJ- tai STL-muotoon:
Scene scene = Scene.fromFile("character.fbx");
// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);
FBX:n käyttötapaukset
- Assettien tuonti Autodesk-työkaluista (Maya, 3ds Max) ja niiden muuntaminen muihin formaatteihin.
- Ladataan rigattuja hahmoja ja animoituja kohtauksia uudelleenvientiin glTF/GLB-muotoon.
Erämuunnos
Yleinen työnkulku on muuntaa koko hakemiston tiedostot yhdestä formaatista toiseen. Tässä on malli erämuunnokselle:
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");
}
}
}
Tämä lataa jokaisen .obj tiedoston hakemistossa, muuntaa jokaisen glTF-muotoon kauniisti muotoillulla tulosteella, ja tallentaa tulokset. Voit mukauttaa tätä mallia mille tahansa lähde- ja kohdeformaattiyhdistelmälle.
Ristiformaattimuunnoksen viite
Seuraava taulukko näyttää, mitä odottaa muunnostaessa formaattien välillä.
| Lähde | Kohde | Geometria | Materiaalit | Hierarkia | Muistiinpanot |
|---|---|---|---|---|---|
| OBJ | STL | Säilytetty | Kadonnut | N/A | STL:ssä ei ole materiaalitukea |
| OBJ | glTF/GLB | Säilytetty | Muunnettu PBR:ksi | Litteä | MTL-materiaalit kartoitettiin mahdollisuuksien mukaan |
| STL | OBJ | Säilytetty | Ei | N/A | Lähteessä ei materiaaleja |
| STL | glTF/GLB | Säilytetty | Oletus | Tasainen | Oletusmateriaali sovellettu |
| glTF | OBJ | Säilytetty | Yksinkertaistettu | Litistetty | PBR perusmateriaaliin |
| glTF | STL | Säilytetty | Kadonnut | Litistetty | Vain geometria |
| FBX | OBJ | Säilytetty | Yksinkertaistettu | Litistetty | Materiaalin yksinkertaistaminen |
| FBX | STL | Säilytetty | Kadonnut | Litistetty | Vain geometria |
| FBX | glTF/GLB | Säilytetty | Muunnettu PBR:ksi | Säilytetty | Hyvä tarkkuus |
Yleiset muunnosohjeet
- Geometria säilyy aina kaikissa formaattipareissa.
- Materiaalit selviytyvät parhaiten glTF:n ja FBX:n välillä, jotka molemmat tukevat rikkaita materiaalimalleja. STL:ksi muuntaminen poistaa aina materiaalit. OBJ:ksi muuntaminen yksinkertaistaa materiaalit perus MTL-malliin.
- Kohtauksen hierarkia säilyy glTF:n ja FBX:n välillä. OBJ ja STL tuottavat litteitä rakenteita.
Kokoamalla kaikki yhteen
Tässä on täydellinen esimerkki, joka lataa OBJ-tiedoston, tarkastelee sen solmuja ja vie sen sekä glTF- että GLB-muotoihin:
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.");
}
}
Yhteenveto
Aspose.3D FOSS for Java antaa sinulle yhdenmukaisen API:n useiden formaattien välillä. Keskeiset kohdat:
- OBJ – yksinkertainen verkkojen vaihtomuoto perusmateriaaleilla.
- STL – pelkästään geometriaan perustuva formaatti 3D-tulostusputkille.
- glTF / GLB – moderni PBR-yhteensopiva formaatti verkkoon ja reaaliaikaiseen käyttöön. Käytä
GltfSaveOptionskanssasetContentType(FileContentType.BINARY)GLB-ulostulolle. - FBX – vain tuonti; rikas formaatti resurssien lataamiseen pelimoottoreista ja DCC-työkaluista.
Käytä formaattiin perustuvia lataus- ja tallennusvaihtoehtoluokkia (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions) kun tarvitset tarkkaa hallintaa tuonti- tai vientiprosessiin.
Lisätietoja, käy Aspose.3D-dokumentaatio tai selaa lähdekoodia. GitHub.