Fonctionnalités et capacités
Fonctionnalités et capacités
Cette page couvre chaque domaine de fonctionnalité majeur de aspose-3d-foss 26.1.0 avec des exemples Java fonctionnels.
Chargement et sauvegarde des scènes
scene.open() charge un fichier; scene.save() l’exporte:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Alternative de fabrique statique :
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Options spécifiques au format
Pass LoadOptions ou SaveOptions sous‑classes pour un contrôle fin:
import com.aspose.threed.*;
Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);Remarque: FBX n’est pris en charge que pour l’importation ; l’export FBX n’est pas implémenté dans la version FOSS. Seulement FBX binaire les fichiers sont pris en charge pour l’importation — ASCII FBX échoue ImportException.
Construction d’un graphe de scène
Créez des nœuds et attachez des entités :
Scene scene = new Scene();
Node root = scene.getRootNode();
Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);
Node meshNode = root.createChildNode("triangle", mesh);Opérations sur les maillages
Créer un Mesh de façon programmatique avec des points de contrôle et des polygones :
Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);Transformations
Chaque Node porte un Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Lire l’espace mondial via node.getGlobalTransform().getMatrix().
Matériaux
Attribuer des matériaux aux nœuds :
PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);
scene.getRootNode().createChildNode("red_mesh", mesh, mat);Types de matériau : Material (de base), PbrMaterial (PBR metallic-roughness).
Conseils et bonnes pratiques
- Utiliser
Scene.fromFile()pour des chargements en une ligne lorsque les options personnalisées ne sont pas nécessaires - Construisez des maillages programmatiquement avec
createPolygon()pour une géométrie personnalisée - Utilisez
.glbextension pour une sortie glTF binaire compacte - Vérifiez
node.getEntity() != nullavant le coulage - L’exportation STL pas trianguler automatiquement les faces polygonales. Binary STL export n’écrit que les 3 premiers sommets de chaque face polygonale — les faces quad ou n-gon sont silencieusement tronquées. ASCII STL export écrit tous les indices de sommets, ce qui produit des blocs de facettes malformés pour les faces non triangulaires. Passez toujours des maillages pré-triangulés (toutes les faces en triangles) à STL export pour éviter la perte de données ou une sortie invalide.
Problèmes courants
| Problème | Cause | Corriger |
|---|---|---|
| Exception lors du chargement | Fichier non pris en charge ou corrompu | Vérifiez que le fichier s’ouvre dans un visualiseur 3D |
| Matériaux manquants après le chargement OBJ | .mtl fichier introuvable | Placer .mtl à côté de .obj; assurez-vous que les matériaux sont activés |
| Incohérence d’échelle après l’importation | Systèmes d’unités différents | Appliquer un Transform mise à l’échelle après le chargement |
FAQ
Comment détecter le format d’un fichier ?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Puis-je charger depuis un flux ?
Oui. scene.open() accepte un InputStream.
Quels formats prennent en charge à la fois l’importation et l’exportation ?
OBJ, STL, et glTF/GLB prennent en charge les deux sens. FBX est uniquement en importation ; l’exportation n’est pas implémentée dans la version FOSS.
Résumé de la référence API
| Classe / Méthode | Description |
|---|---|
Scene | Conteneur de scène 3D de niveau supérieur |
scene.open() | Charger un fichier 3D par chemin ou flux |
scene.save() | Exporter la scène vers un fichier ou un flux |
Scene.fromFile() | Fabrique statique pour charger et renvoyer un Scene |
Node | Nœud de hiérarchie de scène |
node.createChildNode() | Créer et attacher un nœud enfant |
Mesh | Maillage polygonal avec points de contrôle et listes de faces |
mesh.createPolygon() | Définir une face polygonale |
Mesh.toMesh() | Convertir ou cloner la géométrie du maillage |
Transform | Translation, rotation et mise à l’échelle locales |
FileFormat | Registre et détecteur de formats |