Cum să încărcați modele 3D în Java
aspose-3d-foss pentru Java oferă un API simplu pentru deschiderea fișierelor 3D. După încărcarea unui fișier într-un Scene obiect, poți parcurge ierarhia nodurilor și citi datele de geometrie.
Ghid pas cu pas
Pasul 1: Instalează pachetul
Adăugați dependența Maven:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>Pasul 2: Importă clasa Scene
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;Pasul 3: Încarcă un fișier
Scene scene = new Scene();
scene.open("model.obj");Sau folosește fabrica statică:
Scene scene = Scene.fromFile("model.obj");Formate suportate: OBJ, STL, glTF 2.0 / GLB, FBX (doar binar — FBX ASCII nu este suportat și aruncă ImportException).
Pasul 4: Parcurge nodurile Scene
void walk(Node node, int depth) {
String indent = " ".repeat(depth * 2);
System.out.println(indent + "Node: " + node.getName());
for (Node child : node.getChildNodes()) {
walk(child, depth + 1);
}
}
walk(scene.getRootNode(), 0);Pasul 5: Accesează datele Mesh
for (Node node : scene.getRootNode().getChildNodes()) {
if (node.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) node.getEntity();
System.out.println("Mesh '" + node.getName() + "': " +
mesh.getControlPoints().size() + " vertices, " +
mesh.getPolygonCount() + " polygons");
}
}Probleme comune și soluții
Excepție la încărcare
Verifică că fișierul nu este corupt și că formatul este suportat (OBJ, STL, glTF, FBX).
NullPointerException la accesarea entității
Nu fiecare nod conține geometrie. Verifică întotdeauna node.getEntity() instanceof Mesh înainte de a face cast.
Neconcordanță a sistemului de coordonate
Folosește ObjLoadOptions.setFlipCoordinateSystem(true) sau aplică o rotație după încărcare.
Întrebări frecvente (FAQ)
Ce formate pot încărca?
OBJ, STL (binare și ASCII), glTF 2.0 / GLB și FBX. Pentru FBX, doar FBX binar este suportat. Fișierele FBX ASCII vor arunca ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
Pot încărca dintr-un InputStream?
Da. scene.open() acceptă un InputStream.
Este biblioteca sigură pentru fire de execuție?
Fiecare Scene instanța este independentă. Încărcarea fișierelor separate în instanțe separate din fire de execuție separate este sigură.