Aspose.3D FOSS pour .NET prend en charge sept formats de fichiers 3D : OBJ, STL, glTF, GLB, FBX, Collada, et 3MF. Cet article est un guide pratique, format par format, montrant comment charger et enregistrer chacun d’eux, quelles options sont disponibles, et comment les convertir entre eux.
Tous les exemples utilisent le Aspose.ThreeD espace de noms :
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
Package NuGet :
dotnet add package Aspose.3D --version 26.1.0
OBJ (Wavefront)
OBJ est un format texte largement pris en charge pour la géométrie de maillage. Aspose.3D FOSS charge les fichiers OBJ ainsi que leurs fichiers compagnon .mtl fichiers de matériaux.
Chargement OBJ
var scene = new Scene();
scene.Open("model.obj");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Chargement avec options
var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);
Enregistrement au format OBJ
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.obj");
OBJ avec options d’enregistrement
var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);
STL (Stéréolithographie)
STL est le format standard pour l’impression 3D. Il stocke la géométrie triangulée brute sans matériaux ni hiérarchie. Aspose.3D FOSS prend en charge les STL binaires et ASCII.
Chargement STL
var scene = new Scene();
scene.Open("part.stl");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Enregistrement au format STL
var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);
scene.Save("output.stl");
STL avec options d’enregistrement
var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);
Aller-retour STL
// Load an STL file and re-save it -- geometry is preserved
var scene = new Scene();
scene.Open("original.stl");
scene.Save("copy.stl");
glTF 2.0 et GLB
glTF est la norme moderne pour le web et la 3D en temps réel. Il prend en charge les matériaux PBR, les hiérarchies complètes de scènes et l’empaquetage binaire efficace (GLB).
Chargement de glTF
var scene = new Scene();
scene.Open("model.gltf");
Chargement avec options
var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);
Enregistrement au format glTF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.gltf");
Enregistrement au format GLB (glTF binaire)
Pour produire un binaire autonome .glb fichier, enregistrez-le avec un .glb extension. La bibliothèque déduit le format glTF binaire à partir de l’extension :
scene.Save("output.glb");
FBX (Filmbox)
FBX est largement utilisé dans le développement de jeux et la création de contenu numérique. Aspose.3D FOSS pour .NET prend en charge FBX importation et exportation dans les deux modes ASCII et binaire.
Chargement de FBX
var scene = new Scene();
scene.Open("model.fbx");
Chargement avec options
var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);
Enregistrement au format FBX ASCII
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
var opts = new FbxSaveOptions() { IsAscii = true };
scene.Save("output.fbx", opts);
Enregistrement au format FBX binaire
var opts = new FbxSaveOptions() { IsAscii = false };
scene.Save("output.fbx", opts);
3MF (3D Manufacturing Format)
3MF is a modern 3D printing format developed by the 3MF Consortium. It supports rich metadata, materials, and multi-object scenes in a single ZIP-based package.
Chargement de 3MF
var scene = new Scene();
scene.Open("model.3mf");
Chargement avec options
var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);
Enregistrement au format 3MF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.3mf");
Enregistrement avec options
var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);
Entrées/Sorties basées sur les flux (I/O)
Tous les formats prennent en charge le chargement depuis et l’enregistrement vers des flux, ce qui est utile pour les services web et le traitement en cloud :
using var stream = File.OpenRead("model.obj");
var scene = new Scene();
var opts = new ObjLoadOptions();
scene.Open(stream, opts);
// Save to a memory stream
using var output = new MemoryStream();
var saveOpts = new GltfSaveOptions();
scene.Save(output, saveOpts);
Détection du format
La bibliothèque peut détecter automatiquement les formats à partir des extensions de fichiers ou du contenu du flux :
// Auto-detect from extension
var scene = new Scene();
scene.Open("model.obj"); // Detects OBJ from .obj extension
// Auto-detect from stream content
using var stream = File.OpenRead("model.obj");
scene.Open(stream); // Inspects stream content to determine format
Conversion par lots
Pour convertir plusieurs fichiers, parcourez un répertoire et convertissez chaque fichier :
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var inputDir = "assets/";
var outputDir = "converted/";
foreach (var file in Directory.GetFiles(inputDir, "*.fbx"))
{
var scene = new Scene();
scene.Open(file);
var outputPath = Path.Combine(outputDir,
Path.GetFileNameWithoutExtension(file) + ".glb");
scene.Save(outputPath);
Console.WriteLine("Converted: " + file);
}
Comparaison des formats
| Fonctionnalité | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Matériaux | MTL | Non | PBR | Oui | Oui |
| Hiérarchie de la scène | Non | Non | Oui | Oui | Oui |
| Ébauches d’animation | Non | Non | Oui | Oui | Non |
| Mode binaire | Non | Oui | GLB | Oui | ZIP |
| 3D printing ready | Limité | Oui | Non | Non | Oui |
| Livraison Web | Non | Non | Oui | Non | Non |
Résumé
Aspose.3D FOSS pour .NET vous fournit une API unique et cohérente pour travailler avec tous les principaux formats de fichiers 3D. Le schéma est toujours le même : créez un Scene, appelez Open() pour charger, configurer éventuellement les options spécifiques au format, et appeler Save() pour exporter. La détection de format, les E/S basées sur les flux et la conversion par lots facilitent l’intégration dans n’importe quel pipeline .NET.
Pour plus d’informations :
- Référence de l’API – documentation détaillée des classes et des méthodes.
- Base de connaissances – articles pratiques de type comment‑faire.
- GitHub – code source et système de suivi des tickets.