Aspose.3D FOSS for .NET støtter syv 3D‑filformater: OBJ, STL, glTF, GLB, FBX, Collada, og 3MF. Dette innlegget er en praktisk, format‑for‑format guide som viser hvordan du laster inn og lagrer hver av dem, hvilke alternativer som er tilgjengelige, og hvordan du konverterer mellom dem.

Alle eksempler bruker Aspose.ThreeD‑navnerommet:

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

NuGet-pakke:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

OBJ er et bredt støttet tekstbasert format for mesh-geometri. Aspose.3D FOSS laster OBJ-filer sammen med deres tilhørende .mtl materialfiler.

Laster OBJ

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

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

Laste inn med alternativer

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

Lagring som OBJ

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

scene.Save("output.obj");

OBJ med lagringsalternativer

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

STL (Stereolitografi)

STL er standardformatet for 3D‑utskrift. Det lagrer rå triangulert geometri uten materialer eller hierarki. Aspose.3D FOSS støtter både binær og ASCII STL.

Laste STL

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

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

Lagring som STL

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

scene.Save("output.stl");

STL med lagringsalternativer

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

STL-rundtur

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

glTF er den moderne standarden for web og sanntids‑3D. Den støtter PBR‑materialer, fullstendige scenehierarkier og effektiv binær pakking (GLB).

Laster glTF

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

Laste inn med alternativer

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

Lagring som glTF

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

scene.Save("output.gltf");

Lagrer som GLB (Binary glTF)

For å lage en selvstendig binær .glb‑fil, lagre med en .glb‑utvidelse. Biblioteket infererer det binære glTF‑formatet fra utvidelsen:

scene.Save("output.glb");

FBX (Filmboks)

FBX er mye brukt i spillutvikling og digital innholdsopprettelse. Aspose.3D FOSS for .NET støtter FBX import og eksport. Eksport produserer binær FBX; ASCII FBX‑eksportkode finnes i kildekoden, men blir ikke kalt av eksportstien i denne versjonen. Klassen FbxSaveOptions gir standardinnstillinger.

Laste FBX

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

Laste inn med alternativer

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

Lagring som 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");

Lagring med alternativer

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

3MF (3D-produksjonsformat)

3MF er et moderne 3D‑utskriftsformat utviklet av 3MF Consortium. Det støtter rik metadata, materialer og scener med flere objekter i en enkelt ZIP-basert pakke.

Laste inn 3MF

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

Laste inn med alternativer

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

Lagring som 3MF

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

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

Lagring med alternativer

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

Strøm-basert I/O

Alle formater støtter lasting fra og lagring til strømmer, noe som er nyttig for webtjenester og skybehandling:

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

Formatgjenkjenning

Biblioteket kan automatisk oppdage formater fra filendelser eller strøminnhold:

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

Batchkonvertering

For å konvertere flere filer, iterer over en katalog og konverter hver enkelt:

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

Format sammenligning

FunksjonOBJSTLglTFFBX3MF
MaterialerMTLNeiPBRJaJa
SceneshierarkiNeiNeiJaJaJa
AnimasjonsstubberNeiNeiJaJaNei
Binær modusNeiJaGLBJaZIP
Klar for 3D-utskriftBegrensetJaNeiNeiJa
Web-leveringNeiNeiJaNeiNei

Sammendrag

Aspose.3D FOSS for .NET gir deg et enkelt, konsistent API for å arbeide med alle større 3D‑filformater. Mønsteret er alltid det samme: opprett en Scene, kall Open() for å laste, eventuelt konfigurer formatspesifikke alternativer, og kall Save() for å eksportere. Formatgjenkjenning, strøm‑basert I/O og batch‑konvertering gjør det enkelt å integrere i enhver .NET‑pipeline.

For mer informasjon: