Jsme rádi, že jsme se dozvěděli dostupnost 3D FOSS pro Java - knihovna zdarma, open-source pro práci s 3D formáty souborů v aplikacích Java. Postaven jako čisté řešení Java bez závislosti na původu, knihovna běží na Java 21 a později, což je přístupné k širokému spektru projektů a prostředí.
Tento příspěvek se zabývá tím, co knihovna nabízí, jak začít a kam jít.
Co je to 3D FOSS pro Java?
Aspose.3D FOSS pro Java je lehká 3D knihovna zpracování souborů publikovaná v rámci Licence MÍ.Zajišťuje scénogram API, který vám umožňuje nahrávat, kontrolovat, transformovat a ukládat 3D modely v několika široce používaných formátech. knihovna je plně napsána v Java a nevyžaduje žádné externí domorodé binary nebo platformové specifické konfigurace.
Kód je k dispozici na GitHub: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java / Zobrazit více informací
Klíčové zvýšení
- Čistá Java - žádné JNI, žádné domorodé knihovny, žádná omezení platformy.
- Java 21+ a kompatibilní.
- Mít licencované - použít je v osobních, obchodních nebo vlastnických projektech bez omezení.
- Scénogram architektury - známý strom uzlin, mezet, kamer a materiálů.
- Multiformátová podpora - číst a psát OBJ, STL, glTF 2.0 a GLB soubory; čtení FBX souborů.
rychlý start
Maven instalace
Přidejte následující závislost na vašem pom.xml:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Vaše první konverze
Nejjednodušší případ použití je načítání 3D souboru v jednom formátu a uložení do jiného. zde je dvojí konverze 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 Klasa je ústředním vstupním bodem. volání Scene.fromFile() s cestou souboru k načtení modelu, pak volejte save() s cílovou cestou. knihovna vloží formát z rozšíření souboru.
Vytvoření scény ze Scratch
Můžete také vytvořit scény programováním:
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áří novou scénu, přidává dětský uzel s názvem “Box” pod kořenem, umístí ho na koordináty (1, 2, 3), a exportuje výsledek jako glTF soubor.
Nabíjení s formátovými specifickými možnostmi
Když potřebujete lepší kontrolu nad procesem nabití, každý formát poskytuje třídu možností. Například, nahrávání souboru STL s výslovnými možnostmi:
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á metoda akceptuje jakýkoli typ opce zařazení: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,nebo FbxLoadOptions.
Přes scénickou grafiku
Jakmile je scéna nabitá, můžete procházet stromem node a zkontrolovat nebo upravit jeho obsah:
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žitečný pro debuzování, generování zpráv o obsahu modelu nebo selektivně mění části scény před opětovným vývozem.
Přijímání transformátorů
Posuzování uzlin v 3D prostoru se provádí prostřednictvím Transform Objekt na každém 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 následují standardní model dědictví rodičů a dětí: světové prostorové postavení dítěte je kombinací jeho místního transformace a každý předek se transformuje až do kořene.
Co je zahrnuto
Knihovna plavidla s zaměřeným souborem možností navržených kolem 3D scénografického modelu.
Scénář grafu
Graf scény je záda API. Každý 3D soubor je reprezentován jako stromová struktura:
| třída | Role |
|---|---|
Scene | Kontejner na nejvyšší úrovni; kořen scénického grafu |
Node | Jmenovaná poloha v stromu; drží transformy a dětské uzly |
Entity | Abstraktní základ pro vizuální objekty připojené k uzlinám |
Mesh | Polygonální geometrie - vertikály, obličeje, normálové |
Camera | Definice virtuální kamery |
Transform | Lokální překlad, rotace a měřítko pro nůž |
GlobalTransform | Světová transformace v počítačovém prostoru |
Materiály
Knihovna poskytuje materiálový model PBR (Fyzicky založené renderování):
- PbrMaterial - fyzicky založený renderovací materiál s albedo, kovovou tvarem, hrubostí, emisií barvy a průhledností.Toto je jediná třída konkrétních materiálů dostupná v Java edice.
Matematické užitky
a to com.aspose.threed Součástí balíčku jsou základní matematické primitivy:
- Vektor 3 - 3 komponentní vektor pro polohy, směry a barvy.
- Matrix 4 4x4 transformace matriky.
- Kvadranty - rotační reprezentace.
- BoundingBox - okrajová krabička pro prostorové dotazy.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Nabíjení a uložení možností
Každý formát má speciální třídy možností, které vám umožní kontrolovat chování dovozu a vývozu:
| Formát | Nabíjecí možnosti | Shromažďování možností |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GLTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (pouze v případě dovozu) |
Například export glTF s pěkně vytisknutým JSON a flipped koordinátní systém:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Podporované formáty
Následující tabulka shrnuje formáty, které Aspose.3D FOSS pro Java může číst a psát.
| Formát | Rozšíření | dovozu | Vývoz | Poznámky |
|---|---|---|---|---|
| OBJ | .obj | Ano ano | Ano ano | S MTL materiály |
| STL | .stl | Ano ano | Ano ano | Binární + ASCII |
| GTTF 2.0 | .gltf | Ano ano | Ano ano | JSON formát |
| GLB | .glb | Ano ano | Ano ano | Binární glTF prostřednictvím GltfSaveOptions |
| FBX | .fbx | Ano ano | Ne | pouze dovoz |
OBJ, STL, glTF a GLB podporují jak nabíjení, tak úsporu. FBX je podporován pouze pro dovoz.
Formát výběrového průvodce
Výběr správného formátu závisí na vašem použití:
- OBJ je ideální, když potřebujete maximální kompatibilitu přes 3D nástroje. Téměř každá aplikace modelování může číst a psát OBJ. To funguje dobře pro výměnu dat mezh ale přináší pouze základní materiální informace prostřednictvím souborů MTL společníka.
- STL je formát volby pro 3D tiskové pracovní toky. Uloží surovou triangulovanou geometrii bez materiálů nebo hierarchie scény, což je přesně to, co od slider software očekává. Pokud se váš potrubí končí na 3d tiskárně, STL je jednoduchá volba.
- Gltf je moderní standard pro web a 3D v reálném čase. podporuje PBR materiály, plné scénické hierarchie, a je navržen pro efektivní přenos. Použijte glTF při budování webových prohlížečů, pracovat s three.js nebo Babylon.js, nebo cílování jakékoli trubice rendering v realovém čase .
- FBX je hluboce integrovaný do herního rozvoje a digitálního vytváření obsahu pracovních toků. podporuje bohaté scénní údaje včetně hierarchie a materiálů . Aspose.3D FOSS pro Java podporují FBX pouze dovoz - použijte ho k načtení aktiv FBX a konvertujte je do jiných formátů.
Známé omezení
Je důležité si uvědomit, že Scene.render() Je to Nepodporuje se V tomto článku se dozvíte, že tento způsob hodí do UnsupportedOperationException.Knihovna je navržena pro 3D zpracování na bázi souborů - načítání, manipulace, transformace a úspory modelů – namísto reálného renderování displeje.
Open Source a licence
Aspose.3D FOSS pro Java je vydán pod Licence MIT.To znamená, že jste svobodní:
- Využijte knihovnu v komerčních a vlastních aplikacích.
- Změňte zdrojový kód, aby vyhovoval vašim potřebám.
- Rozdělte knihovnu jako součást vlastního softwaru.
Neexistují žádné poplatky za royalty, žádné omezení používání a žádná požadavky na přidělení mimo to, co MIT licence stanoví.
Celý zdrojový kód je hostován na GitHub a příspěvky jsou vítány: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java / Zobrazit více informací
Systémové požadavky
| Požadavek | Detailní |
|---|---|
| Java verze | 21 or later |
| závislost | Není to čistá Java (Java) |
| platformy | Jakákoli platforma, která běží na JVM |
| Stavba nástroje | Maven (důležité pro použití) |
Začíná se
Zde jsou zdroje, které vám pomohou vstát a běhat:
- Dokumentace - komplexní průvodce a API chodníky jsou k dispozici na Webová stránka ASPOSE.3D.
- znalostní základna - praktické jak-to články a řešení problémů tipy v Třetí díl 3D KB.
- Reference API - podrobná třída a metodická reference na Aspose.3D API Reference.
- zdrojový kód - přehrávat a přispívat k GitHub.
- Maven Centrální - balíček je zveřejněn jako
org.aspose:aspose-3d-foss:26.5.0V centru Maven.
běžné případy použití
Zde jsou některé praktické scénáře, kde Aspose.3D FOSS pro Java dobře vyhovuje:
Formát konverzní potrubí
Mnoho týmů dostává 3D aktivy v jednom formátu, ale potřebuje je v jiném. Projektový tým může pracovat na FBX a webový tím potřeboval glTF. Knihovna vám umožňuje vytvořit automatizované konverzní potrubí:
// 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
Před začleněním 3D aktiv do aplikace můžete chtít ověřit jeho obsah - kontrolovat počty uzlin, ověření geometry nebo potvrdit, že očekávané prvky jsou přítomny:
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énář shromáždění
Můžete si stáhnout několik modelů a spojit je do jedné 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");
Co je následující
V nadcházejících příspěvcích se budeme zabývat:
- Hluboké potápění do klíčových funkcí scénografického API, materiálů a matematických nástrojů.
- Praktický průvodce pro práci s každým podporovaným 3D formátem - OBJ, STL, glTF a FBX - včetně možností nabíjení / ušetření a konverzních vzorů.
Zůstaňte vyčerpaní a cítit se svobodně prozkoumat knihovnu a sdílet své zpětné vazby na GitHub.