Uvod

Rad s 3D sadržajem u Java obično zahtijeva odabir između teške težine igračima i bar-bones matematičke knjižnice. aspose-3d-foss Podaci nude A srednje pod: fokusiran API scene-graph koji upravlja datotekom I/O, nod hierarhija, konstrukcija mješavine, i koordinirati transformacije bez povlačenja u rendering Cjelina ili lanca ovisnosti.

Aspose.3D FOSS za Java je knjižnica otvorenog izvora distribuirana pod MIT licencom. pruža 80 razreda obuhvaća upravljanje scenom, geometriju, materijale i konverziju formata. knjižnice čita FBX, glTF/GLB, Wavefront OBJ i STL, a piše gltF / GLB i OBG (fbx izvoz nije implementiran), što ga čini praktičnim za 3D obradu na strani servera, integriranje gradnje alata i pretvaranje podataka koji rade na Java 21 ili kasnije.

Ovaj post prolazi kroz sposobnosti upravljanja scenom u knjižnici: kako izgraditi scenu iz šljunčanja, populirati je geometrijom i transformama, a rezultat se izvodi na disk.


Što je uključeno

Grafički temeljni scenarij

I to je Scene Klasa je korijenski kontejner za svaki 3D dokument. Node, metadata imovine, animirani klipovi i podscene. možete stvoriti prazan prikaza i zatim ga popuniti, ili preuzeti postojeće datoteke 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");

Svaki Node Može držati jedan Entity (kao što je A Mesh ili Cameraa) A Transform, popis materijala, i dalje dječji čvorovi. drvna struktura ogledalo je uzorak scene-grafa koji se koristi većinom 3D alata za pisanje.

Mesh izgradnja

I to je Mesh razred omogućuje definiciju geometrije s kontrolnih točaka i poligona Slijedeći članakSljedeće: Dodajte vertikale s addControlPoint,Nakon toga ih povezujte u lice. sa 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);

U prijelazu ugasne vatre uključuje se triangulate(), optimize(removeVertices),i Boolean Upravljanje (union, difference, intersectMeđutim, te metode su u potpunosti usmjerene na trenutačno izdanje – vraćaju klon ulazne meshe bez izvršavanja i nazvanom operacijom.

Promjene i pozicioniranje

Svaki Node nosi A Transform koji kontrolira lokalni prijevod, rotaciju, Sastavljaju se kroz hierarhiju kako bi se premjestila roditeljska čvorica. Pokreće sve svoje djece.

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

Za sve postavljene pitanja, pozivajte node.getGlobalTransform() da se povuče Sastavljena je GlobalTransform,ili node.evaluateGlobalTransform(true) da bi dobio A Matrix4 To uključuje geometrijske opseže.

PBR materijali

I to je PbrMaterial razred pruža fizički temeljene svojstva renderiranja: albedo boja, metalni faktor, gruboća, emisija boje i transparentnost. Dodijelite materijal u čvor prilikom stvaranja djeteta.

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

Detekcija formata

I to je FileFormat razred pruža statske pretraživanja i detekcije utiliteta. možete rješavanje formata uz proširenje datoteke ili pretraživanje struja kako bi se identificirali nepoznati datoteki.

import com.aspose.threed.FileFormat;

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

koordinatno-sustavna konverzija

AxisSystem da se određuje up-axis, front-axi i rukovidnost koordinatnog sustava, a zatim izračunati Matrix4 promjena geometrije između konvencije (na primjer, od Z-up desnog sustava do Y-UP Jedan od lijevih ruku).

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

Brzo početak

Dodajte ovisnost o Mavenu:

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

Izgradite jednostavnu scenu i izvozite je:

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

Podržani formati

FormatiranjeproširenjeČitajpisanje
FBX (ASCII i binarni, 6.x-7.x).fbxDaNe
Sljedeći članakGlTF 1.0 / 2.0.gltfDaDa
GSTB binarno.glbDaDa
Vrijeme Wavefront OBJ.objDaDa
STL (ASCII i binarni).stlDaDa

Svaki format je posvećen LoadOptions i SaveOptions Podizborni (za primjer je, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsTo je izložilo Sastavke specifične za format, kao što su koordinat-sustav flipping i tip sadržaja Odabir je.


Otvoreni izvor i licenciranje

Aspose.3D FOSS za Java je izdan pod MIT licencom. izvorni kod je: Na GitHub-u dostupna je i Sljedeći članakAspose.3D-FOSS-for-Java. Možete koristiti, izmijeniti i redistribuirati knjižnicu u komercijalnom i Nekomercijalni projekti bez ograničenja.


Početak