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éOBJSTLglTFFBX3MF
MatériauxMTLNonPBROuiOui
Hiérarchie de la scèneNonNonOuiOuiOui
Ébauches d’animationNonNonOuiOuiNon
Mode binaireNonOuiGLBOuiZIP
3D printing readyLimitéOuiNonNonOui
Livraison WebNonNonOuiNonNon

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 :