Įvadas
3D turinio kūrimas Java paprastai reikalauja pasirinkti tarp sunkios svorio. Žaidimų varikliai ir bare-bones matematikos bibliotekos. aspose-3d-foss Pakuotė siūlo A vidurinė žemė: orientuota scenos grafikos API, kuri tvarko failą I/O, mazgų hierarchijas, Mėlyna konstrukcija, ir koordinuoti transformacijas be traukimo į rendering vamzdis arba gimtoji priklausomybės grandinė.
Aspose.3D FOSS Java yra atvirojo kodo biblioteka, platinama pagal MIT licenciją. ji suteikia 80 klasių sklypo valdymo, geometrijos, medžiagų ir formatų konvertavimo. Biblioteka skaito FBX, glTF/GLB, Wavefront OBJ ir STL, ir rašo gltF / GLB , OBG ir StL (FBX eksporto nėra įgyvendinta), todėl tai praktiška serverio pusės 3D apdorojimui, įrankių integracijoms ir duomenų konvertuojant vamzdžiams, kurie veikia Java 21 ar vėliau.
Šis pranešimas eina per scenos valdymo gebėjimus bibliotekoje: kaip sukurti sceną iš šaknies, populizuoti ją su geometrija ir transformacijos, ir eksportuoti rezultatus į diską.
Kas yra įtraukta
Grafiškas scenarijus
Į The Scene klasė yra kiekvieno 3D dokumento šaknis. ji turi šaknį Node, turto metadata, animacijos klipas ir sub-scenos. galite sukurti tuščią scenoje ir tada jį populuoti, arba įkelti esamą failą su 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");
Kiekvienas Node Galima laikyti vieną Entity (kaip ir A Mesh arba Cameraa) A Transform, medžiagų sąrašas, ir dar vaikų mazgai. medžio struktūra veidrodis, kurį naudoja dauguma 3D autorių.
Mėlyna statyba
Į The Mesh klasė leidžia apibrėžti geometriją nuo kontrolės taškų ir poligonų Indikacijos. pridėkite vertikalus su addControlPoint,Tada sujungkite juos į veidus. su 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);
Mėlyna ugnis apima triangulate(), optimize(removeVertices),ir Boolean Veiklos (union, difference, intersectTačiau šie metodai yra įtempti dabartinis išleidimas – jie grąžina įvesties lizdo kloną be atlikimo Tai vadinama operacija.
Transformacijos ir pozicionavimas
Kiekvienas Node A vežimas Transform kontroliuoja savo vietinį vertimą, rotaciją, Šie sudaro per hierarchiją, kad judėtų tėvų mazgas Jis perkelia visus savo vaikus.
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);
Dėl absoliučios pozicionavimo užklausos, skambinkite node.getGlobalTransform() Norėdami atgauti Kompozicijos GlobalTransform,arba node.evaluateGlobalTransform(true) Norėdami gauti A Matrix4 Tai apima geometrinius offsetus.
PBR medžiagos
Į The PbrMaterial Klasė suteikia fiziniu požiūriu grindžiamas atrankos savybes: albedo spalva, metalo faktorius, žiaurumas, išmetamas spalvas ir skaidrumas. Įdėkite medžiagą į mazgą, kai kūdikis sukuriamas.
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);
Detekcijos forma
Į The FileFormat klasė teikia statinį paiešką ir aptikimo įrankius. galite išspręsti formatą failų plėtiniu arba peržiūrėti srautą, kad būtų galima nustatyti nežinomus failus.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
Koordinatų sistemos konvertavimas
AxisSystem leidžia jums apibrėžti viršutinę ašių, priekinę ašį ir rankingumą koordinavimo sistema, tada skaičiuojama A Matrix4 Geometrijos transformacija tarp Konvencijos (pavyzdžiui, nuo Z-up dešiniojo ranka sistemos iki Y-Up Vienas iš kairės rankų).
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);
Greitas pradžia
Įtraukti Maven priklausomybę:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Sukurkite paprastą sceną ir eksportuokite ją:
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);
Palaikomi formatių
| Formatas | Išplėstinė | Skaityti → | Rašyti |
|---|---|---|---|
| FBX (ASCII ir binarinis, 6.x-7.x) | .fbx | Taip | Ne |
| GF 1.0 / 2.0 | .gltf | Taip | Taip |
| GTTF binarinė | .glb | Taip | Taip |
| Vėlyvoji OBJ | .obj | Taip | Taip |
| STL (ASCII ir binarinė) | .stl | Taip | Taip |
Kiekvienas formatas yra skirtas LoadOptions ir SaveOptions Kūrybiniai (for Pavyzdžiui , FbxLoadOptions, GltfSaveOptions, StlSaveOptionsTai parodė formatui skirtos nustatymai, pavyzdžiui, koordinatų-sistemų plyšimas ir turinio tipas ir selekcijos.
Atviras šaltinis ir licencijavimas
Aspose.3D FOSS for Java išleistas MIT licencijos. šaltinio kodas yra: Galima rasti GitHub svetainėje Aspose.3D-FOSS - už Java. Galite naudoti, modifikuoti ir perparduoti biblioteką komerciniais ir Ne komerciniai projektai be apribojimų.
Pradėti nuo
- Parengėjų vadovas - ugnies pėsčiųjų ir Naudojimo modeliai
- Žinių bazė Kaip rašyti straipsnius ir FAQ
- Apšvietimas - Visą klasę ir Metodinė dokumentacija