Introduktion
Att arbeta med 3D-innehåll i Java kräver vanligtvis att du väljer mellan tungvikt. spelmotorer och bara-bones matematiska bibliotek. aspose-3d-foss Paket erbjuder A mittgränsen: en fokuserad scenen-graf API som hanterar filer I/O, nodhierarkier, Mäs konstruktion, och samordna omvandlingar utan att dra i en rendering ett kärnkraftverk eller en inhemska beroende kedja.
Aspose.3D FOSS för Java är en öppen källkod bibliotek distribuerad under MIT licens. Det ger 80 klasser spänner scenhantering, geometri, material och formatkonvertering. biblioteket läser FBX, glTF/GLB, Wavefront OBJ och STL, och skriver gltf/glb, OBj och stl (FBX export inte implementeras), vilket gör det praktiskt för server-side 3D bearbetning, bygg-tool integrationer och data-konversion rör som körs på Java 21 eller senare.
Denna post går igenom scenenhanteringskapacitet i biblioteket: hur man bygger en scen från skrapa, populera den med geometri och transformationer, och exportera resultatet till disk.
Vad ingår i
Scenografiska baser
Den Scene klass är roten container för varje 3D-dokument. det har en rot Node, tillgångsmetadata, animeringsklip och underscener. Du kan skapa en tom scenen och sedan populera den, eller ladda upp en befintlig 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");
Varje Node kan hålla en Entity (som en av Mesh eller Cameraa) A Transform, en lista över material, och ytterligare barn noder. trästrukturen speglar scenen-grafikonet som används av de flesta 3D-författningsverktyg.
Mesh byggnad
Den Mesh klass låter dig definiera geometri från kontrollpunkter och polygon index. du lägger till vertikaler med addControlPoint,och sedan koppla dem till ansikten 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);
Mesh API ingår i triangulate(), optimize(removeVertices),och Boolean Operationer (union, difference, intersectMen dessa metoder är trånga i den aktuella utgivningen – de returnerar en klon av inmatningsmasken utan att genomföra Den så kallade operationen.
Transformation och positionering
Varje Node bär A Transform som kontrollerar sin lokala översättning, rotation, Dessa samlas genom hierarkin så att en föräldraljud rör sig Han rör alla sina barn.
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);
För absolut positionering frågor, ringa node.getGlobalTransform() att återfå Den kompositiva GlobalTransform,eller node.evaluateGlobalTransform(true) För att få en Matrix4 Det inkluderar geometriska offset.
PBR material
Den PbrMaterial klass ger fysiskt baserade renderingegenskaper: albedo färg, metallfaktor, grymhet, emissiv färg och transparens. Tilldela ett material till en nod när du skapar 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 upptäckt
Den FileFormat klass ger statisk sök- och upptäcktsverktyg. du kan Lös ett format med filändelse eller undersök en ström för att identifiera okända filer.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
Koordinatkonverteringssystem
AxisSystem låt dig definiera den up-axis, front-axi och handlighet av en koordinat system, sedan beräkna en Matrix4 omvandlar geometri mellan konventioner (t.ex. från ett Z-up högra handssystem till en Y-Up En vänster hand).
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);
Snabb start
Lägg till Maven beroende:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Bygg en enkel scen och exportera 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ödda format
| Formatera | Utvidgningen | Läsning | Skrivande |
|---|---|---|---|
| FBX (ASCII och binär, 6.x-7.x) | .fbx | Ja ja | Nej inte |
| GST 1.0 / 2.0 | .gltf | Ja ja | Ja ja |
| GTTF binär | .glb | Ja ja | Ja ja |
| Väderfront OBJ | .obj | Ja ja | Ja ja |
| STL (ASCII och binär) | .stl | Ja ja | Ja ja |
Varje format har fört sig till LoadOptions och SaveOptions underklass (för att Ett exempel, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsDetta visar att Format-specifika inställningar som koordinat-system flöde och innehållstyp och urval.
Öppen källkod och licens
Aspose.3D FOSS för Java släpps under MIT-licensen. källkoden är tillgänglig på GitHub på Aspose.3D-FOSS för Java. Du kan använda, modifiera och omfördela biblioteket i kommersiell och icke-kommersiella projekt utan begränsningar.
Att börja
- Utvecklingsguide - API-flyg och Användning mönster
- Kunskapsbasen Hur man skriver artiklar och FAQs
- API referens - Full klass och Metod dokumentation