Aspose.3D FOSS pro .NET podporuje sedm 3D formátů souborů: OBJ, STL, glTF, GLB, FBX, Collada, a 3MF. Tento příspěvek je praktickým, formát po formátu, průvodcem, který ukazuje, jak načíst a uložit každý z nich, jaké možnosti jsou k dispozici a jak mezi nimi převádět.

Všechny příklady používají Aspose.ThreeD jmenný prostor:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

Balíček NuGet:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

OBJ je široce podporovaný textový formát pro geometrii sítí. Aspose.3D FOSS načítá soubory OBJ spolu s jejich doprovodnými .mtl souborů materiálů.

Načítání OBJ

var scene = new Scene();
scene.Open("model.obj");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

Načítání s možnostmi

var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);

Ukládání jako OBJ

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.obj");

OBJ s možnostmi ukládání

var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);

STL (Stereolitografie)

STL je standardní formát pro 3D tisk. Ukládá surovou triangulovanou geometrii bez materiálů nebo hierarchie. Aspose.3D FOSS podporuje jak binární, tak ASCII STL.

Načítání STL

var scene = new Scene();
scene.Open("part.stl");

Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);

Ukládání jako STL

var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);

scene.Save("output.stl");

STL s možnostmi ukládání

var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);

STL zpětný průchod

// 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 a GLB

glTF je moderní standard pro web a real-time 3D. Podporuje PBR materiály, kompletní hierarchie scén a efektivní binární balení (GLB).

Načítání glTF

var scene = new Scene();
scene.Open("model.gltf");

Načítání s možnostmi

var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);

Ukládání jako glTF

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.gltf");

Ukládání jako GLB (binární glTF)

Pro vytvoření samostatného binárního .glb souboru, uložte s .glb příponou. Knihovna odvozuje binární formát glTF z přípony:

scene.Save("output.glb");

FBX (Filmbox)

FBX je široce používán ve vývoji her a tvorbě digitálního obsahu. Aspose.3D FOSS pro .NET podporuje FBX import a export v režimech ASCII i binárním.

Načítání FBX

var scene = new Scene();
scene.Open("model.fbx");

Načítání s možnostmi

var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);

Ukládání 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);

Ukládání jako 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.

Načítání 3MF

var scene = new Scene();
scene.Open("model.3mf");

Načítání s možnostmi

var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);

Ukládání jako 3MF

var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);

scene.Save("output.3mf");

Ukládání s možnostmi

var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);

Vstup/Výstup založený na streamu

Všechny formáty podporují načítání ze streamů i ukládání do streamů, což je užitečné pro webové služby a cloudové zpracování:

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);

Detekce formátu

Knihovna dokáže automaticky detekovat formáty podle přípon souborů nebo obsahu streamu:

// 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

Dávková konverze

Pro konverzi více souborů projděte adresář a každý soubor převedete:

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);
}

Porovnání formátů

FunkceOBJSTLglTFFBX3MF
MateriályMTLNePBRAnoAno
Hierarchie scénNeNeAnoAnoAno
Základní kostry animaceNeNeAnoAnoNe
Binární režimNeAnoGLBAnoZIP
3D printing readyOmezenýAnoNeNeAno
Webové doručeníNeNeAnoNeNe

Shrnutí

Aspose.3D FOSS pro .NET vám poskytuje jednotné, konzistentní API pro práci se všemi hlavními 3D formáty souborů. Vzor je vždy stejný: vytvořte Scene, zavolejte Open() na načtení, volitelně nakonfigurujte formátově specifické možnosti a zavolejte Save() na export. Detekce formátu, streamové I/O a hromadná konverze usnadňují integraci do jakéhokoli .NET pipeline.

Pro více informací: