Ú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átRozšířeníČíst →Píše
FBX (ASCII a binární, 6.x-7.x).fbxAno anoNe
GTS 1.0 / 2.0.gltfAno anoAno ano
GTTF binární.glbAno anoAno ano
Vlaková hřbitov OBJ.objAno anoAno ano
STL (ASCII a binární).stlAno anoAno 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