Aspose.3D FOSS för .NET stöder sju 3D‑filformat: OBJ, STL, glTF, GLB, FBX, Collada, och 3MF. Detta inlägg är en praktisk, format-för-format guide som visar hur man laddar och sparar var och en, vilka alternativ som finns tillgängliga och hur man konverterar mellan dem.

Alla exempel använder Aspose.ThreeD namnrymd:

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

NuGet-paket:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

OBJ är ett allmänt stödformat baserat på text för mesh‑geometri. Aspose.3D FOSS läser OBJ‑filer tillsammans med deras tillhörande .mtl materialfiler.

Laddar OBJ

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

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

Laddar med alternativ

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

Spara 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 sparalternativ

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

STL (Stereolithografi)

STL är standardformatet för 3D‑utskrift. Det lagrar rå triangulerad geometri utan material eller hierarki. Aspose.3D FOSS stöder både binär och ASCII STL.

Laddar STL

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

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

Spara som STL

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

scene.Save("output.stl");

STL med sparalternativ

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

STL‑rundresa

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

glTF är den moderna standarden för webb och realtids‑3D. Den stöder PBR‑material, fullständiga scenhierarkier och effektiv binär packning (GLB).

Laddar glTF

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

Laddar med alternativ

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

Sparar som glTF

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

scene.Save("output.gltf");

Sparar som GLB (binär glTF)

För att skapa en fristående binär .glb fil, spara med en .glb filändelse. Biblioteket härleder det binära glTF-formatet från filändelsen:

scene.Save("output.glb");

FBX (Filmbox)

FBX är allmänt använt inom spelutveckling och digitalt innehållsskapande. Aspose.3D FOSS för .NET stöder FBX import och export i både ASCII‑ och binärt läge.

Laddar FBX

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

Laddar med alternativ

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

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

Sparar som FBX Binary

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.

Laddar 3MF

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

Laddar med alternativ

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

Spara som 3MF

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

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

Spara med alternativ

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

Strömbaserad I/O

Alla format stödjer inläsning från och sparande till strömmar, vilket är användbart för webbtjänster och molnbehandling:

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

Formatdetektering

Biblioteket kan automatiskt upptäcka format från filändelser eller strömmens innehåll:

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

För att konvertera flera filer, iterera över en katalog och konvertera varje fil:

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

Formatjämförelse

FunktionOBJSTLglTFFBX3MF
MaterialMTLNejPBRJaJa
ScenhierarkiNejNejJaJaJa
AnimationsstubberNejNejJaJaNej
Binärt lägeNejJaGLBJaZIP
3D printing readyBegränsadJaNejNejJa
WebbleveransNejNejJaNejNej

Sammanfattning

Aspose.3D FOSS för .NET ger dig ett enda, konsekvent API för att arbeta med alla större 3D-filformat. Mönstret är alltid detsamma: skapa en Scene, anropa Open() för att läsa in, valfritt konfigurera format‑specifika alternativ, och anropa Save() för att exportera. Formatdetektering, ström‑baserad I/O och batchkonvertering gör det enkelt att integrera i vilken .NET-pipeline som helst.

För mer information:

  • API‑referens – detaljerad klass‑ och metoddokumentation.
  • Kunskapsbas – praktiska hur‑gör‑du‑det‑artiklar.
  • GitHub – källkod och ärendehanterare.