Introducció
Treballant amb contingut 3D en Java normalment requereix triar entre pes pesat motors de joc i les biblioteques de matemàtiques de bar-bones. aspose-3d-foss El paquet ofereix una terra mitjana: una API de gràfics d’escena centrada que gestiona els arxius I/O, les jerarquies dels nuclis, construcció de mes i coordina les transformacions sense treure en un rendiment El tub o una cadena de dependència.
Aspose.3D FOSS per a Java és una biblioteca de codi obert distribuïda sota la llicència MIT. Ofereix 80 classes d’espai de gestió de escena, geometria, materials i conversió de format. La biblioteca llegeix FBX, glTF/GLB, Wavefront OBJ, i STL, escriure gltF / GLB , OBj i Stl (exportació FBx no s’implementa), fent-ho pràctic per al processament 3D del servidor, integracions de eines de construcció i canals de converssió de dades que es realitzen en Java 21 o més tard.
Aquest post passa a través de les capacitats de gestió d’escena en la biblioteca: com construir una escena des del rierol, popular-la amb geometria i transformacions, i exportar el resultat al disc.
Què s’inclou
Escena de gràfics bàsics
El Scene La classe és el contenidor de raïm per a cada document 3D. Node, metadades d’actius, clips d’animació i subescenes. pot crear un buit la escena i després el populeu, o carregueu un fitxer existent amb 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");
Cada un Node Es pot mantenir un Entity (com a una Mesh o Cameraa) A Transform, una llista de materials, i més nodes infantils. estructura d’arbre miralls el patró de escena-grafa utilitzat per la majoria d’eines d’autorització 3D.
Mesh construcció
El Mesh La classe li permet definir la geometria des dels punts de control i poligons. - Indicadors: afegir verticals amb addControlPoint,i connectar-los a cara amb 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);
El foc de la Fira inclou triangulate(), optimize(removeVertices),i Boolean Operacions (union, difference, intersectPerò aquests mètodes són estúpids en el la versió actual - es retornen un clon de la mesca d’entrada sense realitzar La operació anomenada.
Transformar i posicionar
Cada un Node portant a Transform que controla la seva traducció local, rotació, Aquests componen a través de la jerarquia per tal que es mou un nucli parent Moure tots els seus fills.
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);
Per a les preguntes de posicionament absolut, crida node.getGlobalTransform() per recuperar-se El composat GlobalTransform,o node.evaluateGlobalTransform(true) Per aconseguir un Matrix4 Això inclou les offset geomètrics.
PBR materials
El PbrMaterial La classe proporciona propietats de rendiment basades en físic: color albedo, factor metàl·lic, cruetat, color emissor i transparència. Assigna un material a un nucli quan crea el nen.
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);
Detecció de format
El FileFormat classe proporciona utilitats d’observació i detecció estàtica. Resoldre un format per extensió de fitxers o provar una fluix per identificar arxius desconeguts.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
Conversió de coordenades
AxisSystem Permet definir l’eix superior, l’eix frontal i la utilitat d’un El sistema de coordinació, després compta un Matrix4 La transformació de la geometria entre els convencions (per exemple, d’un sistema de la dreta Z-up a un Y-Up Una de les mans esquerres).
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);
Inici ràpid
Afegir la dependència de Maven:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
Construeix una escena senzilla i l’exporta:
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);
Formats suportats
| Format | Extensions | Llegir | Escriure |
|---|---|---|---|
| FBX (ASCII i Binari, 6.x-7.x) | .fbx | Sí | No |
| El Càritas 1.0 / 2.0 | .gltf | Sí | Sí |
| GSTB Binari | .glb | Sí | Sí |
| El front de la banda | .obj | Sí | Sí |
| STL (ASCII i binari) | .stl | Sí | Sí |
Cada format està dedicat a LoadOptions i SaveOptions Subclasse (per a Per exemple, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsque exposen Configuracions específiques de format, com ara el coordenat-sistema i el tipus de contingut La selecció.
Open Source i llicència
Aspose.3D FOSS per a Java es publica sota la llicència MIT. El codi font és el Disponible a GitHub Aspose.3D-FOSS per a Java. Podeu utilitzar, modificar i redistribuir la biblioteca en forma comercial i Projectes no comercials sense restriccions.
Començar a fer
- Guia de desenvolupadors - El foc de la marxa i Model d’ús
- Base de coneixement Com fer articles i FAQs
- Referència API - Classe completa i Documentar mètode