Olemme innoissamme voidessamme ilmoittaa saatavuudesta Aspose.3D FOSS for Java – ilmainen, avoimen lähdekoodin kirjasto 3D-tiedostomuotojen käsittelyyn Java-sovelluksissa. Rakennettu puhtaana Java-ratkaisuna ilman natiiviriippuvuuksia, kirjasto toimii Java 21:ssä ja uudemmissa, mikä tekee siitä saavutettavan laajalle projekti- ja ympäristövalikoimalle.
Tässä artikkelissa käydään läpi, mitä kirjasto tarjoaa, miten pääsee alkuun ja mihin seuraavaksi kannattaa siirtyä.
Mikä on Aspose.3D FOSS for Java?
Aspose.3D FOSS for Java on kevyt 3D-tiedostojen käsittelykirjasto, joka on julkaistu MIT-lisenssi. Se tarjoaa scene-graph API:n, jonka avulla voit ladata, tarkastella, muuntaa ja tallentaa 3D-malleja useiden laajasti käytettyjen formaattien välillä. Kirjasto on kokonaan kirjoitettu Java:lla eikä vaadi ulkoisia natiivibinaareja tai alusta‑kohtaisia asetuksia.
Lähdekoodi on saatavilla GitHubissa: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Keskeiset kohokohdat
- Puhtaan Java – ei JNI:tä, ei natiivikirjastoja, ei alustan rajoituksia.
- Java 21+ yhteensopiva.
- MIT-lisensoitu – käytä sitä henkilökohtaisissa, kaupallisissa tai omistusoikeudellisissa projekteissa ilman rajoituksia.
- Kohtausgrafiikka-arkkitehtuuri – tuttu puu solmuista, verkkoista, kameroista ja materiaaleista.
- Moniformaattinen tuki – lue ja kirjoita OBJ-, STL-, glTF 2.0- ja GLB-tiedostoja; lue FBX-tiedostoja.
Pika-aloitus
Maven-asennus
Lisää seuraava riippuvuus omaan pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Ensimmäinen muunnoksesi
Yksinkertaisin käyttötapa on ladata 3D-tiedosto yhdessä formaatissa ja tallentaa se toiseen. Tässä on kaksirivinen muunnos OBJ:stä STL:ään:
import com.aspose.threed.*;
public class QuickConvert {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("cube.obj");
scene.save("output.stl");
}
}
Se Scene luokka on keskeinen sisäänkäyntipiste. Kutsu Scene.fromFile() tiedostopolulla ladataksesi mallin, sitten kutsu save() kohdepolulla. Kirjasto päättelee formaatin tiedostopäätteestä.
Scene-olion rakentaminen alusta alkaen
Voit myös luoda sceneja ohjelmallisesti:
import com.aspose.threed.*;
public class BuildScene {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("Box");
Transform t = node.getTransform();
t.setTranslation(1, 2, 3);
scene.save("scene.gltf");
}
}
Tämä luo uuden scenen, lisää juuren alle lapsisolmun nimeltä “Box”, asettaa sen koordinaatteihin (1, 2, 3) ja vie tuloksen glTF-tiedostona.
Lataaminen formaattikohtaisten asetusten avulla
Kun tarvitset tarkempaa hallintaa latausprosessiin, jokainen formaatti tarjoaa oman asetusluokkansa. Esimerkiksi STL‑tiedoston lataaminen eksplisiittisillä asetuksilla:
import com.aspose.threed.*;
public class LoadWithOptions {
public static void main(String[] args) throws Exception {
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
// Inspect the loaded scene
System.out.println("Root children: "
+ scene.getRootNode().getChildNodes().size());
// Re-export as OBJ
scene.save("part.obj");
}
}
The Scene.fromFile() staattinen metodi hyväksyy minkä tahansa latausvaihtoehdon tyypeistä: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, tai FbxLoadOptions.
Kohtausgrafin läpikäynti
Kun kohtaus on ladattu, voit käydä läpi solmupuun tarkastellaksesi tai muokataksesi sen sisältöä:
import com.aspose.threed.*;
public class TraverseScene {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("model.gltf");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println("Node: " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: " + t.getTranslation());
Entity entity = child.getEntity();
if (entity instanceof Mesh) {
Mesh mesh = (Mesh) entity;
System.out.println(" Vertices: "
+ mesh.getControlPoints().size());
}
}
}
}
Tämä malli on hyödyllinen virheenkorjaukseen, raporttien luomiseen mallin sisällöstä tai kohtauksen osien valikoimaiseen muokkaamiseen ennen uudelleenvientiä.
Transformaatioiden soveltaminen
Solmujen sijoittaminen 3D-tilassa tehdään kautta Transform objektin jokaisessa Node:
import com.aspose.threed.*;
public class TransformExample {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node parent = scene.getRootNode().createChildNode("Parent");
parent.getTransform().setTranslation(10, 0, 0);
Node child = parent.createChildNode("Child");
child.getTransform().setTranslation(5, 0, 0);
child.getTransform().setScale(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.save("transformed.gltf");
}
}
Transformaatioiden noudattama standardi vanhempi‑lapsi perimismalli: lapsen maailmanavaruuden sijainti on sen paikallisen transformaation ja kaikkien esi-isätransformaatioiden yhdistelmä juureen asti.
Mitä sisältyy
Kirjasto toimitetaan keskittyneellä ominaisuuksien paketilla, joka on suunniteltu 3D‑kohtausgrafiikkamallin ympärille.
Kohtausgrafi
Kohtausgrafi on API:n selkäranka. Jokainen 3D‑tiedosto esitetään puumaisena rakenteena:
| Luokka | Rooli |
|---|---|
Scene | Ylätason säiliö; kohtausgraafin juuri |
Node | Nimetty sijainti puussa; sisältää muunnokset ja alisolmut |
Entity | Abstrakti perusta solmuihin liitetylle visuaaliselle objektille |
Mesh | Polygoninen geometria – kärjet, pinnat, normaalit |
Camera | Virtuaalisen kameran määritelmä |
Transform | Paikallinen siirto, kierto ja skaalaus solmulle |
GlobalTransform | Laskettu maailmanavaruuden muunnos |
Materiaalit
Kirjasto tarjoaa PBR (Physically Based Rendering) -materiaalimallin:
- PbrMaterial – fysikaalisesti perustuva renderöintimateriaali, jossa on albedo, metallisuus, karheus, säteilevä väri ja läpinäkyvyys. Tämä on ainoa konkreettinen materiaaliluokka, joka on saatavilla Java-versiossa.
Matematiikkatyökalut
Se com.aspose.threed paketti sisältää olennaisia matemaattisia primitiivejä:
- Vector3 – 3-komponenttinen vektori sijainneille, suunnille ja väreille.
- Matrix4 – 4x4-muunnosmatriisi.
- Quaternion – kierron esitys.
- BoundingBox – akselisuunnassa oleva raja-alue spatiaalisiin kyselyihin.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Lataus- ja tallennusasetukset
Jokaisella formaatilla on omat asetusluokkansa, joiden avulla voit hallita tuonti- ja vientikäyttäytymistä:
| Muoto | Lataa asetukset | Tallenna asetukset |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | – (vain tuonti) |
Esimerkiksi viedäksesi glTF:n kauniisti muotoillulla JSONilla ja käännetyllä koordinaatistojärjestelmällä:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Tuetut formaatit
Seuraava taulukko tiivistää ne formaatit, jotka Aspose.3D FOSS for Java voi lukea ja kirjoittaa.
| Muoto | Laajennus | Tuo | Vie | Muistiinpanot |
|---|---|---|---|---|
| OBJ | .obj | Kyllä | Kyllä | MTL-materiaaleilla |
| STL | .stl | Kyllä | Kyllä | Binääri + ASCII |
| glTF 2.0 | .gltf | Kyllä | Kyllä | JSON-muoto |
| GLB | .glb | Kyllä | Kyllä | Binäärinen glTF GltfSaveOptionsin avulla |
| FBX | .fbx | Kyllä | Ei | Vain tuonti |
OBJ, STL, glTF ja GLB tukevat sekä lataamista että tallentamista. FBX on tuettu vain tuontiin.
Formaattivalinnan opas
Oikean formaatin valinta riippuu käyttötapauksestasi:
- OBJ on ihanteellinen, kun tarvitset maksimaalista yhteensopivuutta eri 3D-työkalujen välillä. Lähes jokainen mallinnusohjelma osaa lukea ja kirjoittaa OBJ-tiedostoja. Se toimii hyvin mesh-tietojen vaihtoon, mutta sisältää vain perusmateriaalitiedot MTL-tiedostojen kautta.
- STL on 3D-tulostusprosessien ensisijainen formaatti. Se tallentaa raakan kolmioituneen geometrian ilman materiaaleja tai kohtaushierarkiaa, mikä on juuri se, mitä leikkausohjelmistot odottavat. Jos työnkulku päättyy 3D-tulostimeen, STL on selkeä valinta.
- glTF on moderni standardi verkossa ja reaaliaikaisessa 3D:ssä. Se tukee PBR-materiaaleja, täysiä kohtaushierarkioita, ja on suunniteltu tehokkaaseen siirtoon. Käytä glTF:ää rakentaessasi web-pohjaisia katselijoita, työskennellessäsi three.js:n tai Babylon.js:n kanssa tai kohdistuessasi mihin tahansa reaaliaikaiseen renderöintiputkeen.
- FBX on syvästi integroitunut pelikehitykseen ja digitaalisen sisällön luomistyönkulkuun. Se tukee rikasta kohtausdataa, mukaan lukien hierarkiat ja materiaalit. Aspose.3D FOSS for Java tukee FBX vain tuonti – käytä sitä FBX‑resurssien lataamiseen ja niiden muuntamiseen muihin formaatteihin.
Tunnetut rajoitukset
On tärkeää huomata, että Scene.render() on ei ole tuettu FOSS-versiossa. Tämän metodin kutsuminen heittää UnsupportedOperationException. Kirjasto on suunniteltu tiedostopohjaiseen 3D-käsittelyyn – lataamiseen, muokkaamiseen, muuntamiseen ja mallien tallentamiseen – sen sijaan, että se tekisi reaaliaikaista renderöintiä näytölle.
Avoin lähdekoodi ja lisensointi
Aspose.3D FOSS for Java on julkaistu MIT-lisenssi. Tämä tarkoittaa, että olet vapaa:
- Käyttää kirjastoa kaupallisissa ja omistusoikeudellisissa sovelluksissa.
- Muokata lähdekoodia tarpeidesi mukaan.
- Jakaa kirjasto osana omaa ohjelmistoasi.
Ei ole rojaltimaksuja, käyttörajoituksia eikä nimeämisvaatimuksia MIT-lisenssin määrittelemän lisäksi.
Koko lähdekoodi on isännöity GitHubissa, ja kontribuutiot ovat tervetulleita: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Järjestelmävaatimukset
| Vaatimus | Yksityiskohta |
|---|---|
| Java versio | 21 or later |
| Riippuvuudet | Ei (puhtaan Java) |
| Alustat | Mikä tahansa alusta, joka suorittaa JVM:n |
| Rakennustyökalu | Maven (suositeltu) |
Aloittaminen
Tässä ovat resurssit, jotka auttavat sinua pääsemään alkuun:
- Dokumentaatio – kattavat oppaat ja API-kävelyt ovat saatavilla Aspose.3D dokumentaatiosivusto.
- Tietopankki – käytännön ohjeartikkelit ja vianmääritysvinkit Aspose.3D KB.
- API-viite – yksityiskohtainen luokka- ja metodiviite Aspose.3D API-viite.
- Lähdekoodi – selaa ja osallistu GitHub.
- Maven Central – paketti on julkaistu muodossa
com.aspose:aspose-3d-fossMaven Centralissa.
Yleiset käyttötapaukset
Tässä on joitakin käytännön tilanteita, joissa Aspose.3D FOSS for Java sopii hyvin:
Formaattimuunnosputket
Monet tiimit saavat 3D‑omaisuuksia yhdessä formaatissa, mutta tarvitsevat ne toisessa. Suunnittelutiimi saattaa työskennellä FBX‑muodossa, kun taas web‑tiimi tarvitsee glTF:n. Kirjasto mahdollistaa automatisoitujen muunnosputkien rakentamisen:
// Convert all incoming FBX assets to GLB for the web team
Scene scene = Scene.fromFile("asset.fbx");
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("asset.glb", opts);
3D Model Inspection and Validation
Ennen kuin integroit 3D‑omaisuuden sovellukseesi, saatat haluta tarkistaa sen sisällön – tarkastamalla solmujen määrän, varmistamalla geometrian tai vahvistamalla, että odotetut elementit ovat läsnä:
Scene scene = Scene.fromFile("model.obj");
int nodeCount = scene.getRootNode().getChildNodes().size();
System.out.println("Top-level nodes: " + nodeCount);
for (Node child : scene.getRootNode().getChildNodes()) {
if (child.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) child.getEntity();
System.out.println(child.getName() + ": "
+ mesh.getControlPoints().size() + " vertices");
}
}
Kohtauksen kokoaminen
Voit ladata useita malleja ja yhdistää ne yhdeksi kohtaukseksi:
Scene scene = new Scene();
Scene part1 = Scene.fromFile("chassis.obj");
Scene part2 = Scene.fromFile("wheels.obj");
// Add nodes from each part into the combined scene
for (Node child : part1.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
for (Node child : part2.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
scene.save("assembled.gltf");
Mitä seuraavaksi
Tulevissa julkaisuissa käsittelemme:
- Syväluotaus kohtausgrafiikka-API:n, materiaalien ja matemaattisten apuohjelmien keskeisiin ominaisuuksiin.
- Käytännön opas jokaisen tuetun 3D-muodon – OBJ, STL, glTF, ja FBX – kanssa työskentelyyn, sisältäen lataus-/tallennusvaihtoehdot ja erämuunnosmallit.
Pysy kuulolla, ja ole vapaa tutustumaan kirjastoon sekä jakamaan palautteesi GitHubissa.