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
| Funktion | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Material | MTL | Nej | PBR | Ja | Ja |
| Scenhierarki | Nej | Nej | Ja | Ja | Ja |
| Animationsstubber | Nej | Nej | Ja | Ja | Nej |
| Binärt läge | Nej | Ja | GLB | Ja | ZIP |
| 3D printing ready | Begränsad | Ja | Nej | Nej | Ja |
| Webbleverans | Nej | Nej | Ja | Nej | Nej |
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.