Fonctionnalités et capacités
Fonctionnalités et capacités
Cette page couvre chaque domaine fonctionnel majeur de Aspose.3D 26.1.0 avec des exemples C# fonctionnels.
Chargement et sauvegarde des scènes
Scene.Open() charge un fichier; Scene.Save() l’exporte. Le format est détecté à partir de l’extension du fichier:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Utilisez la fabrique statique Scene.FromFile() comme alternative:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Options spécifiques au format
Passez LoadOptions ou SaveOptions des sous‑classes pour un contrôle fin:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");Classes d’options disponibles :
| Classe | Direction | Propriétés clés |
|---|---|---|
ObjLoadOptions | Importer | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Exporter | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Importer | (paramètres par défaut) |
GltfLoadOptions | Importer | (paramètres par défaut) |
GltfSaveOptions | Exporter | (paramètres par défaut) |
StlLoadOptions | Importer | (paramètres par défaut) |
StlSaveOptions | Exporter | (paramètres par défaut) |
ColladaLoadOptions | Importer | FlipCoordinateSystem |
ColladaSaveOptions | Exporter | Indented, TransformStyle |
PlyLoadOptions | Importer | (paramètres par défaut) |
Construction d’un graphe de scène
Créez des nœuds et attachez des entités pour construire une hiérarchie :
var scene = new Scene();
var root = scene.RootNode;
var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));Accéder aux enfants via node.ChildNodes et l’entité attachée via node.Entity.
Maillage et primitives
Créer un Mesh programmatique avec des points de contrôle et des polygones :
// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;
var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0)); // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);Primitives intégrées (Box, Sphere, Cylinder) peuvent être converties en Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Éléments de sommet
Attachez les normales, les UV et les couleurs de sommet à la géométrie :
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Types d’éléments de sommet disponibles : VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Transformations
Chaque Node porte un Transform avec Translation, Rotation, et Scale:
var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);Lire la position en espace monde via node.GlobalTransform.Matrix ou node.EvaluateGlobalTransform().
Matériaux
Attribuez des matériaux aux nœuds pour les données d’éclairage :
var mat = new PhongMaterial("shiny");
mat.Diffuse = new Vector4(0.8, 0.2, 0.2, 1.0);
mat.Specular = new Vector4(1, 1, 1, 1);
mat.Shininess = 32;
scene.RootNode.CreateChildNode("red_box", new Box(), mat);Types de matériau : LambertMaterial, PhongMaterial, PbrMaterial.
Conseils et bonnes pratiques
- Utiliser
Scene.FromFile()pour un chargement en une ligne quand vous n’avez pas besoin de personnalisationLoadOptions - Convertir les primitives en
MeshavecToMesh()avant d’ajouter des éléments de sommet - Utiliser
GltfSaveOptionsavec un.glbextension pour une sortie binaire compacte - Vérifier
node.Entitypournullavant le transtypage — tous les nœuds ne contiennent pas de géométrie - Utiliser
PolygonModifier.Triangulate()pour convertir les maillages quadrangulaires avant l’exportation vers des formats uniquement triangulaires comme STL
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
ImportException au chargement | Fichier non pris en charge ou corrompu | Vérifiez que le fichier s’ouvre dans un visualiseur 3D ; vérifiez que le format figure dans la liste des formats pris en charge |
| Matériaux manquants après le chargement d’OBJ | .mtl fichier introuvable | Placez le .mtl fichier à côté du .obj ou définir ObjLoadOptions.EnableMaterials = true |
| Mauvaise correspondance d’échelle après l’importation FBX | Différents systèmes d’unités | Utiliser ObjLoadOptions.Scale ou appliquer un Transform après le chargement |
FAQ
Comment détecter le format d’un fichier inconnu ?
Utiliser FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Puis-je charger depuis un flux au lieu d’un chemin de fichier ?
Oui. Scene.Open() accepte un Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);Quels formats prennent en charge à la fois l’importation et l’exportation ?
OBJ, STL, glTF/GLB, FBX, COLLADA et 3MF prennent en charge les deux sens. PLY ne supporte que l’importation (l’exportateur PLY n’est pas implémenté).
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 hiérarchique de scène contenant des entités et des transformations |
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 par indices de sommets |
Box / Sphere / Cylinder | Primitives paramétriques intégrées |
Transform | Translation, rotation et mise à l’échelle locales |
FileFormat | Registre et détecteur des formats pris en charge |
LambertMaterial / PhongMaterial / PbrMaterial | Types de matériaux pour l’ombrage |