Ú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átovanierozšírenieČítaťPísať
FBX (ASCII a binárne, 6.x-7.x).fbxÁnoNo 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