Comment charger des modèles 3D dans Java
aspose-3d-foss pour Java fournit une API simple pour ouvrir des fichiers 3D. Après avoir chargé un fichier dans un Scene objet, vous pouvez parcourir la hiérarchie des nœuds et lire les données de géométrie.
Guide étape par étape
Étape 1 : Installer le package
Ajoutez la dépendance Maven :
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>Étape 2 : Importer la classe Scene
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;Étape 3 : Charger un fichier
Scene scene = new Scene();
scene.open("model.obj");Ou utilisez la fabrique statique :
Scene scene = Scene.fromFile("model.obj");Formats pris en charge : OBJ, STL, glTF 2.0 / GLB, FBX (binaire uniquement — le FBX ASCII n’est pas pris en charge et génère ImportException).
Étape 4 : Parcourir les nœuds de la scène
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);Étape 5 : Accéder aux données du maillage
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");
}
}Problèmes courants et solutions
Exception lors du chargement
Vérifiez que le fichier n’est pas corrompu et que le format est pris en charge (OBJ, STL, glTF, FBX).
NullPointerException lors de l’accès à l’entité
Tous les nœuds ne contiennent pas de géométrie. Vérifiez toujours node.getEntity() instanceof Mesh avant de caster.
Incompatibilité du système de coordonnées
Utilisez ObjLoadOptions.setFlipCoordinateSystem(true) ou appliquez une rotation après le chargement.
Foire aux questions (FAQ)
Quels formats puis‑je charger ?
OBJ, STL (binaire et ASCII), glTF 2.0 / GLB, et FBX. Pour le FBX, uniquement FBX binaire est pris en charge. Les fichiers FBX ASCII généreront ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
Puis‑je charger depuis un InputStream ?
Oui. scene.open() accepte un InputStream.
La bibliothèque est‑elle thread‑safe ?
Chaque Scene l’instance est indépendante. Le chargement de fichiers distincts dans des instances distinctes depuis des threads distincts est sûr.