Úvod
Práca s 3D obsahom v Java zvyčajne vyžaduje výber medzi ťažkou váhou herné motory a bare-bones matematické knižnice. aspose-3d-foss balíček ponúka A stredná podlaha: sústredená API scénového grafu, ktorá spravuje súbory I/O, hierarchie uzlín, konštrukcia mäs a koordinácia transformácie bez vytiahnutia v renderovaní - potrubie alebo domáce závislosťové reťazce.
Aspose.3D FOSS pre Java je knižnica s otvoreným zdrojom distribuovaná pod licenciou MIT. Poskytuje 80 tried rozsah scénového manažmentu, geometrii, materiálov a formátovej konverzie. Knižnice číta FBX, glTF/GLB, Wavefront OBJ a STL a píše gltF / GLB a OBG (Export FBX nie je implementovaný), čo robí praktické pre server-side 3D spracovanie, integrovanie stavebných nástrojov, a datové konvertácie potrubia, ktoré sa spúšťa na Java 21 alebo neskôr.
Tento príspevok prechádza schopnosťami manažmentu scény v knižnici: ako vybudovať scénu z škrabanca, populovať ju s geometriou a transformáciami a exportovať výsledok na disk.
Čo je zahrnuté
Scénárna grafika základov
a to Scene trieda je koreňový kontajner pre každý 3D dokument. Node, metadata aktív, animácie klipy a podskene. môžete vytvoriť prázdny scénou a potom ho populovať, alebo nahrať existujúci súbor 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žať jeden Entity (ako je to s Mesh alebo Cameraa) A Transform, zoznam materiálov a ďalšie detské uzly. stromová štruktúra zrkadlo scenár-graph vzor použitý väčšinou 3D písanie nástroje.
Mesh stavba
a to Mesh trieda umožňuje definovať geometrie z kontrolných bodov a polygónu Zobrazí sa vertikálne s addControlPoint,Potom ich prepojte do tvárov. 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);
Medzi požiarmi patrí aj triangulate(), optimize(removeVertices),a Boolean operácie (union, difference, intersectTieto metódy sú však v aktuálne uvoľnenie - vrátia klon vstupnej masky bez vykonávania nazývaná operácia.
Transformácia a pozícia
Každý z nich Node nosí A Transform kontroluje jeho lokálny preklad, rotaciu, Tieto zloženie cez hierarchii tak, aby sa pohyboval rodičovský uzol Pohybuje všetky svoje deti.
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);
Pre absolútne pozícionovanie dotazu, volajte node.getGlobalTransform() aby sa zachytil Zloženie je GlobalTransform,alebo node.evaluateGlobalTransform(true) aby sa dostala A Matrix4 To zahŕňa geometrické offsety.
PBR materiály
a to PbrMaterial trieda poskytuje fyzicky založené renderovanie vlastnosti: albedo farba, kovový faktor, hrubosť, emisiová farebnosť a transparentnosť. Pri vytváraní dieťaťa pridajte materiál k uzlu.
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 detekcie
a to FileFormat trieda poskytuje statické vyhľadávanie a detekcie nástroje. môžete Rozpusťte formát rozšírením súboru alebo preskúmajte prúd, aby ste identifikovali neznáme súbory.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
koordinátový systém konverzie
AxisSystem umožňuje definovať up-axis, front-axi a údržbu koordinácia systému, potom počítať a Matrix4 Premeny geometry medzi konventy (napríklad z systému Z-up na pravú ruku až po Y-Up) Vľavo od jedného).
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);
rýchly štart
Pridajte závislosť Maven:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Vytvorte jednoduchú scénu a exportujte ju:
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átovanie | rozšírenie | Čítať | Písať |
|---|---|---|---|
| FBX (ASCII a binárne, 6.x-7.x) | .fbx | Áno | No nie |
| GTS 1.0 / 2.0 | .gltf | Áno | Áno |
| GTTF binárne | .glb | Áno | Áno |
| Vstupné OBJ | .obj | Áno | Áno |
| STL (ASCII a binárne) | .stl | Áno | Áno |
Každý formát je venovaný LoadOptions a SaveOptions Podkategória (pre Príkladom je, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsa to vystavuje nastavenia špecifické pre formát, ako je napríklad koordinátový systém a typ obsahu Vybrať si .
Open Source a licencovanie
Aspose.3D FOSS pre Java je vydaný pod licenciou MIT. zdrojový kód je K dispozícii na GitHub v Aspose.3D-FOSS pre Java. Môžete používať, modifikovať a redistribuovať knižnicu v komerčnom a Nekomerčné projekty bez obmedzení.
Začať sa
- Vývojový sprievodca - API prechádzky a Použitie vzorov
- znalostná základňa - Ako sa písať články a FAQ
- Referenčné API - plná trieda a Metóda dokumentácie