Aspose.3D FOSS for .NET podporuje sedem 3D formátov súborov: OBJ, STL, glTF, GLB, FBX, Collada a 3MF. Tento príspevok je praktickým, formát po formáte, sprievodcom, ktorý ukazuje, ako načítať a uložiť každý z nich, aké možnosti sú k dispozícii a ako ich konvertovať medzi sebou.

Všetky príklady používajú Aspose.ThreeD namespace:

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

Balík NuGet:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

OBJ je široko podporovaný textový formát pre geometriu siete. Aspose.3D FOSS načítava OBJ súbory spolu s ich sprievodnými .mtl materiálovými súbormi.

Načítanie OBJ

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

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

Načítanie s možnosťami

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

Ukladanie ako 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žnosťami ukladania

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

STL (Stereolitografia)

STL je štandardný formát pre 3D tlač. Ukladá surovú triangulovanú geometriu bez materiálov alebo hierarchie. Aspose.3D FOSS podporuje binárny aj ASCII STL.

Načítanie STL

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

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

Ukladanie ako STL

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

scene.Save("output.stl");

STL s možnosťami ukladania

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

STL spätný prechod

// 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ý štandard pre web a real-time 3D. Podporuje PBR materiály, úplné hierarchie scény a efektívne binárne balenie (GLB).

Načítanie glTF

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

Načítanie s možnosťami

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

Ukladanie ako glTF

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

scene.Save("output.gltf");

Ukladanie ako GLB (binárny glTF)

Ak chcete vytvoriť samostatný binárny .glb súbor, uložte ho s príponou .glb. Knižnica odvodí binárny formát glTF z prípony:

scene.Save("output.glb");

FBX (Filmbox)

FBX je široko používaný vo vývoji hier a tvorbe digitálneho obsahu. Aspose.3D FOSS pre .NET podporuje FBX import a export. Export vytvára binárny FBX; kód pre export ASCII FBX existuje v zdrojovom kóde, ale nie je volaný exportnou cestou v tejto verzii. Trieda FbxSaveOptions poskytuje predvolené nastavenia.

Načítanie FBX

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

Načítanie s možnosťami

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

Ukladanie ako FBX

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

// FBX export always produces binary FBX output
scene.Save("output.fbx");

Ukladanie s možnosťami

// Use FbxSaveOptions for format-specific defaults
var opts = new FbxSaveOptions();
scene.Save("output.fbx", opts);

3MF (Formát 3D výroby)

3MF je moderný formát pre 3D tlač vyvinutý 3MF Consortium. Podporuje bohaté metadáta, materiály a viacobjektové scény v jednom balíku založenom na ZIP.

Načítanie 3MF

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

Načítanie s možnosťami

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

Ukladanie ako 3MF

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

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

Ukladanie s možnosťami

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

Vstup/výstup založený na prúdoch

Všetky formáty podporujú načítanie z a ukladanie do streamov, čo je užitočné pre webové služby a cloudové spracovanie:

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

Detekcia formátu

Knižnica dokáže automaticky rozpoznať formáty podľa prípon súborov alebo 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á konverzia

Pre konverziu viacerých súborov iterujte cez adresár a konvertujte každý súbor:

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

Porovnanie formátov

VlastnosťOBJSTLglTFFBX3MF
MateriályMTLNiePBRÁnoÁno
Hierarchia scényNieNieÁnoÁnoÁno
Animácie (základné)NieNieÁnoÁnoNie
Binárny režimNieÁnoGLBÁnoZIP
Pripravené na 3D tlačObmedzenéÁnoNieNieÁno
Webové doručenieNieNieÁnoNieNie

Zhrnutie

Aspose.3D FOSS pre .NET vám poskytuje jediné, konzistentné API na prácu so všetkými hlavnými 3D formátmi súborov. Vzor je vždy rovnaký: vytvorte Scene, zavolajte Open() na načítanie, voliteľne nakonfigurujte špecifické možnosti formátu a zavolajte Save() na export. Detekcia formátu, vstup/výstup založený na prúdoch a hromadná konverzia uľahčujú integráciu do akéhokoľvek .NET pipeline.

Pre viac informácií: