Aspose.3D FOSS pentru .NET suportă șapte formate de fișiere 3D: OBJ, STL, glTF, GLB, FBX, Collada, și 3MF. Acest articol este un ghid practic, format-cu-format, care arată cum să încarci și să salvezi fiecare, ce opțiuni sunt disponibile și cum să le convertești între ele.

Toate exemplele folosesc Aspose.ThreeD spațiul de nume:

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

Pachet NuGet:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

OBJ este un format bazat pe text, larg suportat, pentru geometria de plasă. Aspose.3D FOSS încarcă fișiere OBJ împreună cu companionul lor .mtl fișiere de material.

Încărcarea OBJ

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

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

Încărcare cu opțiuni

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

Salvare ca OBJ

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

scene.Save("output.obj");

OBJ cu opțiuni de salvare

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

STL (Stereolitografie)

STL este formatul standard pentru imprimarea 3D. Stochează geometrie triunghiulară brută fără materiale sau ierarhie. Aspose.3D FOSS suportă atât STL binar, cât și ASCII.

Încărcarea STL

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

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

Salvare ca STL

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

scene.Save("output.stl");

STL cu opțiuni de salvare

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

STL Round-Trip

// 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 și GLB

glTF este standardul modern pentru web și 3D în timp real. Acceptă materiale PBR, ierarhii complete de scenă și ambalare binară eficientă (GLB).

Încărcare glTF

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

Încărcare cu opțiuni

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

Salvare ca glTF

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

scene.Save("output.gltf");

Salvare ca GLB (glTF binar)

Pentru a produce un binar autocontinut .glb fișier, salvează cu un .glb extensie. Biblioteca deduce formatul binar glTF din extensie:

scene.Save("output.glb");

FBX (Filmbox)

FBX este utilizat pe scară largă în dezvoltarea de jocuri și crearea de conținut digital. Aspose.3D FOSS pentru .NET suportă FBX import și export în ambele moduri ASCII și binar.

Încărcare FBX

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

Încărcare cu opțiuni

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

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

Salvare ca FBX binar

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.

Încărcare 3MF

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

Încărcare cu opțiuni

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

Salvare ca 3MF

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

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

Salvare cu opțiuni

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

I/O bazat pe flux

Toate formatele suportă încărcarea din și salvarea în fluxuri, ceea ce este util pentru servicii web și procesarea în 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);

Detectarea formatului

Biblioteca poate detecta automat formatele din extensiile fișierelor sau din conținutul fluxului:

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

Conversie în lot

Pentru a converti mai multe fișiere, iterați printr-un director și convertiți fiecare fișier:

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

Compararea formatelor

FuncționalitateOBJSTLglTFFBX3MF
MaterialeMTLNuPBRDaDa
Ierarhia sceneiNuNuDaDaDa
Schelete de animațieNuNuDaDaNu
Mod binarNuDaGLBDaZIP
3D printing readyLimitatDaNuNuDa
Livrare webNuNuDaNuNu

Rezumat

Aspose.3D FOSS pentru .NET îți oferă un API unic și coerent pentru lucrul cu toate formatele majore de fișiere 3D. Modelul este întotdeauna același: creează un Scene, apelează Open() pentru a încărca, opțional configurează opțiunile specifice formatului și apelează Save() pentru a exporta. Detectarea formatului, I/O bazat pe flux și conversia în lot fac integrarea în orice lanț de procesare .NET simplă.

Pentru mai multe informații: