Aspose.3D FOSS for .NET understøtter syv 3D-filformater: OBJ, STL, glTF, GLB, FBX, Collada, og 3MF. Dette indlæg er en praktisk, format-for-format guide, der viser, hvordan man indlæser og gemmer hver enkelt, hvilke muligheder der er tilgængelige, og hvordan man konverterer mellem dem.
Alle eksempler bruger Aspose.ThreeD navnerum:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
NuGet‑pakke:
dotnet add package Aspose.3D.Converter --version 1.0.0
OBJ (Wavefront)
OBJ er et bredt understøttet tekstbaseret format til mesh-geometri. Aspose.3D FOSS indlæser OBJ-filer sammen med deres tilhørende .mtl materialefiler.
Indlæsning af OBJ
var scene = new Scene();
scene.Open("model.obj");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Indlæsning med indstillinger
var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);
Gem 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 gemmeindstillinger
var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);
STL (Stereolithografi)
STL er standardformatet til 3D‑print. Det gemmer rå trianguleret geometri uden materialer eller hierarki. Aspose.3D FOSS understøtter både binær og ASCII STL.
Indlæsning af STL
var scene = new Scene();
scene.Open("part.stl");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Gem som STL
var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);
scene.Save("output.stl");
STL med gemmeindstillinger
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 standard for web og realtids‑3D. Den understøtter PBR-materialer, fulde scenehierarkier og effektiv binær pakning (GLB).
Indlæser glTF
var scene = new Scene();
scene.Open("model.gltf");
Indlæsning med indstillinger
var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);
Gem som glTF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.gltf");
Gem som GLB (Binær glTF)
For at producere en selvstændig binær .glb fil, gem med en .glb filendelse. Biblioteket udleder det binære glTF-format ud fra filendelsen:
scene.Save("output.glb");
FBX (Filmbox)
FBX er bredt anvendt i spiludvikling og digital indholdsoprettelse. Aspose.3D FOSS for .NET understøtter FBX import og eksport i både ASCII- og binærtilstande.
Indlæser FBX
var scene = new Scene();
scene.Open("model.fbx");
Indlæsning med indstillinger
var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);
Gem 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);
Gem 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.
Indlæser 3MF
var scene = new Scene();
scene.Open("model.3mf");
Indlæsning med indstillinger
var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);
Gem som 3MF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.3mf");
Gem med indstillinger
var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);
Strømbaseret I/O
Alle formater understøtter indlæsning fra og gemning til strømme, hvilket er nyttigt for webtjenester og cloud-behandling:
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);
Formatgenkendelse
Biblioteket kan automatisk genkende formater ud fra filendelser eller strømindhold:
// 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
Massekonvertering
For at konvertere flere filer, iterer over en mappe 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
| Funktion | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Materialer | MTL | Nej | PBR | Ja | Ja |
| Scenhierarki | Nej | Nej | Ja | Ja | Ja |
| Animationsstubs | Nej | Nej | Ja | Ja | Nej |
| Binær tilstand | Nej | Ja | GLB | Ja | ZIP |
| 3D printing ready | Begrænset | Ja | Nej | Nej | Ja |
| Weblevering | Nej | Nej | Ja | Nej | Nej |
Opsummering
Aspose.3D FOSS for .NET giver dig et enkelt, konsistent API til at arbejde med alle større 3D-filformater. Mønstret er altid det samme: opret en Scene, kald Open() for at indlæse, eventuelt konfigurere format‑specifikke indstillinger, og kald Save() for at eksportere. Formatgenkendelse, stream‑baseret I/O og batch‑konvertering gør det enkelt at integrere i enhver .NET-pipeline.
For mere information:
- API‑reference – detaljeret klasse‑ og metode‑dokumentation.
- Vidensbase – praktiske how‑to‑artikler.
- GitHub – kildekode og issue tracker.