Zaujímavosťou sme sa dozvedeli o dostupnosti Aspose.3D FOSS pre Java - knižnica s voľným, open-source pre prácu s 3D formátmi súborov v aplikáciách Java. postavený ako čisté riešenie Java bez domorodých závislostí, kniha beží na Java 21 a neskôr, čo ju umožňuje prístup k širokému rozsahu projektov a prostredí.
Tento príspevok sa prechádza tým, čo knižnica ponúka, ako začať a odkiaľ ísť.
Čo je to Aspose.3D FOSS pre Java?
Aspose.3D FOSS pre Java je ľahká 3D knižnica spracovania súborov, ktorá bola publikovaná v rámci programu MIT licenčné.Poskytuje scénogram API, ktorý vám umožňuje nahrať, skontrolovať, transformovať a uložiť 3D modely v niekoľkých široko používaných formátoch. knižnica je úplne napísaná v Java a nevyžaduje žiadne externé domorodé binárne alebo platformové špecifické konfigurácie.
Kód je k dispozícii na GitHub: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java / Zoznam stránok pre webovú stránku
Kľúčové zvýraznenie
- Čistá Java - žiadne JNI, žiadne domáce knižnice, žiadny platforma obmedzenia.
- Java 21+ a kompatibilný .
- MIT licencované - používať ho v osobných, obchodných alebo vlastných projektoch bez obmedzení.
- Scénogram architektúry - známy strom uzlín, mäsov, kamier a materiálov.
- Multiformátová podpora - čítať a písať OBJ, STL, glTF 2.0 a GLB súbory; čítajte FBX súborov.
rýchly štart
Maven inštalácia
Pridajte nasledujúcu závislosť k vašej pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Vaša prvá konverzia
Najjednoduchší prípad použitia je nahrávanie 3D súboru v jednom formáte a ukladanie ho v inom. Tu je dvojstránka konverzie z OBJ na STL:
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");
}
}
a to Scene Vstupná časť je centrálna. volanie Scene.fromFile() s súborovou trasou na stiahnutie modelu, potom volajte save() s cieľovou cestou. knižnica infúzi formát z rozšírenia súboru.
Vytvorenie scény z Scratch
Môžete tiež vytvoriť scény programaticky:
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");
}
}
To vytvára novú scénu, pridáva detský uzol s názvom “Box” pod koreňom, umiestňuje ho na koordináty (1, 2, 3), a exportuje výsledok ako súbor glTF.
- nabíjanie s formátovými špecifickými možnosťami
Keď potrebujete lepšiu kontrolu nad procesom načítania, každý formát poskytuje špecifickú triedu možností. Napríklad, načítajte súbor STL s explicitnými možnosťami:
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");
}
}
a to Scene.fromFile() statická metóda akceptuje niektorý z typov opcií zaťaženia: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,alebo FbxLoadOptions.
Prechádzka scénou grafom
Po nahrávaní scény môžete prejsť stromom uzla na kontrolu alebo úpravu jeho obsahu:
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());
}
}
}
}
Tento vzor je užitočný pri devízovaní, generácii správ o obsahu modelu alebo selektívnej úprave častí scény pred re-exportovaním.
Používanie transformácií
Posilňovanie uzlín v 3D priestore sa vykonáva prostredníctvom Transform Objekt na každom 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");
}
}
Transformy nasledujú štandardný model dedičstva rodičov-deti: svetovo-vzdušná pozícia dieťaťa je kombináciou jeho miestnej transformácie a všetci predkovia sa transformujú až do korene.
Čo je zahrnuté
Knižnica plavidlo so zameraným súborom schopností navrhnutých okolo 3D scénografický model.
Scénár graf
Graf scény je chrbtom API. Každý 3D súbor je reprezentovaný ako stromová štruktúra:
| triedy | Rola |
|---|---|
Scene | Najvyššia úroveň kontajner; koreň scénovej grafu |
Node | Názov pozície v strome; drží transformácie a detské uzly |
Entity | Abstraktná základňa pre vizuálne objekty pripojené k uzámkam |
Mesh | Polygonálna geometria - vertikálne, tváre, normály |
Camera | Definícia virtuálnej kamery |
Transform | Lokálna preklad, rotacia a škála na uzol |
GlobalTransform | Informatická transformácia svetového priestoru |
Materiály
Knižnica poskytuje materiálový model PBR (Fyzicky založené renderovanie):
- PbrMaterial - fyzicky založený renderingový materiál s albedo, kovivosť, hrubosť, emisiovej farby a transparentnosť. to je jediná klasika konkrétneho materiálu k dispozícii v Java vydaní.
Matematické užitočné
a to com.aspose.threed V balení sa nachádzajú základné matematické primity:
- Vektor 3 - 3-komponentný vecor pre pozície, smery a farby.
- Matrix4 - 4x4 transformácia matrix.
- štvrťročné - rotačná reprezentácia.
- BoundingBox - okrajová bočná krabica pre priestorové dotazy.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Nahrať a uložiť možnosti
Každý formát má špeciálne triedy, ktoré vám umožnia ovládať dovoz a vývoz správania:
| formátovanie | Opcionálne nabíjanie | Získajte možnosti |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GST / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (vhodné len na dovoz) |
Napríklad na export glTF s jemne tlačeným JSON a flipped koordinátnym systémom:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Podporované formáty
Nasledujúca tabuľka zhromažďuje formáty, ktoré Aspose.3D FOSS pre Java môže čítať a písať.
| formátovanie | rozšírenie | dovoz | Vývoz | poznámky |
|---|---|---|---|---|
| OBJ | .obj | Áno | Áno | - s materiálmi MTL |
| STL | .stl | Áno | Áno | Binárne + ASCII |
| GTTF 2.0 | .gltf | Áno | Áno | JSON formát |
| GLB | .glb | Áno | Áno | Binárne glTF prostredníctvom GltfSaveOptions |
| FBX | .fbx | Áno | No nie | dovoz iba |
OBJ, STL, glTF a GLB podporujú aj nabíjanie a úspory. FBX je podporovaný len na dovoz.
Formát výberového sprievodcu
Výber správneho formátu závisí od vášho použitia:
- OBJ je ideálny, keď potrebujete maximálnu kompatibilitu cez 3D nástroje. takmer každá aplikácia modelovania môže čítať a písať OBJ. funguje dobre pre výmenu dát v mesh ale nesie len základné materiálne informácie prostredníctvom súborov MTL spoločníka.
- STL je formát voľby pre 3D tlače pracovných tokov. Uloží surovú triangulovanú geometriu bez materiálov alebo hierarchie scény, čo je presne to, na čo softvér slider očakáva. Ak sa váš potrubí končí s 3d tlačiarňou, STL je jednoduchá voľba.
- Gltf je moderný štandard pre web a reálne 3D. Podporuje PBR materiály, plné hierarchie scény a je navrhnutý na efektívnu prenos. Použite glTF pri budovaní web-založené divákov, pracovať s three.js alebo Babylon.JS, alebo cielením akéhokoľvek reálneho času rendering potrubia.
- FBX je hlboko integrovaný do vývojových hier a digitálnych pracovných tokov tvorby obsahu. podporuje bohaté scénové údaje vrátane hierarchie a materiálov. Aspose.3D FOSS pre Java podporí FBX import iba - používať ho na nahrávanie aktív FBX a ich konverziu do iných formátov.
Známe obmedzenia
Je dôležité poznamenať, že Scene.render() je Nepodporuje sa v FOSS vydanie. volanie tejto metódy bude hádzať UnsupportedOperationException.Knižnica je navrhnutá pre 3D spracovanie na báze súborov - nahrávanie, manipulácia, transformácia a úspora modelov – namiesto reálneho času renderovania displeja.
Open Source a licencovanie
Aspose.3D FOSS pre Java je vydaný pod MIT licenčné.To znamená, že ste slobodní:
- Použite knižnicu v komerčných a vlastných aplikáciách.
- Zmeňte zdrojový kód, aby sa prispôsobilo vašim potrebám.
- Rozdeľte knižnicu ako súčasť vlastného softvéru.
Neexistujú žiadne poplatky za kráľovstvo, žiadne limity používania a žiadne požiadavky na pridelenie mimo to, čo MIT licencia stanovuje.
Kód je hostovaný na GitHub a príspevky sú vítané: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java / Zoznam stránok pre webovú stránku
Systémové požiadavky
| Požiadavky | Detailné |
|---|---|
| Java verzia | 21 or later |
| závislosť | Čistá Java (Pure Java) |
| Platforma | Akákoľvek platforma, ktorá spúšťa JVM |
| Vytvorte nástroj | Maven (odporúčané ) |
Začať sa
Tu sú zdroje, ktoré vám pomôžu vstávať a bežať:
- dokumentácia - komplexné sprievodcovia a API chodníky sú k dispozícii na Aspose.3D dokumentácia webové stránky.
- znalostná základňa - praktické ako-to články a riešenie problémov tipy v Zľavy3D KB.
- Referenčné API - podrobné referencie triedy a metódy na Aspose.3D API Referencia.
- zdrojový kód - prehľadávať a prispievať k GitHub.
- Maven Centrálne - balík je publikovaný ako
com.aspose:aspose-3d-fossV centre Maven.
bežné prípady použitia
Tu sú niektoré praktické scenáre, kde Aspose.3D FOSS pre Java dobre vyhovuje:
Formát konverzie potrubia
Mnohé tímy dostávajú 3D aktíva v jednom formáte, ale potrebujú ich v inom. Projektový tím môže pracovať na FBX a webový tým potrebuje glTF. Knižnica vám umožňuje vytvoriť automatizované konvertné potrubia:
// 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
Pred začlenením 3D aktivy do aplikácie môžete požadovať overenie jej obsahu - kontrolu počtu uzlín, overovanie geometry alebo potvrdenie prítomnosti očakávaných prvkov:
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");
}
}
Scénická schôdza
Môžete si nainštalovať viacero modelov a kombinovať ich do jednej scény:
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");
Čo je nasledujúce
V nadchádzajúcich článkoch budeme pokrývať:
- Hlboké potápanie do kľúčových funkcií API scénogram, materiály a matematické nástroje.
- Praktický sprievodca pracovať s každým podporovaným 3D formátom - OBJ, STL, glTF a FBX - vrátane možností nabíjania / ušetrenia a konverzie batchových vzorov.
Zostaňte vyčerpaní a cítiť sa slobodne preskúmať knižnicu a zdieľať svoje spätné väzby na GitHub.