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
| Funkcija | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Materijali | MTL | Ne | PBR | Da | Da |
| Hijerarhija scene | Ne | Ne | Da | Da | Da |
| Stubovi animacije | Ne | Ne | Da | Da | Ne |
| Binarni režim | Ne | Da | GLB | Da | ZIP |
| 3D printing ready | Ograničeno | Da | Ne | Ne | Da |
| Web isporuka | Ne | Ne | Da | Ne | Ne |
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:
- API Referenca – detaljna dokumentacija klasa i metoda.
- Baza znanja – praktični vodiči.
- GitHub – izvorni kod i pratioc problema.