Comment charger des modèles 3D dans Java

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.

 Français