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
| Functie | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Materialen | MTL | Nee | PBR | Ja | Ja |
| Scènehiërarchie | Nee | Nee | Ja | Ja | Ja |
| Animatiestubs | Nee | Nee | Ja | Ja | Nee |
| Binaire modus | Nee | Ja | GLB | Ja | ZIP |
| 3D printing ready | Beperkt | Ja | Nee | Nee | Ja |
| Weblevering | Nee | Nee | Ja | Nee | Nee |
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:
- API-referentie – gedetailleerde klasse- en methodedocumentatie.
- Kennisbank – praktische how-to artikelen.
- GitHub – broncode en issue tracker.