Aspose.3D FOSS dla .NET obsługuje siedem formatów 3D: OBJ, STL, glTF, GLB, FBX, Collada, oraz 3MF. Ten wpis jest praktycznym przewodnikiem format po formacie, pokazującym jak wczytać i zapisać każdy z nich, jakie opcje są dostępne oraz jak konwertować pomiędzy nimi.
Wszystkie przykłady używają Aspose.ThreeD przestrzeni nazw:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
Pakiet NuGet:
dotnet add package Aspose.3D --version 26.1.0
OBJ (Wavefront)
OBJ jest powszechnie wspieranym formatem tekstowym dla geometrii siatek. Aspose.3D FOSS wczytuje pliki OBJ wraz z ich towarzyszącymi .mtl plikami materiałów.
Wczytywanie OBJ
var scene = new Scene();
scene.Open("model.obj");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Ładowanie z opcjami
var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);
Zapisywanie jako OBJ
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.obj");
OBJ z opcjami zapisu
var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);
STL (Stereolitografia)
STL jest standardowym formatem do druku 3D. Przechowuje surową trójkątną geometrię bez materiałów ani hierarchii. Aspose.3D FOSS obsługuje zarówno binarny, jak i ASCII STL.
Wczytywanie STL
var scene = new Scene();
scene.Open("part.stl");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Zapisywanie jako STL
var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);
scene.Save("output.stl");
STL z opcjami zapisu
var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);
STL – pełny cykl
// 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 i GLB
glTF jest nowoczesnym standardem dla sieci i grafiki 3D w czasie rzeczywistym. Obsługuje materiały PBR, pełne hierarchie scen oraz efektywne pakowanie binarne (GLB).
Ładowanie glTF
var scene = new Scene();
scene.Open("model.gltf");
Ładowanie z opcjami
var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);
Zapisywanie jako glTF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.gltf");
Zapisywanie jako GLB (binarny glTF)
Aby wygenerować samodzielny plik binarny .glb plik, zapisz używając a .glb rozszerzenie. Biblioteka wywnioskuje format binarny glTF z rozszerzenia:
scene.Save("output.glb");
FBX (Filmbox)
FBX jest szeroko używany w tworzeniu gier i cyfrowej produkcji treści. Aspose.3D FOSS dla .NET obsługuje FBX import i eksport w trybach ASCII i binarnym.
Ładowanie FBX
var scene = new Scene();
scene.Open("model.fbx");
Ładowanie z opcjami
var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);
Zapisywanie jako 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);
Zapisywanie jako FBX binarny
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.
Ładowanie 3MF
var scene = new Scene();
scene.Open("model.3mf");
Ładowanie z opcjami
var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);
Zapisywanie jako 3MF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.3mf");
Zapisywanie z opcjami
var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);
Wejście/wyjście oparte na strumieniach
Wszystkie formaty obsługują ładowanie ze strumieni i zapisywanie do strumieni, co jest przydatne w usługach internetowych i przetwarzaniu w chmurze:
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);
Wykrywanie formatu
Biblioteka może automatycznie wykrywać formaty na podstawie rozszerzeń plików lub zawartości strumienia:
// 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
Konwersja wsadowa
Aby konwertować wiele plików, iteruj po katalogu i konwertuj każdy z nich:
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);
}
Porównanie formatów
| Funkcja | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Materiały | MTL | Nie | PBR | Tak | Tak |
| Hierarchia sceny | Nie | Nie | Tak | Tak | Tak |
| Szkielety animacji | Nie | Nie | Tak | Tak | Nie |
| Tryb binarny | Nie | Tak | GLB | Tak | ZIP |
| 3D printing ready | Ograniczone | Tak | Nie | Nie | Tak |
| Dostawa sieciowa | Nie | Nie | Tak | Nie | Nie |
Podsumowanie
Aspose.3D FOSS for .NET daje ci jedną, spójną API do pracy ze wszystkimi głównymi formatami plików 3D. Wzorzec jest zawsze taki sam: utwórz Scene, wywołaj Open() do załadowania, opcjonalnie skonfiguruj opcje specyficzne dla formatu i wywołaj Save() do eksportu. Wykrywanie formatu, strumieniowy I/O oraz konwersja wsadowa sprawiają, że łatwo jest zintegrować to z dowolnym potokiem .NET.
Po więcej informacji:
- Referencja API – szczegółowa dokumentacja klas i metod.
- Baza wiedzy – praktyczne artykuły instruktażowe.
- GitHub – kod źródłowy i system zgłaszania problemów.