Úvod
Práce s 3D obsahem v Java obvykle vyžaduje výběr mezi těžkou váhou herní motory a bare-bones matematické knihovny. aspose-3d-foss Pako nabízí A střední podlahy: soustředěný scénogram API, který spravuje soubory I/O, hierarchie uzlin, konstrukce a koordinace transformací bez přitáhání v renderování Pipe nebo domácí závislost.
Aspose.3D FOSS pro Java je otevřený zdroj knihovny distribuované pod MIT licence. poskytuje 80 tříd rozšiřující scénní management, geometrie, materiály a formát konverze. knihovna čte FBX, glTF/GLB, Wavefront OBJ a STL, a píše gltF / GLB a OBG (Export FBX není implementována), což z něj činí praktické pro server-side 3D zpracování, stavební nástroj integrace a datové převodovky, které běží na Java 21 nebo později.
Tento příspěvek prochází schopnostmi řízení scény v knihovně: jak postavit scénu z skraje, populovat ji s geometrií a transformací a exportovat výsledek na disk.
Co je zahrnuto
Grafické scény základy
a to Scene třída je kořenový kontejner pro každý 3D dokument. Node, metadata aktiv, animace klipy a podskene. můžete vytvořit prázdný zobrazit a pak ho populovat, nebo stáhnout existující soubor s Scene.fromFile.
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
Scene scene = new Scene();
Node root = scene.getRootNode();
// Add named child nodes to build a hierarchy
Node chassis = root.createChildNode("Chassis");
Node wheel = chassis.createChildNode("FrontLeftWheel");
Každý Node Může držet jeden Entity (tak jako je A Mesh nebo Cameraa) A Transform, seznam materiálů a další dětské uzly. stromová struktura Zobrazuje obrazový graf používaný většinou 3D nástrojů.
Mesh stavba
a to Mesh třída umožňuje definovat geometrii z kontrolních bodů a polygonu Zobrazit: Přidat vertikály s addControlPoint,a pak je spojit do tváří, s createPolygon.
import com.aspose.threed.Mesh;
Mesh box = new Mesh("Box");
// Define eight corners of a cube
box.addControlPoint(0, 0, 0);
box.addControlPoint(1, 0, 0);
box.addControlPoint(1, 1, 0);
box.addControlPoint(0, 1, 0);
box.addControlPoint(0, 0, 1);
box.addControlPoint(1, 0, 1);
box.addControlPoint(1, 1, 1);
box.addControlPoint(0, 1, 1);
// Create quad faces
box.createPolygon(0, 1, 2, 3); // back
box.createPolygon(4, 5, 6, 7); // front
box.createPolygon(0, 4, 7, 3); // left
box.createPolygon(1, 5, 6, 2); // right
box.createPolygon(3, 2, 6, 7); // top
box.createPolygon(0, 1, 5, 4); // bottom
scene.getRootNode().createChildNode("Box", box);
Mezi požáry patří triangulate(), optimize(removeVertices),A to Boolean operace (union, difference, intersect(a) tyto metody jsou v aktuální uvolnění – vrátí klon vstupní mezy bez provedení a tzv. operaci.
Transformace a pozicionování
Každý z nich Node Přenášejí A Transform ovládá jeho lokální překlad, rotaci, Tyto složení přes hierarchii tak, aby se pohyboval mateřský uzel Pohybuje všechny své děti.
import com.aspose.threed.Transform;
import com.aspose.threed.Node;
Node node = scene.getRootNode().createChildNode("Shifted");
Transform t = node.getTransform();
t.setTranslation(5.0, 0.0, -3.0);
t.setScale(2.0, 2.0, 2.0);
t.setEulerAngles(0, 45.0, 0);
Pro absolutní poloha dotazu, volání node.getGlobalTransform() aby se zachytil Složení GlobalTransform,nebo node.evaluateGlobalTransform(true) Aby se dostalo A Matrix4 To zahrnuje geometrické rozměry.
PBR materiály
a to PbrMaterial třída poskytuje fyzicky založené renderovací vlastnosti: albedo barva, kovový faktor, hrubost, emisiční barvy a transparentnost. Přidělejte materiál na nůž při vytváření dítěte.
import com.aspose.threed.PbrMaterial;
import com.aspose.threed.Vector4;
import com.aspose.threed.Vector3;
PbrMaterial mat = new PbrMaterial("RedMetal");
mat.setAlbedo(new Vector4(0.9, 0.1, 0.1, 1.0));
mat.setMetallicFactor(0.8);
mat.setRoughnessFactor(0.3);
mat.setEmissiveColor(new Vector3(0, 0, 0));
scene.getRootNode().createChildNode("Part", box, mat);
Formát detekce
a to FileFormat třída poskytuje statické vyhledávání a detekce nástroje. můžete Rozlišovat formát rozšířením souboru nebo prozkoumat tok identifikovat neznámé soubory.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
Koordinátní systém konverze
AxisSystem Umožňuje definovat up-axis, front-axi a úkonnost koordinace a následně počítá s Matrix4 Změna geometry mezi Konvence (například z systému Z-up pravou rukou až po Y-Up V levém rukou).
import com.aspose.threed.AxisSystem;
import com.aspose.threed.Axis;
import com.aspose.threed.CoordinateSystem;
import com.aspose.threed.Matrix4;
AxisSystem source = new AxisSystem(
CoordinateSystem.RIGHT_HANDED, Axis.Z_AXIS, Axis.Y_AXIS);
AxisSystem target = new AxisSystem(
CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.Z_AXIS);
Matrix4 conversion = source.transformTo(target);
rychlý start
Přidejte závislost na Maven:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Vytvořte si jednoduchou scénu a exportujte ji:
import com.aspose.threed.Scene;
import com.aspose.threed.Mesh;
import com.aspose.threed.Node;
import com.aspose.threed.StlSaveOptions;
import com.aspose.threed.FileContentType;
Scene scene = new Scene();
Mesh mesh = new Mesh("Triangle");
mesh.addControlPoint(0, 0, 0);
mesh.addControlPoint(1, 0, 0);
mesh.addControlPoint(0, 1, 0);
mesh.createPolygon(0, 1, 2);
scene.getRootNode().createChildNode("Shape", mesh);
StlSaveOptions opts = new StlSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("output.stl", opts);
Podporované formáty
| Formát | Rozšíření | Číst → | Píše |
|---|---|---|---|
| FBX (ASCII a binární, 6.x-7.x) | .fbx | Ano ano | Ne |
| GTS 1.0 / 2.0 | .gltf | Ano ano | Ano ano |
| GTTF binární | .glb | Ano ano | Ano ano |
| Vlaková hřbitov OBJ | .obj | Ano ano | Ano ano |
| STL (ASCII a binární) | .stl | Ano ano | Ano ano |
Každý formát je věnovaný LoadOptions a SaveOptions Podmínky (pro Příkladem je, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsa to vystavuje nastavení specifických formátů, jako je koordinátní systém a typ obsahu a výběru.
Open Source a licence
Aspose.3D FOSS pro Java je vydán pod MIT licencí. zdrojový kód je K dispozici na GitHub Aspose.3D-FOSS pro Java. Můžete použít, upravit a distribuovat knihovnu v komerčním a Nekomerční projekty bez omezení.
Začíná se
- Vývojářský průvodce - API chodníky a Použití vzorů
- znalostní základna Jak se dostat do článků a FAQ
- Reference API - plná třída a Metoda dokumentace