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
| Feature | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Materials | MTL | Não | PBR | Sim | Sim |
| Scene hierarchy | Não | Não | Sim | Sim | Sim |
| Animation stubs | Não | Não | Sim | Sim | Não |
| Binary mode | Não | Sim | GLB | Sim | ZIP |
| 3D printing ready | Limitado | Sim | Não | Não | Sim |
| Web delivery | Não | Não | Sim | Não | Nã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:
- Referência da API – documentação detalhada de classes e métodos.
- Base de Conhecimento – artigos práticos de como‑fazer.
- GitHub – código‑fonte e rastreador de problemas.