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 yleiskuva
Ennen kuin sukellamme syvemmälle, 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 GltfSaveOptions kanssa setContentType(FileContentType.BINARY).
OBJ: Wavefront Object
OBJ on yksi laajimmin tuetuista 3D‑verkkomuodoista. Se tallentaa geometrian tavallisena tekstinä, valinnaisen .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ä.
Tallentaminen OBJ‑muotoon
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
OBJ:n käyttötapaukset
- Verkkoaineiston vaihtaminen eri 3D‑työkalujen välillä.
- Mallien tuonti 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-tiedostoja on kahta varianttia: 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);
Tallentaminen STL-muodossa
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
Ohjaamaan tulostetta, käytä StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
STL-harkinnat
- STL tallentaa vain kolmio-geometrian. Materiaalit, tekstuurit ja kohtaushierarkia eivät ole tuettuja ja ne poistetaan viennissä.
- STL-vienti tekee ei trianguloida automaattisesti. Binäärinen STL kirjoittaa vain kunkin polygonin ensimmäiset 3 kärkeä; nelikulmaiset ja n-gon‑kasvot katkaistaan hiljaisesti. ASCII STL kirjoittaa kaikki kärkipisteindeksit per kasvot, mikä tuottaa virheellistä tulostetta ei‑kolmiokasvoille. Käytä aina esitäsmätrianguloituja verkkoja (kaikki kolmiokasvot) kun viet STL-muotoon.
- Binaari-STL on merkittävästi pienempi kuin ASCII-STL suurille malleille.
- STL on ensisijainen 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, kohtaushierarkioita ja animaatioita.
glTF-tiedostojen lataaminen
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
Tallentaminen glTF-muodossa
Perus tallennus käyttää tiedostopäätettä määrittääkseen formaatin:
scene.save("output.gltf");
Yksityiskohtaista hallintaa varten, käytä GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
GltfSaveOptions‑yksityiskohdat
| 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 tuotannossa pienemmän tiedostokoon saavuttamiseksi. |
glTF‑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. Aspose.3D FOSS Java:lle tukee FBX:ää vain tuonti — vienti FBX:ään ei ole saatavilla.
Vain binäärinen FBX. FBX-tuonti lukee vain binäärisiä FBX-tiedostoja. ASCII FBX -tiedoston antaminen aiheuttaa ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). Soluhierarkiaa ja materiaalin poimintaa FBX:stä ei ole täysin varmistettu; monimutkaiset FBX‑kohtaukset eivät välttämättä lataudu kokonaan. Animaatioita ja riggausta ei ole toteutettu.
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‑käyttötapaukset
- Staattisten verkko‑omaisuuksien tuonti Autodesk‑työkaluista (Maya, 3ds Max) ja niiden muuntaminen muihin formaatteihin.
- Binaarisen FBX‑geometrian lataaminen ja uudelleenvienti glTF/GLB‑, OBJ‑ tai STL‑muotoon.
Erämuunnos
Yleinen työnkulku on muuntaa koko hakemisto tiedostoja 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 mihin tahansa lähde- ja kohdeformaattiyhdistelmään.
Ristiformaattimuunnoksen viite
Seuraava taulukko näyttää, mitä odottaa muunnoksessa 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 | Tasainen | MTL-materiaalit kartoitettiin mahdollisuuksien mukaan |
| STL | OBJ | Säilytetty | Ei | N/A | Lähteessä ei ole 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-muotoon | Säilytetty | Hyvä tarkkuus |
Yleiset muunnosohjeet
- Geometria säilyy yleensä formaattiparien välillä, yksi tärkeä poikkeus: kun viedään STL-muotoon, verkkojen on koostuttava kokonaan kolmioista. Binary STL leikkaa hiljaisesti nelikulmio- ja n-gon-pinnat niiden ensimmäisiin kolmeen kärkeen; ASCII STL tuottaa virheellistä tulostetta ei‑kolmioisille pinnoille.
- Materiaalit selviävät parhaiten glTF- ja FBX-tuoduissa kohtauksissa, jotka sisältävät materiaalitiedot. Muuntaminen STL-muotoon poistaa aina materiaalit. Muuntaminen OBJ-muotoon yksinkertaistaa materiaalit perus MTL-malliin.
- Kohtauksen hierarkia säilyy glTF-muodon tiedostojen välillä. OBJ ja STL tuottavat tasaisia rakenteita. FBX-hierarkiaa ja materiaalien poimintaa ei ole täysin varmistettu tässä versiossa.
Kokonaisuuden kokoaminen
Tässä on täydellinen esimerkki, joka lataa OBJ‑tiedoston, tarkastelee sen solmuja ja vie sen sekä glTF‑ että GLB‑muotoon:
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 tarjoaa sinulle yhdenmukaisen API:n useiden formaattien välillä. Keskeiset kohdat:
- OBJ – yksinkertainen verkkojen vaihtaminen 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-tulostukseen. - FBX – vain tuonti; rikas formaatti pelimoottoreista ja DCC-työkaluista ladattaville resursseille.
Käytä formaattiin spesifisiä 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.