Bevezetés

A Java 3D tartalmával való munka általában a nehéz súlyok között választani szükséges. játékmotorok és bar-bones matematika könyvtárak. a aspose-3d-foss A csomag a középső föld: egy fókuszált jelenet-graf API, amely kezeli a fájlokat I/O, csomópont hierarchia, mez építése, és koordinálja átalakítások vonzás nélkül egy renderelés a csővezeték vagy az őshonos függőség lánc.

A könyvtár olvas FBX, glTF/GLB, Wavefront OBJ és STL, és írja gltF / GLB , OBD és Stl (FBX export nem fut végre), így praktikus a szerver oldalán 3D feldolgozás, építőeszköz integrációk, valamint az adatok-átváltási csövek fut Java 21 vagy később.

Ez a bejegyzés átmegy a könyvtárban található jelenetkezelési képességek: hogyan építsünk egy jelenetet a szeletből, népszerűsítjük geometria és átalakítások segítségével, és exportáljuk az eredményt a lemezre.


Mi tartalmazza

A grafikus alapok

A The Scene A 3D-s dokumentumok gyökértartalma a gyöker tartály. Node, eszköz metadata, animációs klipek és alszínházak. létrehozhat egy üres jelenet, majd elhelyezze azt, vagy töltse fel a meglévő fájlt 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");

Minden egyes Node Megtarthat egy Entity (Mint a Mesh vagy Cameraa) az A Transform, anyagok listája, és további gyermek csomópontok. a fa szerkezete tükrözze a jelenet-grafikus mintát, amelyet a legtöbb 3D íróeszköz használ.

Mesh építés

A The Mesh Az osztály lehetővé teszi, hogy meghatározza a geometria ellenőrzési pontok és poligon - a vertikális értékek, azaz a addControlPoint,Ezután összekapcsolja őket az arcokba. A 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);

A tűz a triangulate(), optimize(removeVertices),és Boolean A műveletek (union, difference, intersectEzek a módszerek azonban szorosan a jelenlegi kiadás – visszaállítják a klónot a bejárati mezővel, anélkül, hogy végrehajtanák A megnevezett művelet.

Átalakítás és pozíciózás

Minden egyes Node A hordozó a Transform a helyi fordítás, az átalakulás ellenőrzése, Ezek a hierarchián keresztül állnak össze, hogy egy szülő csomópontot mozogjanak. Minden gyermeke mozog.

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

A teljes pozíciós kérésekhez hívja fel node.getGlobalTransform() visszavonulni A kompozit GlobalTransform,vagy node.evaluateGlobalTransform(true) hogy a Matrix4 Ez magában foglalja a geometriai offseteket.

PBR anyagok

A The PbrMaterial A osztály fizikailag alapuló rendering tulajdonságokat biztosít: albedo szín, fémfaktor, durváthaság, kibocsátó szín és átláthatóság. Adjon egy anyagot a csomóponthoz, amikor létrehozza a gyermeket.

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 felderítés

A The FileFormat osztály statisztikai keresési és felderítési eszközöket. egy formátumot fájl kiterjesztésével vagy áramlás vizsgálatával oldja meg, hogy azonosítsa az ismeretlen foldákat.

import com.aspose.threed.FileFormat;

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

Koordinációs rendszer konverzió

AxisSystem A felső-axis, az elülső-axi és a kézzelfogható A koordinációs rendszer, majd a Matrix4 A geometria átalakítása a Egyezmények (például egy Z-up jobboldali rendszerről egy Y-Up rendszerre) A bal kezű).

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

Gyors indulás

Add hozzá a Maven függőség:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.5.0</version>
</dependency>

Készítsen egy egyszerű jelenetet, és exportáljon:

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

Támogatott formátumok

formátumkiterjesztésOlvasd elÍrj
FBX (ASCII és bináris, 6.x-7.x).fbxIgenNem nem
GTS 1.0 / 2.0.gltfIgenIgen
BINARY GLTF.glbIgenIgen
Szélsőséges OBJ.objIgenIgen
STL (ASCII és bináris).stlIgenIgen

Minden formátumban a LoadOptions és SaveOptions A szubsztrájk (a Például a, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsEz a kiállítás formátum-specifikus beállítások, mint például a koordináták rendszer flipping és tartalom típus A kiválasztás.


Nyílt forrás és licenc

Aspose.3D FOSS for Java a MIT licenc alatt kerül kiadásra. elérhető a GitHub-on 3D-FOSS - Java és a. A könyvtárat kereskedelmi és Nem kereskedelmi projektek korlátozás nélkül.


Kezdődik a