Fonctionnalités et capacités

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 .glb extension pour une sortie glTF binaire compacte
  • Vérifiez node.getEntity() != null avant 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èmeCauseCorriger
Exception lors du chargementFichier non pris en charge ou corrompuVérifiez que le fichier s’ouvre dans un visualiseur 3D
Matériaux manquants après le chargement OBJ.mtl fichier introuvablePlacer .mtl à côté de .obj; assurez-vous que les matériaux sont activés
Incohérence d’échelle après l’importationSystèmes d’unités différentsAppliquer 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éthodeDescription
SceneConteneur 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
NodeNœud de hiérarchie de scène
node.createChildNode()Créer et attacher un nœud enfant
MeshMaillage 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
TransformTranslation, rotation et mise à l’échelle locales
FileFormatRegistre et détecteur de formats
 Français