Aspose.3D FOSS voor .NET ondersteunt zeven 3D-bestandsformaten: OBJ, STL, glTF, GLB, FBX, Collada, en 3MF. Deze post is een praktische, formaat-per-formaat gids die laat zien hoe je elk formaat laadt en opslaat, welke opties beschikbaar zijn, en hoe je tussen hen kunt converteren.

Alle voorbeelden gebruiken de Aspose.ThreeD namespace:

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

NuGet-pakket:

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

OBJ (Wavefront)

OBJ is een breed ondersteund tekstgebaseerd formaat voor mesh-geometry. Aspose.3D FOSS laadt OBJ-bestanden samen met hun bijbehorende .mtl materialenbestanden.

OBJ laden

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

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

Laden met opties

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

Opslaan als OBJ

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

scene.Save("output.obj");

OBJ met opslaanopties

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

STL (Stereolithografie)

STL is het standaardformaat voor 3D-printen. Het slaat ruwe getrianguleerde geometrie op zonder materialen of hiërarchie. Aspose.3D FOSS ondersteunt zowel binaire als ASCII STL.

STL laden

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

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

Opslaan als STL

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

scene.Save("output.stl");

STL met opslaanopties

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 en GLB

glTF is de moderne standaard voor web- en realtime 3D. Het ondersteunt PBR-materialen, volledige scènehiërarchieën en efficiënte binaire verpakking (GLB).

glTF laden

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

Laden met opties

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

Opslaan als glTF

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

scene.Save("output.gltf");

Opslaan als GLB (binaire glTF)

Om een zelfstandige binaire .glb bestand te maken, sla op met een .glb extensie. De bibliotheek leidt het binaire glTF-formaat af van de extensie:

scene.Save("output.glb");

FBX (Filmbox)

FBX wordt veel gebruikt in game-ontwikkeling en digitale contentcreatie. Aspose.3D FOSS voor .NET ondersteunt FBX import en export in zowel ASCII- als binaire modi.

FBX laden

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

Laden met opties

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

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

Opslaan als 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.

3MF laden

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

Laden met opties

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

Opslaan als 3MF

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

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

Opslaan met opties

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

Stream-gebaseerde I/O

Alle formaten ondersteunen het laden van en opslaan naar streams, wat handig is voor webservices en cloudverwerking:

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

Formaatdetectie

De bibliotheek kan formaten automatisch detecteren op basis van bestandsextensies of streaminhoud:

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

Batchconversie

Om meerdere bestanden te converteren, doorloop je een map en converteer je elk bestand:

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

Formaatvergelijking

FunctieOBJSTLglTFFBX3MF
MaterialenMTLNeePBRJaJa
ScènehiërarchieNeeNeeJaJaJa
AnimatiestubsNeeNeeJaJaNee
Binaire modusNeeJaGLBJaZIP
3D printing readyBeperktJaNeeNeeJa
WebleveringNeeNeeJaNeeNee

Samenvatting

Aspose.3D FOSS voor .NET geeft je een enkele, consistente API voor het werken met alle belangrijke 3D-bestandsformaten. Het patroon is altijd hetzelfde: maak een Scene, roep Open() om te laden, configureer optioneel format‑specifieke opties, en roep Save() om te exporteren. Formaatdetectie, stream‑gebaseerde I/O, en batchconversie maken het eenvoudig om te integreren in elke .NET-pipeline.

Voor meer informatie: