Hur man laddar 3D-modeller i Java
aspose-3d-foss för Java tillhandahåller ett enkelt API för att öppna 3D-filer. Efter att ha laddat en fil i en Scene objekt kan du gå igenom nodhierarkin och läsa geometridata.
Steg-för-steg-guide
Steg 1: Installera paketet
Lägg till Maven‑beroendet:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>Steg 2: Importera Scene-klassen
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;Steg 3: Ladda en fil
Scene scene = new Scene();
scene.open("model.obj");Eller använd den statiska fabriken:
Scene scene = Scene.fromFile("model.obj");Stödda format: OBJ, STL, glTF 2.0 / GLB, FBX (endast binär — ASCII FBX stöds inte och kastar ImportException).
Steg 4: Traversera scen-noder
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);Steg 5: Åtkomst till mesh-data
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");
}
}Vanliga problem och lösningar
Undantag vid inläsning
Verifiera att filen inte är korrupt och att formatet stöds (OBJ, STL, glTF, FBX).
NullPointerException vid åtkomst av entitet
Inte varje nod innehåller geometri. Kontrollera alltid node.getEntity() instanceof Mesh innan du kastar.
Koordinatsystemfel
Använd ObjLoadOptions.setFlipCoordinateSystem(true) eller applicera en rotation efter inläsning.
Vanliga frågor (FAQ)
Vilka format kan jag läsa in?
OBJ, STL (binär och ASCII), glTF 2.0 / GLB och FBX. För FBX, endast binär FBX stöds. ASCII FBX-filer kommer att kasta ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
Kan jag läsa in från en InputStream?
Ja. scene.open() accepterar en InputStream.
Är biblioteket trådsäkert?
Varje Scene instans är oberoende. Att ladda separata filer i separata instanser från separata trådar är säkert.