Aspose.3D FOSS for .NET suporta sete formatos de arquivo 3D: OBJ, STL, glTF, GLB, FBX, Collada e 3MF. Esta postagem é um guia prático, formato a formato, mostrando como carregar e salvar cada um, quais opções estão disponíveis e como convertê-los entre si.

Todos os exemplos usam o namespace Aspose.ThreeD:

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

Pacote NuGet:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

OBJ é um formato baseado em texto amplamente suportado para geometria de malha. Aspose.3D FOSS carrega arquivos OBJ juntamente com seus arquivos de material .mtl associados.

Carregando OBJ

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

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

Carregando com Opções

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

Salvando como OBJ

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

scene.Save("output.obj");

OBJ com Opções de Salvamento

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

STL (Estereolitografia)

STL é o formato padrão para impressão 3D. Ele armazena geometria triangulada bruta sem materiais ou hierarquia. Aspose.3D FOSS suporta STL binário e ASCII.

Carregando STL

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

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

Salvando como STL

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

scene.Save("output.stl");

STL com Opções de Salvamento

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

STL Ida e Volta

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

glTF é o padrão moderno para web e 3D em tempo real. Ele suporta materiais PBR, hierarquias completas de cena e empacotamento binário eficiente (GLB).

Carregando glTF

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

Carregando com Opções

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

Salvando como glTF

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

scene.Save("output.gltf");

Salvando como GLB (Binary glTF)

Para produzir um arquivo binário .glb autônomo, salve com a extensão .glb. A biblioteca infere o formato binário glTF a partir da extensão:

scene.Save("output.glb");

FBX (Filmbox)

FBX é amplamente usado no desenvolvimento de jogos e na criação de conteúdo digital. Aspose.3D FOSS para .NET suporta FBX importação e exportação. A exportação produz FBX binário; o código de exportação FBX ASCII existe no código‑fonte, mas não é chamado pelo caminho de exportação nesta versão. A classe FbxSaveOptions fornece configurações padrão.

Carregando FBX

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

Carregando com Opções

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

Salvando como FBX

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

// FBX export always produces binary FBX output
scene.Save("output.fbx");

Salvando com Opções

// Use FbxSaveOptions for format-specific defaults
var opts = new FbxSaveOptions();
scene.Save("output.fbx", opts);

3MF (Formato de Fabricação 3D)

3MF é um formato moderno de impressão 3D desenvolvido pelo Consórcio 3MF. Ele suporta metadados ricos, materiais e cenas com múltiplos objetos em um único pacote baseado em ZIP.

Carregando 3MF

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

Carregando com Opções

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

Salvando como 3MF

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

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

Salvando com Opções

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

E/S baseada em fluxo

Todos os formatos suportam o carregamento a partir de streams e a gravação neles, o que é útil para serviços web e processamento em nuvem:

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

Detecção de Formato

A biblioteca pode detectar automaticamente formatos a partir de extensões de arquivo ou do conteúdo do stream:

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

Conversão em lote

Para converter vários arquivos, itere sobre um diretório e converta cada um:

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

Comparação de Formato

FeatureOBJSTLglTFFBX3MF
MaterialsMTLNãoPBRSimSim
Scene hierarchyNãoNãoSimSimSim
Animation stubsNãoNãoSimSimNão
Binary modeNãoSimGLBSimZIP
3D printing readyLimitadoSimNãoNãoSim
Web deliveryNãoNãoSimNãoNão

Resumo

Aspose.3D FOSS for .NET oferece uma única API consistente para trabalhar com todos os principais formatos de arquivos 3D. O padrão é sempre o mesmo: crie um Scene, chame Open() para carregar, opcionalmente configure opções específicas do formato e chame Save() para exportar. A detecção de formato, I/O baseado em stream e conversão em lote tornam a integração em qualquer pipeline .NET direta.

Para mais informações: