Aspose.3D FOSS for .NET hét 3D fájlformátumot támogat: OBJ, STL, glTF, GLB, FBX, Collada, és 3MF. Ez a bejegyzés egy gyakorlati, formátumról-formátumra útmutató, amely bemutatja, hogyan töltsük be és mentsük el mindegyiket, milyen beállítások állnak rendelkezésre, és hogyan konvertálhatók egymás között.

Minden példa a következőt használja: Aspose.ThreeD névtér:

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

NuGet csomag:

dotnet add package Aspose.3D --version 26.1.0

OBJ (Wavefront)

Az OBJ egy széles körben támogatott szöveges formátum a hálógeometriához. Aspose.3D FOSS betölti az OBJ fájlokat a hozzájuk tartozó .mtl anyagfájlokat.

OBJ betöltése

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

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

Betöltés beállításokkal

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

Mentés OBJ-ként

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

scene.Save("output.obj");

OBJ mentési beállításokkal

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

STL (Stereolithography)

Az STL a 3D nyomtatás szabványos formátuma. Nyers háromszögelt geometriát tárol anyagok vagy hierarchia nélkül. Aspose.3D FOSS támogatja a bináris és az ASCII STL-t is.

STL betöltése

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

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

Mentés STL-ként

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

scene.Save("output.stl");

STL mentési beállításokkal

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

STL körutazás

// 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 és GLB

A glTF a modern szabvány a webes és valós idejű 3D-hez. Támogatja a PBR anyagokat, a teljes jelenet hierarchiákat, és a hatékony bináris csomagolást (GLB).

glTF betöltése

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

Betöltés beállításokkal

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

Mentés glTF-ként

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

scene.Save("output.gltf");

Mentés GLB-ként (Bináris glTF)

Önálló bináris .glb fájl, mentsünk egy .glb kiterjesztéssel. A könyvtár a bináris glTF formátumot a kiterjesztésből következteti:

scene.Save("output.glb");

FBX (Filmbox)

Az FBX széles körben használt a játékfejlesztésben és a digitális tartalomkészítésben. Aspose.3D FOSS for .NET támogatja az FBX importálást és exportálást mind ASCII, mind bináris módban.

FBX betöltése

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

Betöltés beállításokkal

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

Mentés FBX ASCII-ként

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

Mentés FBX binárisként

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.

3MF betöltése

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

Betöltés beállításokkal

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

Mentés 3MF formátumba

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

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

Mentés beállításokkal

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

Folyam-alapú I/O

Minden formátum támogatja a betöltést és a mentést folyamatokból, ami hasznos webszolgáltatások és felhőfeldolgozás eseté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);

Formátumfelismerés

A könyvtár képes automatikusan felismerni a formátumokat a fájlkiterjesztések vagy a folyamat tartalma alapján:

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

Kötegelt konverzió

Több fájl konvertálásához iteráljon egy könyvtáron, és konvertálja az egyes fájlokat:

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

Formátum-összehasonlítás

FunkcióOBJSTLglTFFBX3MF
AnyagokMTLNemPBRIgenIgen
Jelenet hierarchiaNemNemIgenIgenIgen
Animációs stubokNemNemIgenIgenNem
Bináris módNemIgenGLBIgenZIP
3D printing readyKorlátozottIgenNemNemIgen
Webes kézbesítésNemNemIgenNemNem

Összefoglalás

Aspose.3D FOSS a .NET számára egyetlen, konzisztens API-t biztosít, amely minden főbb 3D fájlformátummal való munkához használható. A minta mindig ugyanaz: hozz létre egy Scene, hívja Open() a betöltéshez, opcionálisan konfigurálja a formátum-specifikus beállításokat, és hívja Save() az exportáláshoz. A formátumfelismerés, a stream-alapú I/O és a kötegelt konverzió egyszerűvé teszi az integrálást bármely .NET csővezetékbe.

További információkért: