Introduksjon

Arbeid med 3D-innhold i Java krever vanligvis å velge mellom tungvekt. spillmotorer og bare-bones matematiske biblioteker. aspose-3d-foss Pakken tilbyr A midterrunn: en fokusert scene-graf API som håndterer filer I/O, nod hierarkier, Mesh konstruksjon, og koordinere transformasjoner uten å trekke i en rendering Pipeline eller en innfødte avhengighetskjede.

Aspose.3D FOSS for Java er en åpen kildekode bibliotek distribuert under MIT lisens. Det gir 80 klasser spanning scene management, geometri, materialer og format konvertering. biblioteket leser FBX, glTF/GLB, Wavefront OBJ, og STL, samt skriver gltf/glb, OBj, och STl (FBX eksporten implementeres ikke), noe som gjør det praktisk for server-side 3D behandling, bygg-verktøy integrasjoner, and data-conversion pipelines running on Java 21 or later.

Denne artikkelen går gjennom scenen-styringskapasitetene i biblioteket: hvordan å bygge en scene fra skrape, populere den med geometri og transformasjoner, og eksportere resultatet til disk.


Hva er inkludert

Scene grafiske baser

Den Scene Klassen er røttekontinenten for hvert 3D-dokument. Node, eiendata, animasjon klipp og under-scener. Du kan lage en tom scenen og deretter populere den, eller laste opp en eksisterende fil med 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");

Hver av dem Node Kan holde en Entity (som en av Mesh eller Cameraa) A Transform, en liste over materialer, og ytterligere barns noder. trærstrukturen spejler scenen-grafikk mønster som brukes av de fleste 3D forfatterverktøy.

Mesh bygging

Den Mesh Klassen lar deg definere geometri fra kontrollpunkter og polygon. Du legger til vertikale med addControlPoint,Og koble dem til ansikter. Med 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);

I tillegg inkluderer brannbrannen triangulate(), optimize(removeVertices),Og Boolean Operasjonene (union, difference, intersectMen disse metodene er i stor grad den nåværende utgaven - de returnerer en klone av innsjekket uten å gjennomføre Den såkalte operasjonen.

Transformasjon og posisjonering

Hver av dem Node bærer A Transform som kontrollerer sin lokale oversettelse, rotasjon, Disse sammensetter gjennom hierarkien slik at det beveger en foreldre noder Han beveger alle barna sine.

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);

For absolutt posisjonering spørreundersøkelser, ringe node.getGlobalTransform() Å gjenfange Den sammensatte GlobalTransform,eller node.evaluateGlobalTransform(true) For å få en Matrix4 Dette inkluderer geometriske offset.

PBR materialer

Den PbrMaterial Klasse gir fysisk-baserte renderingegenskaper: albedo farge, metallfaktor, grusomhet, emissiv farg og gjennomsiktighet. Tildelt et materiale til en nod når du oppretter barnet.

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);

Format oppdagelse

Den FileFormat klasse gir statisk lookup og deteksjonsverktøy. du kan løse et format ved filutvidelse eller undersøke en strøm for å identifisere ukjente filer.

import com.aspose.threed.FileFormat;

FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead  = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();

Koordinat-system konvertering

AxisSystem Det er mulig å definere opp-aksis, front-axis og hånden av en samordnet system, og deretter beregne en Matrix4 For å forandre geometri mellom Konvensjoner (for eksempel, fra et Z-up høyre hånd system til en Y-ups Den ene venstre hånden).

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);

Snart start

Legg til Maven avhengighet:

<dependency>
  <groupId>com.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.1.0</version>
</dependency>

Lag en enkel scene og eksporter den:

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);

Støttet format

FormaterUtvidelseLesingSkriv ut
FBX (ASCII og binær, 6.x-7.x).fbxJa jaIkke
GF 1.0 / 2.0.gltfJa jaJa ja
GTTF binære.glbJa jaJa ja
Wavefront OBJ.objJa jaJa ja
STL (ASCII og binær).stlJa jaJa ja

Hver form har dedikert til LoadOptions og SaveOptions Underklasser (for å Et eksempel, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsDette viser Format-specifiske innstillinger som koordinat-system flipping og innholdstype og seleksjon.


Åpne kilder og lisens

Aspose.3D FOSS for Java er utgitt under MIT-lisens. tilgjengelig på GitHub Aspose.3D-FOSS for Java. Du kan bruke, endre og redistribuere biblioteket i kommersiell og Ikke-kommersielle prosjekter uten begrensninger.


Å bli startet