Aspose.3D FOSS para .NET admite siete formatos de archivo 3D: OBJ, STL, glTF, GLB, FBX, Collada, y 3MF. Este artículo es una guía práctica, formato por formato, que muestra cómo cargar y guardar cada uno, qué opciones están disponibles y cómo convertir entre ellos.

Todos los ejemplos usan el Aspose.ThreeD espacio de nombres:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

Paquete NuGet:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

OBJ es un formato basado en texto, ampliamente compatible, para la geometría de mallas. Aspose.3D FOSS carga archivos OBJ junto con sus archivos complementarios .mtl de material.

Cargando OBJ

var scene = new Scene();
scene.Open("model.obj");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

Cargando con opciones

var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);

Guardando como OBJ

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.obj");

OBJ con Opciones de Guardado

var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);

STL (Estereolitografía)

STL es el formato estándar para la impresión 3D. Almacena geometría triangulada cruda sin materiales ni jerarquía. Aspose.3D FOSS admite tanto STL binario como ASCII.

Cargando STL

var scene = new Scene();
scene.Open("part.stl");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

Guardando como STL

var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);

scene.Save("output.stl");

STL con Opciones de Guardado

var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);

STL ida y vuelta

// 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 y GLB

glTF es el estándar moderno para web y 3D en tiempo real. Soporta materiales PBR, jerarquías completas de escena y empaquetado binario eficiente (GLB).

Cargando glTF

var scene = new Scene();
scene.Open("model.gltf");

Cargando con opciones

var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);

Guardando como glTF

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.gltf");

Guardando como GLB (glTF binario)

Para generar un binario autónomo .glb archivo, guárdelo con un .glb extensión. La biblioteca infiere el formato binario glTF a partir de la extensión:

scene.Save("output.glb");

FBX (Filmbox)

FBX se usa ampliamente en el desarrollo de juegos y la creación de contenido digital. Aspose.3D FOSS para .NET soporta FBX importar y exportar en ambos modos ASCII y binario.

Cargando FBX

var scene = new Scene();
scene.Open("model.fbx");

Cargando con opciones

var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);

Guardando como 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);

Guardando como FBX binario

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.

Cargando 3MF

var scene = new Scene();
scene.Open("model.3mf");

Cargando con opciones

var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);

Guardando como 3MF

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.3mf");

Guardando con opciones

var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);

E/S basada en flujos

Todos los formatos admiten cargar desde y guardar en flujos, lo que es útil para servicios web y procesamiento en la nube:

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);

Detección de formato

La biblioteca puede detectar automáticamente los formatos a partir de extensiones de archivo o del contenido del flujo:

// 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

Conversión por lotes

Para convertir varios archivos, recorra un directorio y convierta cada uno:

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);
}

Comparación de formatos

FuncionalidadOBJSTLglTFFBX3MF
MaterialesMTLNoPBR
Jerarquía de escenaNoNo
Bocetos de animaciónNoNoNo
Modo binarioNoGLBZIP
3D printing readyLimitadoNoNo
Entrega webNoNoNoNo

Resumen

Aspose.3D FOSS para .NET te brinda una API única y coherente para trabajar con todos los principales formatos de archivo 3D. El patrón es siempre el mismo: crear un Scene, llama a Open() para cargar, opcionalmente configurar opciones específicas del formato y llamar a Save() para exportar. La detección de formatos, I/O basado en flujos y la conversión por lotes hacen que sea sencillo integrarlo en cualquier pipeline de .NET.

Para más información: