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
| Funcionalidad | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Materiales | MTL | No | PBR | Sí | Sí |
| Jerarquía de escena | No | No | Sí | Sí | Sí |
| Bocetos de animación | No | No | Sí | Sí | No |
| Modo binario | No | Sí | GLB | Sí | ZIP |
| 3D printing ready | Limitado | Sí | No | No | Sí |
| Entrega web | No | No | Sí | No | No |
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:
- Referencia de API – documentación detallada de clases y métodos.
- Base de Conocimientos – artículos prácticos paso a paso.
- GitHub – código fuente y rastreador de incidencias.