Aspose.3D FOSS za .NET podržava sedam 3D formata datoteka: OBJ, STL, glTF, GLB, FBX, Collada, i 3MF. Ovaj post je praktični vodič po formatima koji pokazuje kako učitati i sačuvati svaki od njih, koje su opcije dostupne i kako ih konvertovati međusobno.

Svi primeri koriste Aspose.ThreeD imenski prostor:

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

NuGet paket:

dotnet add package Aspose.3D.Converter --version 1.0.0

OBJ (Wavefront)

OBJ je široko podržan format zasnovan na tekstu za geometriju mreže. Aspose.3D FOSS učitava OBJ datoteke zajedno sa njihovim pratećim .mtl materialni fajlovi.

Učitavanje OBJ fajlova

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

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

Učitavanje sa opcijama

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

Čuvanje kao OBJ

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

scene.Save("output.obj");

OBJ sa opcijama za čuvanje

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

STL: Stereolitografija

STL je standardni format za 3D štampu. Predstavlja sirovu trianguliranu geometriju bez materijala, boja ili hijerarhije scene. STL fajlovi dolaze u dve varijante: ASCII (čitljiv za čoveka) i binarni (kompaktniji).

Učitavanje STL fajlova

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

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

Čuvanje kao STL

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

scene.Save("output.stl");

STL sa opcijama za čuvanje

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

STL povratno učitavanje

// 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 je moderan format dizajniran za efikasno prenošenje i učitavanje 3D sadržaja, posebno na webu i u aplikacijama u realnom vremenu. Podržava PBR materijale, hijerarhije scena i animacije.

Učitavanje glTF fajlova

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

Učitavanje sa opcijama

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

Čuvanje kao glTF

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

scene.Save("output.gltf");

Čuvanje kao GLB (binarni glTF)

Da biste proizveli samostalni binarni .glb fajl, sačuvajte sa .glb ekstenzijom. Biblioteka zaključuje binarni glTF format iz ekstenzije:

scene.Save("output.glb");

FBX (Filmbox)

FBX se široko koristi u razvoju igara i kreiranju digitalnog sadržaja. Aspose.3D FOSS za .NET podržava FBX uvoz i izvoz u oba ASCII i binarna režima.

Učitavanje FBX fajlova

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

Učitavanje sa opcijama

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

Čuvanje kao 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);

Čuvanje kao 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.

Učitavanje 3MF

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

Učitavanje sa opcijama

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

Čuvanje kao 3MF

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

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

Čuvanje sa opcijama

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

U/I zasnovan na tokovima

Svi formati podržavaju učitavanje iz i čuvanje u tokove, što je korisno za veb servise i obradu u oblaku:

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

Detekcija formata

Biblioteka može automatski otkriti formate na osnovu ekstenzija fajlova ili sadržaja toka:

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

Grupna konverzija

Za konvertovanje više fajlova, iterirajte kroz direktorijum i konvertujte svaki pojedinačno:

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

Uporedba formata

FunkcijaOBJSTLglTFFBX3MF
MaterijaliMTLNePBRDaDa
Hijerarhija sceneNeNeDaDaDa
Stubovi animacijeNeNeDaDaNe
Binarni režimNeDaGLBDaZIP
3D printing readyOgraničenoDaNeNeDa
Web isporukaNeNeDaNeNe

Sažetak

Aspose.3D FOSS za .NET vam pruža jedinstveni, dosledni API za rad sa svim glavnim 3D formatima fajlova. Šablon je uvek isti: kreirajte Scene, pozovite Open() za učitavanje, po potrebi konfigurišite opcije specifične za format i pozovite Save() za izvoz. Detekcija formata, I/O zasnovan na strimovima i grupna konverzija čine jednostavnim integrisanje u bilo koji .NET pipeline.

Za više informacija: