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

FunkcjaOBJSTLglTFFBX3MF
MateriałyMTLNiePBRTakTak
Hierarchia scenyNieNieTakTakTak
Szkielety animacjiNieNieTakTakNie
Tryb binarnyNieTakGLBTakZIP
3D printing readyOgraniczoneTakNieNieTak
Dostawa sieciowaNieNieTakNieNie

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.