Aspose.3D FOSS per a .NET admet set formats de fitxer 3D: OBJ, STL, glTF, GLB, FBX, Collada, i 3MF. Aquesta publicació és una guia pràctica, format per format, que mostra com carregar i desar cadascun, quines opcions estan disponibles i com convertir entre ells.

Tots els exemples utilitzen el Aspose.ThreeD espai de noms:

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

Paquet NuGet:

dotnet add package Aspose.3D.Converter --version 1.0.0

OBJ (Wavefront)

OBJ és un format basat en text àmpliament compatible per a la geometria de malles. Aspose.3D FOSS carrega fitxers OBJ juntament amb el seu fitxer complementari .mtl fitxers de material.

Carregant OBJ

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

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

Carregant amb opcions

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

Desant com a OBJ

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

scene.Save("output.obj");

OBJ amb opcions de desament

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

STL (Estereolitografia)

STL és el format estàndard per a la impressió 3D. Emmagatzema geometria triangulada en brut sense materials ni jerarquia. Aspose.3D FOSS admet tant STL binari com ASCII.

Carregant STL

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

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

Desant com a STL

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

scene.Save("output.stl");

STL amb opcions de desament

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

Cicle complet STL

// 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 és l’estàndard modern per al web i el 3D en temps real. Admet materials PBR, jerarquies completes d’escena i empaquetat binari eficient (GLB).

Carregant glTF

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

Carregant amb opcions

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

Desant com a glTF

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

scene.Save("output.gltf");

Desant com a GLB (glTF binari)

Per produir un binari autònom .glb fitxer, deseu amb un .glb extensió. La biblioteca infereix el format binari glTF a partir de l’extensió:

scene.Save("output.glb");

FBX (Filmbox)

FBX s’utilitza àmpliament en el desenvolupament de jocs i la creació de contingut digital. Aspose.3D FOSS per a .NET admet FBX importació i exportació en ambdós modes ASCII i binari.

Carregant FBX

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

Carregant amb opcions

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

Desant com a 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);

Desant com a FBX binari

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.

Carregant 3MF

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

Carregant amb opcions

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

Desant com a 3MF

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

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

Desant amb opcions

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

E/S basada en flux

Tots els formats admeten la càrrega des de fluxos i el desament a fluxos, cosa que és útil per a serveis web i processament al núvol:

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ó de format

La biblioteca pot detectar automàticament formats a partir de les extensions de fitxer o del contingut del flux:

// 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ó per lots

Per convertir diversos fitxers, itera sobre un directori i converteix cada un:

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ó de formats

FuncionalitatOBJSTLglTFFBX3MF
MaterialsMTLNoPBR
Jerarquia d’escenaNoNo
Esquelets d’animacióNoNoNo
Mode binariNoGLBZIP
3D printing readyLimitatNoNo
Entrega webNoNoNoNo

Resum

Aspose.3D FOSS per a .NET us ofereix una API única i coherent per treballar amb tots els principals formats de fitxers 3D. El patró és sempre el mateix: crea una Scene, crida Open() per carregar, opcionalment configurar opcions específiques del format i cridar Save() per exportar. La detecció de formats, l’E/S basada en flux i la conversió per lots fan que sigui senzill integrar-ho en qualsevol pipeline de .NET.

Per a més informació: